VPN: L2TP сервер и клиент на CentOS 6
Задача: Нужно настроить домашний VPN сервер L2TP на Centos 6, к которому можно было бы удаленно подключиться, например с работы.
Server и Client
# vi /etc/hosts
192.168.1.11 server.localdomain server
192.168.1.12 client.localdomain client
Инсталляция необходимого ПО
-- добавляю EPEL репозиторий, т.к. в стандартном не нашел.
# rpm -ivh http://mirror.yandex.ru/epel//6Server/x86_64/epel-release-6-8.noarch.rpm
# yum install -y xl2tpd
# chkconfig --level 345 xl2tpd on
Резервное копирование конфигов:
# cp /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.orig; \
cp /etc/ppp/options.xl2tpd /etc/ppp/options.xl2tpd.orig; \
cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.orig
Server
Configuring L2TP Daemon
# cat > /etc/xl2tpd/xl2tpd.conf << EOF
[global]
listen-addr = 192.168.1.11
port = 1701
force userspace = yes
[lns default]
ip range = 10.0.0.50-10.0.0.255
local ip = 10.0.0.1
refuse chap = yes
refuse pap = yes
require authentication = yes
name=vpn-server
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
EOF
force userspace = yes - без нее были ошибки в логах вида:
lib64/pppd/2.4.5/pppol2tp.so: cannot open shared object file
Configuring PPP
# cat > /etc/ppp/options.xl2tpd << EOF
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
logfile /var/log/ppp/ppp.log
EOF
-- Создаю учетную запись для подключения к l2tp серверу
-- vpn-server - значение name в конфиге /etc/xl2tpd/xl2tpd.conf
# echo "username1 vpn-server userpass1 *" >> /etc/ppp/chap-secrets
# modprobe pppol2tp
# lsmod | grep pppol2tp
pppol2tp 22413 0
pppox 2696 2 pppol2tp,pppoe
ppp_generic 25059 9 ppp_deflate,ppp_async,pppol2tp,pppoe,pppox
-- Автоматическая загрузка модуля
# echo "modprobe pppol2tp" >> /etc/sysconfig/modules/pppol2tp.modules
# service xl2tpd restart
-- DEBUG
# xl2tpd -D
-- Логи
# less /var/log/ppp/ppp.log
Client
# cat > /etc/xl2tpd/xl2tpd.conf << EOF
[global]
access control = yes
auth file = /etc/ppp/chap-secrets
[lac beeline]
lns = 192.168.1.11
redial = yes
redial timeout = 10
require chap = yes
require authentication = no
name = username1
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
require pap = no
autodial = yes
tunnel rws = 8
tx bps = 100000000
flow bit = no
EOF
Configuring PPP
# cat > /etc/ppp/options.xl2tpd << EOF
asyncmap 0000
name username1
remotename L2TP
ipparam beeline
connect /bin/true
mru 1460
mtu 1460
nodeflate
nobsdcomp
persist
maxfail 0
nopcomp
noaccomp
noauth
novj
novjccomp
noipx
nomp
refuse-eap
refuse-pap
unit 0
logfile /var/log/ppp/ppp.log
EOF
# echo "username1 * userpass1 *" >> /etc/ppp/chap-secrets
# service xl2tpd restart
-- logs
# less /var/log/ppp/ppp.log
# ifconfig ppp0
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.0.0.50 P-t-P:10.0.0.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1460 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:66 (66.0 b) TX bytes:60 (60.0 b)
# ping -I ppp0 10.0.0.1
PING 10.0.0.1 (10.0.0.1) from 10.0.0.50 ppp0: 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=73.9 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=22.8 ms
Интересный скрипт для автоматизации установки:
https://bitbucket.org/sysadm-ru/scripts/src/master/scripts/vpn/l2tp/L2TP_IPsec_for_CentOS_6.5_installation_script_for_SERVER.sh
Почитать:
VPN-сервер в стиле how-to (pptpd+mysql+radius) на CentOS6
http://habrahabr.ru/post/128599/
Установка и настройка L2TP сервера xl2tpd или l2tpd
http://sudouser.com/ustanovka-i-nastrojka-l2tp-servera-xl2tpd-ili-l2tpd.html
http://www.elastichosts.com/support/tutorials/linux-l2tpipsec-vpn-server/