Настройка L2TP/IPsec используя программный маршрутизатор VyOS
Один из примеров настройки виртуальной частной сети (VPN) с DHCP сервером для устройств во внутренней сети (NAT).
Цель: Поднять приватную сеть с получением IP-адреса по DHCP по mac-адресу. Настроить VPN на базе L2TP/IPsec с доступом к указанной приватной сети и выходом в интернет.
Базовая настройка
Выполним первоначальную настройку маршрутизатора для удобства дальнейшего пользования.
Выбираем имя для маршрутизатора
1 | set system host-name $NAME$ |
Задаем временную зону
1 | set system time-zone Europe/Moscow |
Указываем NTP сервера
1 | set system ntp server ntp2.stratum2.ru |
Меняем стандартный порт SSH (при необходимости)
1 | set service ssh port 22 |
Настройка сети
На сервере с VyOS я добавил второй интерфейс для локальной сети.
Настройка внешнего интерфейса
Выполняем настройку внешнего интерфейса, указываем IP-адрес и префикс сети, а также добавляем описание для удобства определения сетей.
1 | set interfaces ethernet eth0 address 195.209.55.111/24 |
Настройка локального интерфейса
По аналогии с предыдущей командой выполняем настройку локального интерфейса.
1 | set interfaces ethernet eth1 address 192.168.5.111/24 |
Задаем системный шлюз
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 | set nat source rule 100 outbound-interface eth0 |
Настраиваем DHCP сервер
Включаем DHCP сервер для локальной сети и указываем диапазон адресов, который будет выдаваться устройствам. Задаем параметры маршрутизатора, DNS-сервера, имя локального домена и период аренды IP-адреса (в секундах).
1 | set service dhcp-server shared-network-name DevBogachevLAN authoritative enable |
Статическое назначение IP адресов по MAC-адресу используя DHCP
Одна из главных особенностей, которая требуется мне - это назначение IP-адресов по заранее подготовленной связке IP-MAC.
Для статического назначения IP-адресов в DHCP используется стандартный алгоритм привязки MAC адреса к IP адресу.
В данном примере сервер TestServer
с mac-адресом 52:54:00:15:3f:03
статически привязываем к IP адресу 192.168.5.101
:
1 | set service dhcp-server shared-network-name DevBogachevLAN subnet 192.168.5.0/24 static-mapping TestServer ip-address 192.168.5.101 |
DNS Forwarding
Используем переадресацию DNS, чтобы маршрутизатор функционировал как DNS-сервер для локальной сети. Указываем DNS-сервера, количество кэширующих запросов и интерфейс, на котором будет работать DNS Forwarding.
VyOS может кэшировать и перенаправлять DNS ответы от других DNS серверов, а так же иметь свой набор статических DNS записей. Количество кэшируемых DNS запросов указываем ноль, в этом случае запросы не будут кэшироваться, а каждый раз будут запрашиваться.
1 | set service dns forwarding name-server 8.8.8.8 |
Или используем системные настройки 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 | set vpn ipsec ipsec-interfaces interface eth0 |
Приступаем к настройке L2TP туннеля
Прежде всего указываем внешний адрес для подключения, а так же диапазон адресов, который будет выдаваться клиентам VPN. Для осуществления подключения будет использоваться PSK-ключ. Включаем данный режим в директиве ipsec-settings authentication
и задаем PSK-ключ.
Для аутентификации клиентов будет использоваться локальная база клиентов. Создаем пользователя с именем TestUser
и паролем TestPassword
.
1 | set vpn l2tp remote-access outside-address 195.209.55.111 |
Рекомендуется использовать внешний DNS-сервер, в противном случае для VPN клиентов используется DNS Forwarding, и нужно для каждого соединения L2TP опубликовать сервис DNS Forwarding. Нельзя выполнить настройку сразу для всех интерфейсов, поэтому придется сначала добавить всех пользователей, а уже потом добавлять DNS Forwarding.
1 | set service dns forwarding listen-on l2tp0 |
Если для клиента 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 | set nat source rule 110 outbound-interface eth0 |
Создание правил NAT для L2TP полностью аналогично настройке NAT для внутренней сети.
После выполнения всего вышеперечисленного подтверждаем внесенные изменения командой commit
и сохраняем конфигурацию.
1 | commit |
Проверяем выполненную настройку.