Будет описано, как поднять l2tp сервер, как к нему и "квартирной сетке" подключиться из windows.
1. Для использования l2tp сервера на роутере следует разрешить к нему обращаться из внешней сети по udp/1701. На многих роутерах это делается с помощью дополнительных скриптов, на кинетиках с ndms v2 - так
В крайнем случае можно использовать скрипт `/opt/etc/init.d/S20xl2tpd` (об этом дальше) исправив в нем очепятку - в нем долна быть строка
`iptables -I INPUT -p udp --dport 1701 -j ACCEPT` (нужно исправить tcp на udp).
2. Установим xl2tpd и отредактируем файлы
Код: Выделить всё
opkg install xl2tpd
Файл /opt/etc/xl2tpd/xl2tpd.conf
Код: Выделить всё
[global]
port = 1701
auth file = /opt/etc/xl2tpd/xl2tp-secrets
access control = no
force userspace = yes
[lns Serv]
exclusive = no
ip range = 192.168.11.2 - 192.168.11.195
lac = 0.0.0.0 - 255.255.255.254
hidden bit = no
local ip = 192.168.11.1
length bit = yes
require chap = yes
refuse pap = yes
refuse authentication = no
require authentication = no
name = Serv
ppp debug = no
pppoptfile = /opt/etc/ppp/options.xl2tpd
flow bit = yes
Что тут можно менять - диапазон выделяемых клиентам ip (ip range), ip сервера (со стороны клиента) (local ip), режим отладки ppp (ppp debug).
Настройки pppd редактируем в файле /opt/etc/ppp/options.xl2tpd
Код: Выделить всё
require-mschap-v2
lcp-echo-interval 3
lcp-echo-failure 8
nodeflate
noproxyarp
mtu 1410
mru 1410
+chap
nobsdcomp
novj
novjccomp
ip-up-script /opt/etc/ppp/ip-up.sh
ip-down-script /opt/etc/ppp/ip-down.sh
Пароли и пользователи настраиваются в файле /opt/etc/ppp/chap-secrets (не путайте с /opt/etc/xl2tpd/xl2tp-secrets - он не используется).
Теперь приступим к скриптам /opt/etc/ppp/ip-up.sh и /opt/etc/ppp/ip-down.sh - эти скрипты вызываются при подключении и отключении клиента.
Для keentic'ов с ndms v2 они такие
/opt/etc/ppp/ip-up.sh:
Код: Выделить всё
#!/opt/bin/sh
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin
logger "*** L2TP client connected [$*]; adding iptables rules"
iptables -A INPUT -i $1 -j ACCEPT
iptables -A FORWARD -i $1 -j ACCEPT
iptables -A FORWARD -o $1 -j ACCEPT
iptables -t nat -A POSTROUTING -o $1 -j MASQUERADE
/opt/etc/ppp/ip-down.sh:
Код: Выделить всё
#!/opt/bin/sh
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin
logger "*** L2TP client disconnected [$*]; deleteting iptables rules"
iptables -D INPUT -i $1 -j ACCEPT
iptables -D FORWARD -i $1 -j ACCEPT
iptables -D FORWARD -o $1 -j ACCEPT
iptables -t nat -D POSTROUTING -o $1 -j MASQUERADE
На других маршрутизаторах могут незначительно отличаться.
Скрипт запуска `/opt/etc/init.d/S20xl2tpd` приведем к виду
Код: Выделить всё
~ # cat /opt/etc/init.d/K20xl2tpd
#!/bin/sh
ENABLED=yes
PROCS=xl2tpd
ARGS="-p /opt/var/run/xl2tpd.pid -c /opt/etc/xl2tpd/xl2tpd.conf -C /opt/var/run/l2tp-control"
PREARGS=""
DESC=$PROCS
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
#iptables -I INPUT -p udp --dport 1701 -j ACCEPT
. /opt/etc/init.d/rc.func
И запустим сервер командой `/opt/etc/init.d/S20xl2tpd start`. В журнале роутера должно появится (примерно) следующее
Код: Выделить всё
[C] Feb 17 13:40:13 xl2tpd[1213]: setsockopt recvref[30]: Protocol not available
[I] Feb 17 13:40:13 xl2tpd[1213]: Not looking for kernel support.
[I] Feb 17 13:40:13 xl2tpd[1215]: xl2tpd version xl2tpd-1.3.6 started on Keenetic_Ultra PID:1215
[I] Feb 17 13:40:13 xl2tpd[1215]: Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc.
[I] Feb 17 13:40:13 xl2tpd[1215]: Forked by Scott Balmos and David Stipp, (C) 2001
[I] Feb 17 13:40:13 xl2tpd[1215]: Inherited by Jeff McAdams, (C) 2002
[I] Feb 17 13:40:13 xl2tpd[1215]: Forked again by Xelerance (www.xelerance.com) (C) 2006
[I] Feb 17 13:40:13 xl2tpd[1215]: Listening on IP address 0.0.0.0, port 1701
[I] Feb 17 13:40:13 root: Started xl2tpd from .
3. Настройка windows.
Для подключение к роутеру из с windows необходимо отредактировать реестр и отключить ipsec для l2tp. Это описано на страницах настройки l2tp у многих интернет провайдеров.
Проще всего скачать файл http://keenetic.zyxmon.org/files/l2tp-disable-ipsec.reg
Сделать на скачанном двойной щелчок, согласиться с изменением реестра и перезагрузиться.
После этого:
* Создаем VPN соединение с ip/DDNS роутера. Указываем в разделе безопасность тип "L2TP IPSec VPN".
* В свойствах Сеть-> Протокол IPv4->Свойства на закладке дополнительно снимаем галочку на "Использовать удаленный шлюз для удаленной сети".
* Проверяем, что соединение устанавливается и кинетик доступен по адресу "remote ip" из файла xl2tpd.conf (192.168.11.1).
Лог роутера (примерно) такой
Код: Выделить всё
[I] Feb 17 13:40:33 xl2tpd[1215]: Connection established to 95.131.150.118, 1701. Local: 56555, Remote: 19 (ref=0/0). LNS session is 'Serv'
[I] Feb 17 13:40:33 xl2tpd[1215]: result_code_avp: result code not appropriate for Incoming-Call-Request. Ignoring.
[I] Feb 17 13:40:33 xl2tpd[1215]: start_pppd: I'm running:
[I] Feb 17 13:40:33 xl2tpd[1215]: "/opt/sbin/pppd"
[I] Feb 17 13:40:33 xl2tpd[1215]: "/dev/pts/1"
[I] Feb 17 13:40:33 xl2tpd[1215]: "passive"
[I] Feb 17 13:40:33 xl2tpd[1215]: "nodetach"
[I] Feb 17 13:40:33 xl2tpd[1215]: "192.168.11.1:192.168.11.2"
[I] Feb 17 13:40:33 xl2tpd[1215]: "refuse-pap"
[I] Feb 17 13:40:33 xl2tpd[1215]: "name"
[I] Feb 17 13:40:33 xl2tpd[1215]: "Serv"
[I] Feb 17 13:40:33 xl2tpd[1215]: "file"
[I] Feb 17 13:40:33 xl2tpd[1215]: "/opt/etc/ppp/options.xl2tpd"
[I] Feb 17 13:40:33 xl2tpd[1215]: Call established with 95.131.150.118, Local: 28062, Remote: 1, Serial: 0
[I] Feb 17 13:40:33 pppd[1220]: pppd 2.4.7 started by root, uid 0
[I] Feb 17 13:40:33 pppd[1220]: Using interface ppp0
[I] Feb 17 13:40:33 pppd[1220]: Connect: ppp0 <--> /dev/pts/1
[W] Feb 17 13:40:33 pppd[1220]: kernel does not support PPP filtering
[I] Feb 17 13:40:33 pppd[1220]: local IP address 192.168.11.1
[I] Feb 17 13:40:33 pppd[1220]: remote IP address 192.168.11.2
[I] Feb 17 10:40:33 root: *** L2TP client connected [ppp0 /dev/pts/1 150 192.168.11.1 192.168.11.2]; adding iptables rules
*. Для того, чтобы была доступна квартирная сеть за кинетиком на клиенте (компе, с которого идет соединение) нужно прописать до нее маршрут, выполнив (с правами администратора) команду
Код: Выделить всё
ROUTE ADD 192.168.1.0 MASK 255.255.255.0 192.168.11.1
Тут 192.168.1.0 MASK 255.255.255.0 - подсеть роутера, а 192.168.11.1 локальный ip l2tp сервера, если нужно ставьте свои.
Можно создать cmd/bat файл примерно такого содержания
Код: Выделить всё
rasdial "Тут имя VPN соединения" user password
ROUTE ADD X.X.X.X MASK 255.255.255.0 Y.Y.Y.Y
И запускать его (с правами администратора) для l2tp соединения с роутером и подсетью за ним.
На этом все.
Замечание, исправления, комментарии приветствуются