Subscribe on YouTube

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

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

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

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

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

Выбираем имя для маршрутизатора
set system host-name $NAME$
Задаем временную зону
set system time-zone Europe/Moscow
Указываем NTP сервера
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 (при необходимости)
set service ssh port 22

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

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

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

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

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

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

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

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

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

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-адреса (в секундах).

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:

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 запросов указываем ноль, в этом случае запросы не будут кэшироваться, а каждый раз будут запрашиваться.

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:

set service dns forwarding system

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

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

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 — для всех).

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.

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.

set service dns forwarding listen-on l2tp0
set service dns forwarding listen-on l2tp1
set service dns forwarding listen-on l2tp2

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

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:

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 и сохраняем конфигурацию.

commit
save

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

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

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

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

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

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

Поделиться Комментарии