Я столкнулся с возможной проблемой при настройке VPN. У меня есть две разные точки входа в клиентскую сеть, поэтому я установил две службы и, поскольку одно из VPN-соединений немного лучше для нас, установил для него метрику 100, а другую - 101, как показано ниже.
/etc/ppp/ip-up.local
metric=100
if [[ $PPP_IFACE == 'ppp2' ]]; then
metric=101;
# ppp2 have lower priority
fi;
route add -net 10.20.0.0 netmask 255.255.0.0 dev $PPP_IFACE metric $metric
Имена интерфейсов задаются в /etc/ppp/*.options
с участием unit 2
и unit 3
:
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-chap
noccp
noauth
#noaccomp
mtu 1280
mru 1280
noipdefault
#defaultroute
nodefaultroute
#usepeerdns
unit 2
connect-delay 5000
name myname
password mypassword
Так как я знал названия интерфейсов, я поленился и просто добавил правила исправления в iptables
и думал, что покончил с этим (вместо добавления / удаления их в скрипте).
Но потом я увидел ppp0
интерфейс...
Некоторые исследования дали мне это.
sudo grep -iRn "pppd" /var/log/
дайте мне это
/var/log/syslog:5697:Jul 29 10:55:58 debian-router pppd[5153]: LCP terminated by peer
/var/log/syslog:5698:Jul 29 10:55:58 debian-router pppd[5153]: Connect time 643.1 minutes.
/var/log/syslog:5699:Jul 29 10:55:58 debian-router pppd[5153]: Sent 0 bytes, received 0 bytes.
/var/log/syslog:5702:Jul 29 10:55:58 debian-router pppd[5153]: Overriding mtu 1500 to 1280
/var/log/syslog:5703:Jul 29 10:55:58 debian-router pppd[5153]: Overriding mru 1500 to mtu value 1280
/var/log/syslog:5707:Jul 29 10:55:58 debian-router xl2tpd[3016]: Terminating pppd: sending TERM signal to pid 5153
/var/log/syslog:5708:Jul 29 10:55:58 debian-router pppd[5153]: Terminating on signal 15
/var/log/syslog:5713:Jul 29 10:56:01 debian-router xl2tpd[3016]: start_pppd: I'm running:
/var/log/syslog:5714:Jul 29 10:56:01 debian-router xl2tpd[3016]: "/usr/sbin/pppd"
/var/log/syslog:5724:Jul 29 10:56:01 debian-router pppd[5613]: Plugin pppol2tp.so loaded.
/var/log/syslog:5725:Jul 29 10:56:01 debian-router pppd[5613]: pppd 2.4.7 started by root, uid 0
/var/log/syslog:5726:Jul 29 10:56:01 debian-router pppd[5613]: Couldn't allocate PPP unit 2 as it is already in use
/var/log/syslog:5727:Jul 29 10:56:01 debian-router pppd[5613]: Using interface ppp0
/var/log/syslog:5728:Jul 29 10:56:01 debian-router pppd[5613]: Connect: ppp0 <-->
/var/log/syslog:5729:Jul 29 10:56:01 debian-router pppd[5613]: Overriding mtu 1500 to 1280
/var/log/syslog:5730:Jul 29 10:56:01 debian-router pppd[5613]: Overriding mru 1500 to mtu value 1280
/var/log/syslog:5732:Jul 29 10:56:01 debian-router pppd[5613]: Overriding mtu 1500 to 1280
/var/log/syslog:5733:Jul 29 10:56:01 debian-router pppd[5613]: PAP authentication succeeded
/var/log/syslog:5734:Jul 29 10:56:01 debian-router pppd[5153]: Connection terminated.
/var/log/syslog:5736:Jul 29 10:56:01 debian-router pppd[5153]: Modem hangup
/var/log/syslog:5737:Jul 29 10:56:01 debian-router pppd[5153]: Exit.
Итак, что происходит, должно быть ... По какой-то (возможно, не относящейся к делу) причине соединение разрывается, после чего xl2tpd
отправляет TERM
к pppd[5153]
а затем начинается новый pppd[5613]
для нового подключения. Но pppd[5153]
нужно время, чтобы выйти, и поэтому pppd[5613]
не может использовать назначенное имя интерфейса ppp2
.
/etc/xl2tpd/xl2tpd.conf
вот так.
[lac vpn1]
lns = 10.20.30.40
;ppp debug = yes
pppoptfile = /etc/ppp/options.vpn1.l2tpd
length bit = yes
redial = yes
redial timeout = 2
; max redials = 15
[lac vpn2]
lns = 10.20.30.41
;ppp debug = yes
pppoptfile = /etc/ppp/options.vpn2.l2tpd
length bit = yes
redial = yes
redial timeout = 2
; max redials = 15
Теперь, я думаю, я мог бы установить redial timeout
в xl2tpd.conf
выше, но это было бы не очень чистое решение проблемы. Итак, вопрос в том, можно ли обеспечить сохранение имени устройства при повторных подключениях? (Если нет, я мог бы просто использовать $PPP_REMOTE
- но не совсем, так как это не lns = 10.20.30.41
! -- в моем ip-up.local
вместо того $PPP_IFACE
и добавить / удалить iptables
правила там тоже, но, может быть, есть способ получше).
Обновить я добавил ipparam vpn1
и ipparam vpn2
к /etc/ppp/*.options
файлы и использовать $PPP_IPPARAM
различать два; Думаю, это наиболее стабильное решение.
Дополнительная информация: