1. Подготовка хостовой системы
1.1 Загрузка необходимых модулей ядра
Добавьте модули в файл /etc/modules:
nano /etc/modules
ah4 af_key esp4 l2tp_ppp ipcomp xfrm4_mode_transport xfrm4_mode_tunnel xfrm_user xfrm_ipcomp
2. Создание и настройка LXC-контейнера
Создайте LXC-контейнер с ОС Ubuntu Trusty amd64.
2.1 Разрешение доступа к устройству /dev/ppp
На хосте определите параметры устройства:
sudo ls -ls /dev/ppp
Пример вывода:
0 crw------- 1 root root 108, 0 Jun 8 21:19 /dev/ppp
Добавьте разрешение в конфигурацию контейнера:
sudo nano /var/lib/lxc/[container_name]/config
lxc.cgroup.devices.allow = c 108:0 rwm
3. Настройка внутри контейнера
3.1 Установка необходимых пакетов
echo "nameserver 77.88.8.8" >> /etc/resolv.conf apt update apt-get install openswan xl2tpd nano iptables iptables-persistent
3.2 Конфигурация IPsec
Важно: строго соблюдайте отступы.
nano /etc/ipsec.conf
version 2
config setup
dumpdir=/var/run/pluto/
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v6:fd00::/8,%v6:fe80::/10
protostack=netkey
force_keepalive=yes
keep_alive=60
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
ikelifetime=8h
keylife=1h
ike=aes256-sha1,aes128-sha1,3des-sha1
phase2alg=aes256-sha1,aes128-sha1,3des-sha1
type=transport
left=10.10.10.4
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
dpddelay=10
dpdtimeout=20
dpdaction=clear
3.3 Настройка PSK
nano /etc/ipsec.secrets
10.10.10.4 %any: PSK "P@ssw0rd"
3.4 Отключение ICMP redirect
for each in /proc/sys/net/ipv4/conf/*; do echo 0 > $each/accept_redirects echo 0 > $each/send_redirects done
/etc/init.d/ipsec restart
3.5 Конфигурация xl2tpd
nano /etc/xl2tpd/xl2tpd.conf
[global] ipsec saref = yes saref refinfo = 30 [lns default] ip range = 172.16.1.30-172.16.1.100 local ip = 172.16.1.1 refuse pap = yes require authentication = yes pppoptfile = /etc/ppp/options.xl2tpd length bit = yes
3.6 Секреты L2TP
nano /etc/xl2tpd/l2tp-secrets
* * * # let all , because we use auth with chap
3.7 Параметры PPP
nano /etc/ppp/options.xl2tpd
refuse-mschap-v2 refuse-mschap ms-dns 8.8.8.8 ms-dns 8.8.4.4 asyncmap 0 auth crtscts idle 1800 mtu 1400 mru 1400 lock hide-password local name l2tpd proxyarp lcp-echo-interval 30 lcp-echo-failure 4
3.8 Пользователи
nano /etc/ppp/chap-secrets
testUSER l2tpd testPASS *
4. NAT и firewall
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -P INPUT DROP iptables -A INPUT -p ah -j ACCEPT iptables -A INPUT -p esp -j ACCEPT iptables -A INPUT -p udp --dport 500 -j ACCEPT iptables -A INPUT -p udp --dport 4500 -j ACCEPT iptables -A INPUT -m policy --dir in --pol ipsec -p udp --dport 1701 -j ACCEPT iptables -P FORWARD DROP iptables -A FORWARD -s 172.16.1.0/24 -j ACCEPT iptables -A FORWARD -d 172.16.1.0/24 -j ACCEPT iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE iptables-save > /etc/iptables/rules.v4
5. Перезапуск сервисов
/etc/init.d/ipsec restart /etc/init.d/xl2tpd restart
TAGS: L2TP, IPsec, OpenSwan, xl2tpd, LXC, Linux, VPN