Назад | Перейти на главную страницу

L2TP через IPSec strongswan / xl2tpd изменение имени интерфейса pppd

Я столкнулся с возможной проблемой при настройке 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 различать два; Думаю, это наиболее стабильное решение.

Дополнительная информация: