Настройка L2TP/IPsec используя программный маршрутизатор VyOS

Настройка L2TP/IPsec используя программный маршрутизатор VyOS

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Один из примеров настройки виртуальной частной сети (VPN) с DHCP сервером для устройств во внутренней сети (NAT).

Цель: Поднять приватную сеть с получением IP-адреса по DHCP по mac-адресу. Настроить VPN на базе L2TP/IPsec с доступом к указанной приватной сети и выходом в интернет.

Базовая настройка

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

Выбираем имя для маршрутизатора
1
set system host-name $NAME$
Задаем временную зону
1
set system time-zone Europe/Moscow
Указываем NTP сервера
1
2
3
4
set system ntp server ntp2.stratum2.ru
set system ntp server ntp3.stratum2.ru
set system ntp server ntp4.stratum2.ru
set system ntp server ntp5.stratum2.ru
Меняем стандартный порт SSH (при необходимости)
1
set service ssh port 22

Настройка сети

На сервере с VyOS я добавил второй интерфейс для локальной сети.

Настройка внешнего интерфейса

Выполняем настройку внешнего интерфейса, указываем IP-адрес и префикс сети, а также добавляем описание для удобства определения сетей.

1
2
set interfaces ethernet eth0 address 195.209.55.111/24
set interfaces ethernet eth0 description PublicNetwork
Настройка локального интерфейса

По аналогии с предыдущей командой выполняем настройку локального интерфейса.

1
2
set interfaces ethernet eth1 address 192.168.5.111/24
set interfaces ethernet eth1 description PrivateNetwork
Задаем системный шлюз
1
set system gateway-address 195.209.55.1

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

1
set protocols static route 0.0.0.0/0 next-hop 195.209.55.1 distance 1

Включаем NAT для локальной сети

Создаем правило NAT для адресов из сети 192.168.5.0/24 использовать NAT трансляцию для доступа к сети Интернет, используя внешний интерфейс eth0

1
2
3
set nat source rule 100 outbound-interface eth0
set nat source rule 100 source address 192.168.5.0/24
set nat source rule 100 translation address masquerade

Настраиваем DHCP сервер

Включаем DHCP сервер для локальной сети и указываем диапазон адресов, который будет выдаваться устройствам. Задаем параметры маршрутизатора, DNS-сервера, имя локального домена и период аренды IP-адреса (в секундах).

1
2
3
4
5
6
set service dhcp-server shared-network-name DevBogachevLAN authoritative enable
set service dhcp-server shared-network-name DevBogachevLAN subnet 192.168.5.0/24 start 192.168.5.101 stop 192.168.5.199
set service dhcp-server shared-network-name DevBogachevLAN subnet 192.168.5.0/24 default-router '192.168.5.111'
set service dhcp-server shared-network-name DevBogachevLAN subnet 192.168.5.0/24 dns-server 192.168.5.111
set service dhcp-server shared-network-name DevBogachevLAN subnet 192.168.5.0/24 domain-name devservers.network
set service dhcp-server shared-network-name DevBogachevLAN subnet 192.168.5.0/24 lease 3600

Статическое назначение IP адресов по MAC-адресу используя DHCP

Одна из главных особенностей, которая требуется мне - это назначение IP-адресов по заранее подготовленной связке IP-MAC.
Для статического назначения IP-адресов в DHCP используется стандартный алгоритм привязки MAC адреса к IP адресу.

В данном примере сервер TestServer с mac-адресом 52:54:00:15:3f:03 статически привязываем к IP адресу 192.168.5.101:

1
2
set service dhcp-server shared-network-name DevBogachevLAN subnet 192.168.5.0/24 static-mapping TestServer ip-address 192.168.5.101
set service dhcp-server shared-network-name DevBogachevLAN subnet 192.168.5.0/24 static-mapping TestServer mac-address 52:54:00:15:3f:03

DNS Forwarding

Используем переадресацию DNS, чтобы маршрутизатор функционировал как DNS-сервер для локальной сети. Указываем DNS-сервера, количество кэширующих запросов и интерфейс, на котором будет работать DNS Forwarding.
VyOS может кэшировать и перенаправлять DNS ответы от других DNS серверов, а так же иметь свой набор статических DNS записей. Количество кэшируемых DNS запросов указываем ноль, в этом случае запросы не будут кэшироваться, а каждый раз будут запрашиваться.

1
2
3
4
set service dns forwarding name-server 8.8.8.8
set service dns forwarding name-server 8.8.4.4
set service dns forwarding cache-size 0
set service dns forwarding listen-on eth1

Или используем системные настройки DNS:

1
set service dns forwarding system

Статические DNS-записи

Для создания статических DNS-записей используется команда:

1
set system static-host-mapping host-name failover.devservers.network inet 192.168.5.111

Указываем, что для DNS-записи failover.devservers.network всегда отвечать адресом 192.168.5.111. Для таких записей не запрашивается информация у других DNS серверов, а сразу отдается заранее определенный ответ.

Настройка L2TP/IPsec сервера

Выполняем настройку L2TP/IPsec сервера для организации подключения к нашей сети по VPN.
Указываем интерфейс на котором будет работать IPsec (eth0), активируем NAT Traversal, чтобы корректно работать с клиентами за NAT и задаем сеть, с которой разрешено подключение (0.0.0.0/0 — для всех).

1
2
3
set vpn ipsec ipsec-interfaces interface eth0
set vpn ipsec nat-traversal enable
set vpn ipsec nat-networks allowed-network 0.0.0.0/0
Приступаем к настройке L2TP туннеля

Прежде всего указываем внешний адрес для подключения, а так же диапазон адресов, который будет выдаваться клиентам VPN. Для осуществления подключения будет использоваться PSK-ключ. Включаем данный режим в директиве ipsec-settings authentication и задаем PSK-ключ.

Для аутентификации клиентов будет использоваться локальная база клиентов. Создаем пользователя с именем TestUser и паролем TestPassword.

1
2
3
4
5
6
7
8
set vpn l2tp remote-access outside-address 195.209.55.111
set vpn l2tp remote-access client-ip-pool start 192.168.6.1
set vpn l2tp remote-access client-ip-pool stop 192.168.6.255
set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret
set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret MySecretPSKkey
set vpn l2tp remote-access authentication mode local
set vpn l2tp remote-access authentication local-users username TestUser password MyCryptPass
set vpn l2tp remote-access dns-servers server-1 8.8.8.8

Рекомендуется использовать внешний DNS-сервер, в противном случае для VPN клиентов используется DNS Forwarding, и нужно для каждого соединения L2TP опубликовать сервис DNS Forwarding. Нельзя выполнить настройку сразу для всех интерфейсов, поэтому придется сначала добавить всех пользователей, а уже потом добавлять DNS Forwarding.

1
2
3
set service dns forwarding listen-on l2tp0
set service dns forwarding listen-on l2tp1
set service dns forwarding listen-on l2tp2

Если для клиента VPN необходимо выдать постоянный статический адрес при подключении, то используем команду:

1
set vpn l2tp remote-access authentication local-users username TestUser static-ip 192.168.6.2

Итак, теперь пользователи могут подключаться по L2TP к маршрутизатору, а так же имеют доступ к внутренней сети 192.168.5.0/24.

Для того, чтобы пользователи могли выходить через VPN соединение в интернет — нужно добавить правила NAT для диапазона адресов 192.168.6.1-255:

1
2
3
set nat source rule 110 outbound-interface eth0
set nat source rule 110 source address 192.168.6.0/24
set nat source rule 110 translation address masquerade

Создание правил NAT для L2TP полностью аналогично настройке NAT для внутренней сети.

После выполнения всего вышеперечисленного подтверждаем внесенные изменения командой commit и сохраняем конфигурацию.

1
2
commit
save

Проверяем выполненную настройку.

Публичная и приватная сети на программном маршрутизаторе VyOS

Проверяем DHCP и доступность приватной сети

Выполняем подключение к созданному VPN

Проверяем работу приватной сети и доступ в интернет при работе через VPN

Видео установки