Setup:inet:l2tpipsec:debian
Материал из campus.mephi.ru
Anikeev (Обсуждение | вклад) |
Anikeev (Обсуждение | вклад) |
||
Строка 332: | Строка 332: | ||
# dpkg -i openl2tp_1.8-1_amd64.deb | # dpkg -i openl2tp_1.8-1_amd64.deb | ||
- | *Отправьте письмо с просьбой выдать логин/пароль для L2TP подключения на | + | *Отправьте письмо с просьбой выдать логин/пароль для L2TP подключения на voip@mephi.ru. Пусть, вы получили логин foo и пароль bar (Не путайте с omg / smb !) |
*Далее, необходимо отключить Network Manager. Для этого, проверьте стандартный runlevel в вашей системе. Например, | *Далее, необходимо отключить Network Manager. Для этого, проверьте стандартный runlevel в вашей системе. Например, |
Версия 13:22, 7 сентября 2012
Настройка L2TP (IPSec) - соединения
Содержание |
Настройка соединения
В данной пошаговой инструкции описан способ реализации защищенного VPN соединения по протоколу L2TP через IPSec. Перед началом настойки удостоверьтесь, что у вас есть рабочее соединение с интернетом по какому-либо другому протоколу для установки требуемых пакетов. Возможность автономной установки пакетов в данной инструкции не рассматривается.
Часть I. Настройка IPSec
Протокол IPSec имеет два режима - транспортный и туннельный. Туннельный режим хорошо работает за NAT, но сложнее, чем транспортный. Сервер для туннельного режима доступен по адресу «svpn-ipsectunnel.mephi.ru» (194.67.76.11), и для транспортного, соответственно, «svpn-ipsectransport.mephi.ru» (194.67.76.10).
- Проверьте наличие поддержки IPSec в вашем ядре:
CONFIG_XFRM=y CONFIG_XFRM_USER=y CONFIG_NET_KEY=m CONFIG_INET_AH=m CONFIG_INET_ESP=m CONFIG_INET_IPCOMP=m CONFIG_INET_TUNNEL=m CONFIG_INET_XFRM_MODE_TRANSPORT=m CONFIG_INET_XFRM_MODE_TUNNEL=m CONFIG_CRYPTO=y CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_SHA1=m CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_DEFLATE=m
Это можно сделать командой:
cat /boot/config-`uname -r` | grep ИМЯ_ПЕРЕМЕННОЙ
, например,
cat /boot/config-`uname -r` | grep CONFIG_INET_
Если некоторые опции не поддерживаются, вам необходимо переконфигурировать ядро ОС.
- Установите пакеты:
# apt-get install ipsec-tools # apt-get install racoon # apt-get install uml-utilities # apt-get install iptables
При установке racoon выберите ручную настройку.
- Откройте в Интернет-браузере http://gencert.campus.mephi.ru/. В поле "Login" вводим номер своей зачётной книжки (например, 112358), в поля "Password" вводим пароль для защиты сертификата (этот пароль не обязательно должен совпадать с паролем для доступа в Интернет) и нажимаем "Generate!". Сохраните сертификат в формате tar.
- Далее, необходимо извлечь сертификаты стандарта X.509 из архива и переместить их в директорию /etc/racoon/certs:
# tar -xvf 112358.tar # mv certs/user112358.crt /etc/racoon/certs # mv keys/user112358.key /etc/racoon/certs
- Откройте файл /etc/racoon/racoon.conf в текстовом редакторе и заполните его следующим содержимым:
log notify; path pre_shared_key "/etc/racoon/psk.txt"; path certificate "/etc/racoon/certs"; remote anonymous { exchange_mode main; certificate_type x509 "user112358.crt" "user112358.key"; verify_cert off; nat_traversal on; generate_policy on; proposal { encryption_algorithm blowfish; hash_algorithm sha1; authentication_method rsasig; dh_group modp1024; } } sainfo anonymous { encryption_algorithm blowfish; authentication_algorithm hmac_sha1; compression_algorithm deflate; }
- Откройте файл /etc/*ipsec-tools.conf в текстовом редакторе и заполните его следующим содержимым (случай туннельного режима):
#!/usr/sbin/setkey -f flush; spdflush; spdadd 0.0.0.0/0 194.67.76.11/32[1701] udp -P out ipsec esp/tunnel/192.168.57.1-194.67.76.11/require; spdadd 194.67.76.11/32[1701] 0.0.0.0/0 udp -P in ipsec esp/tunnel/194.67.76.11-192.168.57.1/require;
или (случай транспортного режима):
#!/usr/sbin/setkey -f flush; spdflush; spdadd 0.0.0.0/0 194.67.76.10/32[1701] udp -P out ipsec esp/transport/192.168.57.1-194.67.76.10/require; spdadd 194.67.76.10/32[1701] 0.0.0.0/0 udp -P in ipsec esp/transport/194.67.76.10-192.168.57.1/require;
Далее в тексте по умолчанию приведены примеры конфигурационных файлов и команд для туннельного режима. Для транспортного режима необходимо заменить адрес 194.67.76.11 на 194.67.76.10.
- Создайте сетевой интерфейс с натированием:
# ifconfig lo:0 192.168.57.1 up # iptables -t nat -A POSTROUTING -s 192.168.57.1 -j MASQUERADE
- Запустите демон:
# /etc/init.d/setkey start # /etc/init.d/racoon start
Настройка L2TP на базе XL2TPd
L2TP соединение в Debian можно реализовать с использованием пакета xl2tpd, либо openl2tp. Рассмотрим эти случаи по очереди.
- Откройте терминал с правами суперпользователя (root). Если в вашей системе это запрещено из соображений безопасности, вам следует выполнять все действия с использованием утилиты sudo.
- Проверьте наличие поддержки PPP в вашем ядре:
CONFIG_PPP=y
Это можно сделать командой:
cat /boot/config-`uname -r` | grep CONFIG_PPP
Если некоторые опции не поддерживаются, вам необходимо переконфигурировать ядро ОС.
- Проверьте наличие «ppp» устройства. При отсутствии его необходимо создать:
# cd /dev # ls -ld ppp # mknod /dev/ppp c 108 0 # chmod 660 ppp
- Установите пакеты:
# apt-get install xl2tpd
- Отправьте письмо с просьбой выдать логин/пароль для L2TP подключения на mailto:voip@mephi.ru. Пусть, вы получили логин foo и пароль bar (Не путайте с omg / smb !)
- Откройте в текстовом редакторе файл /etc/xl2tpd/xl2tpd.conf и допишите в конец:
[global] access control = yes auth file=/etc/ppp/chap-secrets debug avp = yes debug network = yes debug state = yes debug tunnel = yes [lac mephi] lns = l2tp.campus.mephi.ru # or "svpn-ipsectransport.mephi.ru" in case of "transport" mode redial = yes redial timeout = 10 require authentication = no ppp debug = yes pppoptfile = /etc/ppp/options.xl2tpd require chap = yes refuse pap = yes autodial = yes name = foo
- Создайте файл:
# touch /etc/ppp/options.xl2tpd
со следующим содержимым:
unit 0 remotename l2tp ipparam mephi connect /bin/true mru 1400 mtu 1400 nodeflate nobsdcomp persist maxfail 0 nopcomp noaccomp nodefaultroute noreplacedefaultroute #debug #proxyarp name foo refuse-pap refuse-eap refuse-chap refuse-mschap require-mschap-v2 noauth
- Откройте в текстовом редакторе файл «/etc/ppp/options», найдите строку «auth» и закомментируйте её.
# Require the peer to authenticate itself before allowing network # packets to be sent or received. # Please do not disable this setting. It is expected to be standard in # future releases of pppd. Use the call option (see manpage) to disable # authentication for specific peers. #auth
- Допишите в конец файла «/etc/ppp/chap-secrets»:
foo * bar *
- Проверьте, загружен ли у вас модуль ядра ppp-generic комaндой lsmod. Если нет, загрузите его
# lsmod | grep ppp-generic || ( echo 'ppp-generic' >>/etc/modules; modprobe ppp-generic; echo 'loaded' )
- Далее, необходимо отключить Network Manager. Для этого, проверьте стандартный runlevel в вашей системе. Например,
# grep initdefault /etc/inittab id:2:initdefault:
Т.е. в примере стандартным является runlevel 2. Затем, проверьте runlevel вашей системы в рабочем сотоянии:
# runlevel S 3
Т.е. в примере система работает в runlevel 3. Обычно, эти значения совпадают, но, как видно из примера, не всегда.
- Внимание! Следующее действие может привести к неработоспособности сети, в случае, если вы перезагрузка машину до окончательной настройки L2TP (или другого подключения)! Следует отключить задгузку Network Manager как в стандартном, так и в рабочем runlevel. Для этого надо переименовать ссылку на Network Manager в директории /etc/rdS, где S - номер runlevel. Для приведённого выше примера:
# rename 's/\/S/\/K/' /etc/rc2.d/S??network-manager # rename 's/\/S/\/K/' /etc/rc3.d/S??network-manager
Перестройте запуск программ в соответствии с внесёнными изменениями:
# update-rc.d network-manager defaults
- Остановите Network Manager:
# /etc/init.d/network-manager stop
Если вам потребуется восстановить подключение к сети по старому протоколу, то можно снова запустить Network Manager командой:
# /etc/init.d/network-manager start
- Создайте файл
# touch /etc/ppp/ip-up.d/mephivpn.sh
со следующим содержимым:
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin DEFAULT_GW=$(netstat -nr | awk '{if($1=="0.0.0.0" && $3=="0.0.0.0") print $2}' | head -1) route add -net svpn.mephi.ru/31 gw "$DEFAULT_GW" route add -net 10.0.57.0/24 gw "$5"
- Сделайте скрипт исполняемым и выполнте его
# chmod +x /etc/ppp/ip-up.d/mephivpn.sh # /etc/ppp/ip-up.d/mephivpn.sh
- Запустите демон:
# /etc/init.d/xl2tpd start
После этого таблица маршрутизации должна выглядеть примерно так:
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.57.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 194.67.76.10 10.4.254.1 255.255.255.254 UGH 0 0 0 eth0 10.4.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.0.57.0 10.0.57.1 255.255.255.0 UG 0 0 0 ppp0
- Проверьте доступность удалённого PtP хоста:
# ping 10.0.57.1 PING 10.0.57.1 (10.0.57.1) 56(84) bytes of data. 64 bytes from 10.0.57.1: icmp_req=1 ttl=63 time=0.745 ms 64 bytes from 10.0.57.1: icmp_req=2 ttl=63 time=0.617 ms 64 bytes from 10.0.57.1: icmp_req=3 ttl=63 time=0.650 ms 64 bytes from 10.0.57.1: icmp_req=4 ttl=63 time=0.606 ms ^C --- 10.0.57.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms rtt min/avg/max/mdev = 0.606/0.654/0.745/0.060 ms
Если сервер доступен, то настройка соединения прошла успешно.
Настройка L2TP на базе OpenL2TP
- Откройте терминал с правами суперпользователя (root). Если в вашей системе это запрещено из соображений безопасности, вам следует выполнять все действия с использованием утилиты sudo.
- Проверьте наличие поддержки PPP over L2TP в вашем ядре:
CONFIG_PPP=y CONFIG_PPPOL2TP=y
Это можно сделать командой:
cat /boot/config-`uname -r` | grep ИМЯ_ПЕРЕМЕННОЙ
, например,
cat /boot/config-`uname -r` | grep CONFIG_PPP
Если некоторые опции не поддерживаются, вам необходимо переконфигурировать ядро ОС.
- Проверьте наличие «ppp» устройства. При отсутствии его необходимо создать:
# cd /dev # ls -ld ppp # mknod /dev/ppp c 108 0 # chmod 660 ppp
- Проверьте последнюю опубликованную версию программы на странице «http://openl2tp.org/downloads». На момент написания инструкции - это «openl2tp-1.8». Далее в тексте будет упоминаться именно эта версия.
- Проверьте версию вашего дистрибутива:
# more /etc/debian_version
Если в данном файле версия debian указана в численном виде, то можно использовать следующее соответствие чисел и имени:
5 - это "lenny" 6 - это "squeeze" 7 - это "wheezy"
Например, 6.0.2 - это "squeeze"
- Внутри ftp://ftp.openl2tp.org/releases/openl2tp-1.8/ находятся директории с пакетами, соответсвующими конкретным дистрибутивам. Например, директория ftp://ftp.openl2tp.org/releases/openl2tp-1.8/debian-squeeze/ содержит пакеты:
openl2tp_1.8-1_amd64.deb openl2tp_1.8-1_i386.deb
Скачайте пакет, соответствующий вашему дистрибутиву и релизу вашего ядра. Релиз ядра можно узнать командай uname -r. Например:
# uname -r 2.6.32-5-amd64 # wget ftp://ftp.openl2tp.org/releases/openl2tp-1.8/debian-squeeze/openl2tp_1.8-1_amd64.deb
Также предлагается отдельно собранная версия openl2tp-1.8 под debian wheezy [amd64], пакеты доступны по ссылкам http://ut.mephi.ru/deb/openl2tp_1.8-1_amd64.deb и http://ut.mephi.ru/deb/openl2tp-ppp_1.8-1_amd64.deb.
- Установите полученный пакет:
- dpkg -i openl2tp_1.8-1_amd64.deb
- Отправьте письмо с просьбой выдать логин/пароль для L2TP подключения на voip@mephi.ru. Пусть, вы получили логин foo и пароль bar (Не путайте с omg / smb !)
- Далее, необходимо отключить Network Manager. Для этого, проверьте стандартный runlevel в вашей системе. Например,
# grep initdefault /etc/inittab id:2:initdefault:
Т.е. в примере стандартным является runlevel 2. Затем, проверьте runlevel вашей системы в рабочем сотоянии:
# runlevel S 3
Т.е. в примере система работает в runlevel 3. Обычно, эти значения совпадают, но, как видно из примера, не всегда.
- Внимание! Следующее действие может привести к неработоспособности сети, в случае, если вы перзагрузита машину до окончательной настройки L2TP (или другого подключения)! Следует отключить задгузку Network Manager как в стандартном, так и в рабочем runlevel. Для этого надо переименовать ссылку на Network Manager в директории /etc/rdS, где S - номер runlevel. Для приведённого выше примера:
# rename 's/\/S/\/K/' /etc/rc2.d/S??network-manager # rename 's/\/S/\/K/' /etc/rc3.d/S??network-manager
- Перестройте запуск программ в соответствии с внесёнными изменениями:
# update-rc.d network-manager defaults
- Остановите Network Manager:
# /etc/init.d/network-manager stop
Если вам потребуется восстановить подключение к сети по старому протоколу, то можно снова запустить Network Manager командой:
# /etc/init.d/network-manager start
Однако, для дальнейшей настройки L2TP его следует снова выключить.
- Создайте файл «/etc/ppp/ip-up.d/mephivpn.sh» со следующим содержимым:
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin DEFAULT_GW=$(netstat -nr | awk '{if($1=="0.0.0.0" && $3=="0.0.0.0") print $2}' | head -1) route add -net svpn.mephi.ru/31 gw "$DEFAULT_GW" route add -net 10.0.57.0/24 gw $5
- Сделайте скрипт исполняемым:
# chmod +x /etc/ppp/ip-up.d/mephivpn.sh
- Запустите демон
# /etc/init.d/openl2tpd start
- Запустите утилиту настройки OpenL2TP:
# l2tpconfig > system modify deny_remote_tunnel_creates=yes tunnel_establish_timeout=60 session_establish_timeout=30 tunnel_persist_pend_timeout=60 session_persist_pend_timeout=30 > peer profile modify profile_name=default lac_lns=lac > ppp profile modify profile_name=default mru=1400 mtu=1400 default_route=no proxy_arp=no auth_pap=no auth_chap=no auth_mschapv1=no auth_mschapv2=yes auth_eap=no > tunnel create tunnel_name=mephi dest_ipaddr=l2tp.campus.mephi.ru use_udp_checksums=off persist=yes > session create tunnel_name=mephi session_name=mephi user_name=foo user_password=bar
Проверьте состояние соединения:
> system show status L2TP service status:- tunnels: 1, sessions: 1 > user list TunId SesId User Create Time 17767 9158 foo Thu Jul 5 13:45:10 2012 > session show tunnel_id=17767 session_id=9158 Session 9158 on tunnel 17767:- type: LAC Incoming Call, state: ESTABLISHED created at: Jul 5 16:22:18 2012 created by admin: YES, peer session id: 17432 ppp user name: foo ppp interface name: ppp0 data sequencing required: O use data sequence numbers: OFF trace flags: NONE framing types: SYNC ASYNC bearer types: DIGITAL ANALOG connect speed: 1000000 use ppp proxy: NO Peer configuration data:- data sequencing required: OFF framing types: SYNC bearer types: ANALOG connect speed: 54000000 data rx packets: 593, rx bytes: 608676, rx errors: 1 data tx packets: 135, tx bytes: 40145, tx errors: 0
Если в строке state: указано ESTABLISHED, то конфигурирование пакета прошло успешно. Сохраните файл с настройками:
> config save file=/etc/openl2tpd.conf > exit #
После этого таблица маршрутизации должна выглядеть примерно так:
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.57.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 194.67.76.10 10.4.254.1 255.255.255.254 UGH 0 0 0 eth0 10.4.254.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.0.57.0 10.0.57.1 255.255.255.0 UG 0 0 0 ppp0
- Проверьте доступность ptp сервера:
# ping 10.0.57.1 PING 10.0.57.1 (10.0.57.1) 56(84) bytes of data. 64 bytes from 10.0.57.1: icmp_req=1 ttl=63 time=0.745 ms 64 bytes from 10.0.57.1: icmp_req=2 ttl=63 time=0.617 ms 64 bytes from 10.0.57.1: icmp_req=3 ttl=63 time=0.650 ms 64 bytes from 10.0.57.1: icmp_req=4 ttl=63 time=0.606 ms ^C --- 10.0.57.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms rtt min/avg/max/mdev = 0.606/0.654/0.745/0.060 ms
Если сервер доступен, то настройка соединения прошла успешно.
Отладка
Proxy
Если в командной строке "ping 8.8.8.8" сообщает о том, что связь до 8.8.8.8 есть, а тем ни менее на сайты не заходит, значит, вполне возможно, что вы забыли отключить прокси в настройках вашего браузера