Задача: создать автоматическое l2tp соединение хостинга(debian — клиент) с серверной(mikrotik — сервер).
Решение:
Mikrotik configuration:
L2TP server:
/interface l2tp-server server set enabled=yes ipsec-secret=...any.ipsec.secret... use-ipsec=yes service=l2tp
L2TP secret:
/ppp secret
add name=...l2tp.user... password=...l2tp.pass... + local & remote address
IPsec Profile (in debian configuration IKE)
ip ipsec profile print
Flags: * - default
0 * name="default" hash-algorithm=sha1 enc-algorithm=aes-128,3des dh-group=modp2048,modp1024 lifetime=1d proposal-check=obey nat-traversal=yes dpd-interval=2m dpd-maximum-failures=5
IPsec Proposal (in debian configuration ESP)
ip ipsec proposal print
Flags: X - disabled, * - default
0 * name="default" auth-algorithms=sha1 enc-algorithms=3des lifetime=30m pfs-group=modp1024
Debian install & configuration:
apt install xl2tpd strongswan libstrongswan-extra-plugins
/etc/ipsec.conf
Редактируем файл /etc/ipsec.conf, отступы в начале строк параметров, обязательны.
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev1
authby=secret
conn myvpn
keyexchange=ikev1
left=%defaultroute
auto=start dpdaction=hold closeaction=holdauthby=secret
type=transport
leftprotoport=17/1701
rightprotoport=17/1701
right=...ipsec.server.ip...
ike=aes-sha1-modp1024!
esp=3des-sha1-modp1024!
/etc/ipsec.secrets
Создадим 2 файла с правами 600, пустая строка в конце файла обязательна:
: PSK "...any.ipsec.secret..."
/etc/xl2tpd/xl2tpd.conf
[myl2tp]
lns = ...ipsec.server.ip...
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes
/etc/ppp/options.l2tpd.client
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-chap
noccp
noauth
mtu 1280
mru 1280
noipdefault
#defaultroute
usepeerdns
connect-delay 5000
name ...l2tp.user...
password ...l2tp.pass...
Start:
service strongswan-starter restart
service xl2tpd restart
ipsec up myvpn
...connection 'myvpn' established successfully
echo "c myl2tp" > /var/run/xl2tpd/l2tp-control
ip address
ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast state UNKNOWN group default qlen 3
link/ppp
inet 172.16.0.250 peer 172.16.0.100/32 scope global ppp0
valid_lft forever preferred_lft forever
ip route add A.B.C.D dev ppp0
Скрипт автоматизации:
Возможные ошибки:
- «Failed to start LSB: layer 2 tunelling protocol daemon.» Решение, запуск с монитором: xl2tpd -D
(синтаксическая ошибка была) - debian: «received NO_PROPOSAL_CHOSEN error notify», mikrotik: «failed to pre-process ph2 packet»
Решение: На микротике поправить IP-IPsec
Решение: На микротике поправить IP-IPsecПример: Сервер: /ip ipsec peer print address=YY.YYY.YY.YY/32 local-address=ХХ.ХХХ.ХХ.ХХ auth-method=pre-shared-key secret=»ПАРОЛЬ» generate-policy=port-strict policy-template-group=default exchange-mode=main send-initial-contact=yes nat-traversal=no proposal-check=obey hash-algorithm=sha1 enc-algorithm=aes-128 dh-group=modp2048,modp1024 lifetime=1d dpd-interval=disable-dpd Клиентский роутер: MikroTik] > ip ipsec peer print Flags: X — disabled, D — dynamic, R — responder 0 name=»DC» address=ХХ.ХХХ.ХХ.ХХ/32 local-address=YY.YYY.YY.YY profile=default exchange-mode=main send-initial-contact=yes /ip ipsec policy add dst-address=ХХ.ХХХ.ХХ.ХХ/32 ipsec-protocols=ah peer=DC proposal=PROPOSAL-IPSEC-MAIN \ protocol=gre sa-dst-address=ХХ.ХХХ.ХХ.ХХ sa-src-address=YY.YYY.YY.YY src-address=\ YY.YYY.YY.YY/32 tunnel=yes Т.е. на клиенте в протоколах я поставил ah вместо esp, а на сервере отключил dpd и позволил формировать policy автоматически. В результате, туннель поднялся, а на центральном роутере появилась диинамическая policy от клиента.
[свернуть]
Источник: https://gist.github.com/danielv99/ae6dbd6d3f5b8fe4241519f5a0733ff3
https://forummikrotik.ru/viewtopic.php?t=11235
https://wiki.slackware.su/wiki:articles:l2tp
L2TP VPN client on Linux Debian
ipsec.conf(5) – Linux man page