On Sat, Feb 06, 2016 at 05:16:33PM +0300, Alexander Galanin wrote:
> Настроил через interfaces PPTP-интерфейс, на поднятие которого добавляю
> дополнительные маршруты:
> 
> iface ppp0 inet ppp
>     provider work
>     up route add -net 192.168.12.0 netmask 255.255.255.0 $IFACE
>     up route add -net 192.168.115.0 netmask 255.255.255.0 $IFACE
> 
> Подключаюсь через ifup ppp0. Секунд 10 добавленные маршруты живут,
> после чего пропадают. Если добавить их заново, то на какое-то время они
> остаются, после чего могут снова внезапно пропасть.
> 
> Кто может сбрасывать маршруты, и как это отследить?

 Маршруты могут сбрасываться при обрыве связи, если pppd запускается
 с флагом persist (что логично для использования interfaces), потом
 теряет линк и реконнектится. При этом в ряде случаев интерфейс удаляется
 и создаётся заново. Отследить очень просто: включить дебаг pppd
 и почитать его.

 Вообще, так делать не следует. Все маршруты нужно поднимать скриптами
 в /etc/ppp/ip-up.d/, потому что они привязаны к интерфейсу, а не к
 процессу pppd.

 Кроме того, метод "ppp" плох тем, что может дать конфликт юнитов.
 Если уж написано "iface ppp0", я бы предложил добавить "unit 0",
 чтобы не было расхождения между тем, что ожидает ifupdown, и тем,
 что в реальности создаст pppd (а он берёт первый свободный юнит,
 если юнит не задан явно). Использование скриптов из /etc/ppp/ip-up.d/,
 которые проверяют ipparam или какую-нибудь переменную, заданную через
 set, позволяет избежать потенциального конфликта.

 Наконец, вместо pptp лучше использоваь openvpn, он секьюрнее и умеет
 передавать маршруты от сервера клиенту, без всех этих заморочек. :)
-- 
 Eugene Berdnikov

Ответить