Настройка Vpn-Подключения По L2Tp+Ipsec С Использованием Контейнера Openvz В Качестве Сервера

Привет, не так давно команда OpenVZ выпустила новый ядро с поддержкой ipsec внутри контейнера .

Давно хотел отказаться от стороннего ПО на локальной машине с Windows и воспользоваться возможностью настройки защищенного VPN-канала с помощью самой системы.

В качестве сервера мы будем использовать контейнер Debian 7 на OpenVZ. Клиент представляет собой стандартный VPN-клиент Windows. Для авторизации - авторизация с помощью PSK (по ключу).

Первым делом активируем для контейнера функцию net_admin и даем контейнеру ppp-устройство для работы, как указано в подсказке от разработчиков:

  
  
  
  
  
  
  
  
  
  
  
  
  
   

vzctl set CTID --capability net_admin:on --save vzctl set CTID --devices c:108:0:rw --save vzctl restart CTID

Внутри контейнера создаём ppp-устройство и выставляем ему правильные права доступа:

mknod /dev/ppp c 108 0 chmod 600 /dev/ppp

Загрузите необходимые модули в HN через modprobe:

modprobe ppp_async modprobe pppol2tp modprobe xfrm4_mode_transport modprobe xfrm4_mode_tunnel modprobe xfrm_ipcomp modprobe esp4

Внутри контейнера мы будем использовать openswan в качестве демона ipsec, а в качестве l2tp-сервера — стандартный xl2tpd из репозиториев:

apt-get install openswan xl2tpd

Далее настроим переадресацию и остальную сетевую подсистему для корректной работы с NAT и VPN:

echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source <main IP of server> iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT iptables -A FORWARD -d 10.0.0.0/24 -j ACCEPT iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu for each in /proc/sys/net/ipv4/conf/*; do echo 0 > $each/accept_redirects; echo 0 > $each/send_redirects; done

Приступим к настройке демона ipsec. Приведем конфиг /etc/ipsec.conf к виду:

config setup protostack=netkey nat_traversal=yes # Enables NAT traversal virtual_private=%v4:192.168.1.0/8 # with this option you can add your local IP in NAT conn L2TP-PSK-NAT rightsubnet=vhost:%priv also=L2TP-PSK-noNAT conn L2TP-PSK-noNAT authby=secret # Auth with PSK ( preshared key ) pfs=no auto=add keyingtries=3 rekey=no ikelifetime=8h salifetime=10m type=tunnel # type of l2tp connection ( tunnel / transport ) left=11.11.11.11 # left - is internet IP of l2tp server leftprotoport=17/1701 right=%any # right - is IP of client ( if client NATed , that IP of client is IP in NAT ) rightprotoport=17/1701

Самые важные моменты конфига прокомментированы.

Также следует не забыть создать конфиг точно так, как указано выше, то есть сохранить пробелы в начале строки для тех команд, у которых они указаны, поскольку отступ команды демоном привязан к блоку, определяемому отступом «conn ».

Теперь настроим авторизацию для работы с ipsec. Существует два метода авторизации – по сертификату и по ключу (PSK).

В данном примере мы настроим авторизацию по ключу в файле /etc/ipsec.secrets:

11.11.11.11 %any: PSK "mykey"

11.11.11.11 — внешний IP-адрес нашего сервера.

%any — встроенная переменная, представляющая любой IP-адрес.

PSK — метод авторизации (можно RSA) «mykey» — секретный ключ для авторизации, который необходимо будет передать клиенту.

Теперь пришло время настроить l2tp-сервер.

Будет работать через протокол ppp. Приводим конфиг /etc/xl2tpd/xl2tpd.conf к виду:

[global] port = 1701 auth file = /etc/xl2tpd/l2tp-secrets # auth file with pars login/password for l2tp auth [lns default] ip range = 10.0.0.2-10.0.0.200 # range of IP's , that give to clients when auth is good local ip = 10.0.0.1 refuse chap = yes refuse pap = yes require authentication = yes ppp debug = no # debug mode pppoptfile = /etc/ppp/options.xl2tpd # this is ppp options config file length bit = yes exclusive = no assign ip = yes name = VPN-Server

В этом конфиге опять же все критичные места закомментированы, а остальное интуитивно понятно.

При настройке сервера комментарии из конфига необходимо удалять.

Настраиваем файл авторизации l2tp — /etc/xl2tpd/l2tp-secrets. В файле разрешим всем подключаться, так как у нас l2tp работает через ppp, то и авторизацию будем использовать ppp.

# Secrets for authenticating l2tp tunnels # us them secret # * marko blah2 # zeus marko blah # * * interop * * * # let all , because we use auth with ppp

Далее мы настраиваем конфигурацию ppp, которую запрашивает наш демон l2tp ( /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 1200 mru 1200 lock hide-password local #debug name l2tpd proxyarp lcp-echo-interval 30 lcp-echo-failure 4

Если есть проблемы со связью или с подключением к отладочному l2tp, просто раскомментируйте «#debug» и посмотрите в системном журнале /var/log/syslog на наличие ошибок.

Настраиваем авторизацию в ppp (/etc/ppp/chap-secrets):

# Secrets for authentication using CHAP # client server secret IP addresses test2 l2tpd test *

Вход - test2 Сервер, для которого эта пара действительна для авторизации — l2tpd Пароль - тест С этим паролем могут подключаться клиенты со всех IP-адресов — * Перезапустим обе службы:

/etc/init.d/ipsec restart /etc/init.d/xl2tpd restart

Теперь проверим корректную работу модулей ipsec внутри контейнера:

ipsec verify

Вывод работающего ipsec будет примерно таким:

root@XXX:~# ipsec verify Checking your system to see if IPsec got installed and started correctly: Version check and ipsec on-path [OK] Linux Openswan U2.6.37-g955aaafb-dirty/K2.6.32-042stab084.10 (netkey) Checking for IPsec support in kernel [OK] SAref kernel support [N/A] NETKEY: Testing XFRM related proc values [OK] [OK] [OK] Checking that pluto is running [OK] Pluto listening for IKE on udp 500 [OK] Pluto listening for NAT-T on udp 4500 [OK] Checking for 'ip' command [OK] Checking /bin/sh is not /bin/dash [WARNING] Checking for 'iptables' command [OK] Opportunistic Encryption Support

Теперь давайте настроим клиента в Windows 7 для подключения к нашему VPN l2tp с ipsec-шифрованием.

Сначала давайте создадим новое VPN-соединение.

Все стандартно Пуск – Панель управления – Центр управления сетями и общим доступом – Настройка нового подключения или сети – Подключиться к рабочему месту – Использовать мое подключение к Интернету (VPN) Далее укажите IP-адрес или полное доменное имя l2tp-сервера.

Зацепка

Настройка VPN-подключения по l2tp+ipsec с использованием контейнера OpenVZ в качестве сервера

Введите логин и пароль для l2tp Зацепка

Настройка VPN-подключения по l2tp+ipsec с использованием контейнера OpenVZ в качестве сервера

Не подключаемся и закрываем настройки подключения Зацепка

Настройка VPN-подключения по l2tp+ipsec с использованием контейнера OpenVZ в качестве сервера

Заходим в свойства нашего нового подключения и еще раз проверяем правильность ввода адреса сервера (вкладка Общие) Зацепка

Настройка VPN-подключения по l2tp+ipsec с использованием контейнера OpenVZ в качестве сервера

Во вкладке «Безопасность» выставляем правильный тип нашего соединения (l2tp over ipsec) и разрешаем авторизацию по протоколу CHAP. В дополнительных настройках l2tp выбираем авторизацию по ключу и вводим наш PSK от IPsec Зацепка

Настройка VPN-подключения по l2tp+ipsec с использованием контейнера OpenVZ в качестве сервера



Настройка VPN-подключения по l2tp+ipsec с использованием контейнера OpenVZ в качестве сервера

Настройка завершена.

Теперь вы можете использовать новое VPN-соединение.

Спасибо за внимание Ваганов Николай, старший системный администратор ООО ФастВПС UPD На данный момент указанное в статье ядро нестабильно и на наших нодах не установлено.

Думаю, в течение пары недель разработчики ядра включат его в стабильную ветку.

Теги: #vpn #l2tp #fastvps #информационная безопасность

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.