Closed badigit closed 1 year ago
Здравствуйте, Можно такого избежать, но решит ли это проблему последующей очистки кеша, ради которой и был выбран подобный подход в работе Кваса, пока с уверенность сказать не могу.
В одной из следующих версии постараюсь добавить возможность предотвращения переподключения любых L2TP соединений.
И еще нюанс - подскажите какой механизм применяется для перезагрузки соединений? Я обратил внимание, что если инициатор: квас, то как раз есть проблема что L2TP не может восстановиться n время.
Однако, если я делаю это через веб интерфейс кинетика (нажимаю "перезагрузить"] то реконнект быстрый, нет никаких "затупов". Это наводит на мысль что сам кинетик использует другой механизм перезапуска (graceful), это корректно работает и на железяках провайдера, повторный реконнект происходит быстро.
Возможно ли применение такого реконнекта в квас? Могу какую-нибудь еще полезную информацию предоставить?
Вот лог кинетика при нажатии "перезагрузить"
Май 31 13:05:41 pppd_L2TP0 Modem hangup Май 31 13:05:41 ndm Network::Interface::Ppp: "L2TP0": connection service standby. Май 31 13:05:41 pppd_L2TP0 Connect time 5.0 minutes. Май 31 13:05:41 pppd_L2TP0 Sent 31115149 bytes, received 18175996 bytes. Май 31 13:05:41 ndm Network::Interface::Base: "L2TP0": interface is down. Май 31 13:05:41 pppd_L2TP0 Connection terminated. Май 31 13:05:41 pppd_L2TP0 l2tp: shutting down control connection Май 31 13:05:41 pppd_L2TP0 l2tp: sending cdn Май 31 13:05:41 pppd_L2TP0 l2tp: sending stopccn Май 31 13:05:41 pppd_L2TP0 l2tp: recv [CTRL ZLB <Ns 9> <Nr 3> <RNs 2> <RNr 8>] Май 31 13:05:41 ndm Network::Interface::Base: "L2TP0": interface is up. Май 31 13:05:41 pppd_L2TP0 l2tp: recv [CTRL ZLB <Ns 9> <Nr 3> <RNs 2> <RNr 9>] Май 31 13:05:41 ndm Network::Interface::PppTunnel: "L2TP0": interface state is changed, reconnecting. Май 31 13:05:41 ndm Network::Interface::L2tp: "L2TP0": interface is down. Май 31 13:05:41 ndm Network::Interface::L2tp: "L2TP0": interface is down. Май 31 13:05:41 ndm Network::Interface::Ip: "L2TP0": IP address cleared. Май 31 13:05:41 pppd_L2TP0 Exit. Май 31 13:05:41 ndm Network::Interface::PppTunnel: "L2TP0": interface state is changed, reconnecting. Май 31 13:05:41 ndm Network::InterfaceFlusher: flushed L2TP0 conntrack and route cache. Май 31 13:05:41 ndm Network::InternetChecker: Internet access lost (status: 0x0000). Май 31 13:05:41 upnp shutting down MiniUPnPd Май 31 13:05:41 ndm Core::Session: client disconnected. Май 31 13:05:41 ndm Network::InterfaceFlusher: flushed GigabitEthernet1 conntrack and route cache.
Перезапуск ISP соединения осуществляется стандартными API от кеннетик. За это отвечает функция reset_ISP_connection.
Задержка связана прежде всего с тем, что между закрытием и открытием подключения стоит пауза в 3 сек.. Вы можете поэкспериментировать с тайм-аутом, но на сколько я помню, такой тайм-аут был выбран неслучайно.
Речь не про таймаут в 3 секунды, а про "яму" около 1 минуты, когда кинетик не может восстановить L2TP и весь дом без интернета..
Отличия поведение kvas от Web кинетика в том что кинетик перезагружает только L2TP интерфейс, а квас работает с ISP (в моём случае - GigabitEthernet1). В таком вариант L2TP не завершается корректно и остается в подвешенном состоянии, и кинетик не может переподключиться долгое время.
Я проверил - если выполнять
/interface/L2TP0 > {"down":"true"}
и потом {"up":"true"}
то реконнект происходит мгновенно и без проблем
Было бы замечательно учесть эту логику в скрипте. В случае, когда применяется выход в интернет по схеме ISP+L2TP - перезагружать именно второе соединение, либо оба, но в правильном порядке.
Подробнее - как скрипт может это понять: при запросе /show/interface, основной интерфейс GigabitEthernet1 выглядит так:
"GigabitEthernet1": {
"id": "GigabitEthernet1",
"index": 1,
"interface-name": "ISP",
"type": "GigabitEthernet",
"description": "Билайн",
"traits": ["Mac", "Ethernet", "Ip", "Ip6", "Supplicant", "EthernetIp", "MtkSfpEthernet"],
"link": "up",
"connected": "yes",
"state": "up",
"mtu": 1500,
"tx-queue-length": 2000,
"address": "10.27.20.167",
"mask": "255.255.254.0",
"uptime": 760,
"global": false,
"security-level": "public",
"usedby": ["L2TP0"],
"mac": "50:ff:20:21:e8:bd",
"auth-type": "none",
"port": {
"id": "GigabitEthernet1/0",
"index": 0,
"interface-name": "0",
"label": "0",
"type": "Port",
"traits": ["EthernetPort", "MtkSfpEthernetPort"],
"link": "up",
"speed": "100",
"duplex": "full",
"auto-negotiation": "on",
"flow-control": "off",
"eee": "off",
"cable-diagnostics": false,
"transceiver": "internal",
"sfp-combo": true
}
},
"L2TP0": {
"id": "L2TP0",
"index": 0,
"interface-name": "L2TP0",
"type": "L2TP",
"description": "Билайн",
"traits": ["Ip", "Ip6", "Supplicant", "Peer", "Ppp", "PppTunnel", "Secure", "L2tp"],
"link": "up",
"connected": "yes",
"state": "up",
"role": ["inet"],
"mtu": 1400,
"tx-queue-length": 1000,
"address": "10.198.213.126",
"mask": "255.255.255.255",
"global": true,
"defaultgw": true,
"priority": 57386,
"security-level": "public",
"auth-type": "none",
"remote": "77.74.65.241",
"uptime": 130,
"fail": "no",
"via": "GigabitEthernet1",
"last-change": "130.208164",
"ipsec-enabled": false,
"ipsec-ikev2-allowed": false,
"ipsec-ikev2-enabled": false
},
т.е. по списку интерфейсов можно определить, что используется ISP + L2TP0 и учесть это при переподключениях в скрипте.
Могли бы это добавить?
Все, теперь понял Вас. Речь идет о подключении к VPN по протоколу L2TP, а не подключение к ISP по протоколу L2TP.
В данном случае процедура стандартна для всех видов подключений и что конкретно вызывает задержку в Вашем случае - необходимо досконально разбираться с кодом.
Могу это сделать, но нужен прямой доступ к Вашему устройству. Если готовы предоставить, то смогу помочь в эти выходные.
Для обсуждения деталей пожалуйста напишите в личку на форуме, либо личное сообщение на почту kvas собачка zeleza.ru.
Вроде пофиксили, спасибо! Можно закрывать
Закрываю.
Описание проблемы. Приветствую. Провайдер Билайн. Подключение "DHCP + L2TP", в интернет выход через L2TP. При каждом выполнении kvas add\del - перезагружается соединение с провайдером. *Из за особенностей оборудования кинетик сразу не может восстановить L2TP и еще проходит 1-2 минуты. Поэтому хотелось бы избежать перезапуска.
Мои шаги, приведшие к ошибке/проблеме. kvas add domain.com
Ожидания о поведении программы.
Снимки экрана или сам текст с консоли. Лог кинетика: Май 29 18:42:08 КВАС Запущен файл /opt/apps/kvas/bin/main/ipset Май 29 18:42:13 ndm Network::Interface::Base: "GigabitEthernet1": interface is down. Май 29 18:42:13 ndm Network::Interface::Ppp: "L2TP0": connection service standby. Май 29 18:42:13 pppd_L2TP0 Modem hangup Май 29 18:42:13 ndm Network::Interface::PppTunnel: "L2TP0": via interface is down. Май 29 18:42:13 pppd_L2TP0 Connect time 984.3 minutes.
Информация о роутере (пожалуйста, заполните следующую информацию):