Всем привет!
Помогите пожалуйста разобраться с l2tp сервером на ubuntu-server 12.04.3 LTS.
Задача:Надо предоставить клиенту доступ к web серверу через vpn по схеме приведенной под спойлером.
Клиент 1 набирая в браузере адрес
http://1.1.1.1:11010 должен попасть на веб сервер который указан первым с верху в схеме
Клиент 2 набирая в браузере адрес
http://1.1.1.1:11011 должен попасть на веб сервер который указан вторым и т.д.
Адрес
http://1.1.1.1:11010 должен быть жестко привязан к первому серверу,
http://1.1.1.1:11011 ко второму и т.д.
В качестве VPN routera используется TP-LINK TL-WR741ND который подключен к интернету через ADSL модем или другой роутер который подключается к интернет провайдеру. Также на vpn роутере настроен проброс 80 порта с wan на ip web сервера.
Решение:Установка xl2tp
audo apt-get install xl2tpd pptp-linux
Редактируем /etc/xl2tpd/xl2tpd.conf
[global]
port = 1701
auth file = /etc/ppp/chap-secrets
access control = no
rand source = dev
[lns default]
exclusive = yes
ip range = 192.168.200.10-192.168.200.30
lac = 0.0.0.0 - 255.255.255.255
hidden bit = yes
local ip = 192.168.200.1
require chap = yes
refuse pap = yes
refuse authentication = no
require authentication = no
name = hostname
ppp debug = no
pppoptfile = /etc/ppp/options.l2tpd
flow bit = yes
length bit = yes
Редактируем /etc/ppp/options.l2tpd
ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.8.8
ms-dns 8.8.4.4
noccp
require-mppe
auth
refuse-pap
refuse-eap
refuse-chap
refuse-mschap
require-mschap-v2
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
Добавляем пользователей в /etc/ppp/chap-secrets
user1 * password1 192.168.200.10
user2 * password2 192.168.200.11
Настройка сервера закончена, теперь перезагружаем сервер командой
sudo /etc/init.d/xl2tpd restart
Едем дальше и настраиваем NAT
Создаем файл /etc/nat c содержимым
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables --table nat --append POSTROUTING --jump MASQUERADE
iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m tcp --dport 11010 -j DNAT --to-destination 192.168.200.10:80
iptables -t nat -A POSTROUTING -d 192.168.200.10 -p tcp -m tcp --dport 80 -j SNAT --to-source 1.1.1.1
iptables -t nat -A OUTPUT -d 1.1.1.1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.200.10
iptables -I FORWARD 1 -i eth0 -o eth0 -d 192.168.200.10 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m tcp --dport 11011 -j DNAT --to-destination 192.168.200.11:80
iptables -t nat -A POSTROUTING -d 192.168.200.11 -p tcp -m tcp --dport 80 -j SNAT --to-source 1.1.1.1
iptables -t nat -A OUTPUT -d 1.1.1.1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.200.11
iptables -I FORWARD 1 -i eth0 -o eth0 -d 192.168.200.11 -p tcp -m tcp --dport 80 -j ACCEPT
Делаем его исполняемым
sudo chmod +x /etc/nat
Добавляем в конец файла /etc/network/interfaces
post-up /etc/nat
Перезагружаем сервер sudo reboot и можно начать пользоваться.
По данной схеме все работает, но есть одна проблема!
При разрыве связи с интернет провайдером связь с vpn сервером теряется и после появления интернета vpn роутер не может переподключиться к vpn пока этот роутер не перезагрузишь.