...
| Блок кода |
|---|
esr(config)# object-group network pptp_remote esr(config-object-group-network)# ip address-range 10.10.10.5-10.10.10.25 esr(config-object-group-network)# exit |
Scroll Pagebreak
Создадим профиль адресов, содержащий адреса, которые будут использовать удаленные пользователи:
...
| Блок кода |
|---|
esr# show remote-access counters pptp server remote-workers |
| Scroll Pagebreak |
|---|
Очистить счетчики сессий PPTP-сервера можно командой:
...
- Настроить подключение к RADIUS-серверу;
- Настроить зоны для интерфейсов te1/0/1 и gi1/0/1;
- Указать IP-адреса для интерфейсов te1/0/1 и te1/0/1.
...
Создадим профиль адресов, содержащий адрес локального шлюза:
| Блок кода |
|---|
esr(config)# object-group network l2tp_local esr(config-object-group-network)# ip address-range 10.10.10.1 esr(config-object-group-network)# exit |
| Scroll Pagebreak |
|---|
Создадим профиль адресов, содержащий DNS-серверы:
...
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
1 | Создать профиль OpenVPN-сервера. | esr(config)# remote-access openvpn <NAME> | <NAME> – имя профиля OpenVPN-сервера, задаётся строкой до 31 символа. |
2 | Указать описание конфигурируемого сервера (необязательно). | esr(config-openvpn-server)# description <DESCRIPTION> | <DESCRIPTION> – описание OpenVPN-сервера, задаётся строкой до 255 символов. |
3 | Указать подсеть, из которой выдаются IP-адреса пользователям (только для tunnel ip). | esr(config-openvpn-server)# network <ADDR/LEN> | <ADDR/LEN> – адрес подсети, имеет следующий формат: AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [16..29]. |
4 | Указать инкапсулируемый протокол. | esr(config-openvpn-server)# protocol <PROTOCOL> | <PROTOCOL> – тип инкапсуляции, возможные значения:
|
5 | Определить тип соединения с частной сетью через OpenVPN-сервер. | esr(config-openvpn-server)# tunnel <TYPE> | <TYPE> – инкапсулирующий протокол, принимает значения:
|
6 | Указать список IP-адресов, из которого OpenVPN-сервером выдаются динамические IP-адреса удаленным пользователям в режиме L2 (только для tunnel ethernet). | esr(config-openvpn-server)# address-range <FROM-ADDR>-<TO-ADDR> | <FROM-ADDR> – начальный IP-адрес диапазона, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <TO-ADDR> – конечный IP-адрес диапазона, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
7 | Включить клиентские соединения по OpenVPN в L2-домен (только для tunnel ethernet). | esr(config-openvpn-server)# bridge-group <BRIDGE-ID> | <BRIDGE-ID> – идентификационный номер моста. |
8 | Указать сертификаты и ключи. | esr(config-openvpn-server)# crypto <CERTIFICATE-TYPE> <NAME> | <CERTIFICATE-TYPE> – тип сертификата или ключа, может принимать следующие значения:
<NAME> – имя сертификата или ключа, задаётся строкой до 31 символа. |
| 9 | Указать контейнер PKCS12 (необязательно.) Примечание: контейнер обязательно должен включать в себя сертификат удостоверяющего центра, публичный сертификат сервера и приватный ключ сервера. Применение сертификатов или контейнера является взаимоисключающим, т. е. необходимо указывать или сертификаты, или контейнер. | esr(config-openvpn-server)# crypto pfx <NAME> [password ascii-text <PASSWORD>] | <NAME> – имя PKCS12-контейнера, задаётся строкой до 31 символа. <PASSWORD> – пароль от PKCS12-контейнера. |
10 | Выбрать алгоритм шифрования, используемый при передачи данных. | esr(config-openvpn-server)# encryption algorithm <ALGORITHM> | <ALGORITHM> – идентификатор протокола шифрования, принимает значения: 3des,blowfish128, aes128. |
11 | Включить OpenVPN-сервер в зону безопасности и настроить правила взаимодействия между зонами (см. раздел Конфигурирование Firewall). | esr(config-openvpn-server)# security-zone <NAME> | <NAME> – имя зоны безопасности, задаётся строкой до 31 символа. |
12 | Определить дополнительные параметры для указанного пользователя OpenVPN-сервера (при использовании локальной базы для аутентификации пользователей). | esr(config-openvpn-server)# username < NAME > | <NAME> – имя пользователя, задаётся строкой до 31 символа. |
13 | Определить подсеть для указанного пользователя OpenVPN-сервера. | esr(config-openvpn-user)# subnet <ADDR/LEN> | <ADDR/LEN> – адрес подсети, имеет следующий формат: |
14 | Определить статический IP-адрес для указанного пользователя OpenVPN-сервера. | esr(config-openvpn-user)# ip address <ADDR> | <ADDR> – адрес имеет следующий формат: |
15 | Включить профиль OpenVPN-сервера. | esr(config-openvpn-server)# enable | |
16 | Включить блокировку передачи данных между клиентами (необязательно). | esr(config-openvpn-server)# client-isolation | |
17 | Устанавливается максимальное количество одновременных пользовательских сессий (необязательно). | esr(config-openvpn-server)# client-max <VALUE> | <VALUE> – максимальное количество пользователей, принимает значения [1..65535]. |
18 | Включается механизм сжатия передаваемых данных между клиентами и сервером OpenVPN (необязательно). | esr(config-openvpn-server)# compression | |
19 | Указать список DNS-серверов, которые будут использовать удаленные пользователи (необязательно). | esr(config-openvpn-server)# dns-server <ADDR> | <ADDR> – IP-адрес DNS-сервера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; |
20 | Указать TCP-/UDP-порт, который будет прослушиваться OpenVPN-сервером (необязательно). | esr(config-openvpn-server)# port <PORT> | <PORT> – TCP-/UDP-порт, принимает значения [1..65535]. Значение по умолчанию: 1194. |
21 | Включить анонсирование маршрута по умолчанию для OpenVPN-соединений, что приводит к замене маршрута по умолчанию на клиентской стороне (необязательно). | esr(config-openvpn-server)# redirect-gateway | |
22 | Включить анонсирование указанных подсетей, шлюзом является IP-адрес OpenVPN-сервера (необязательно). | esr(config-openvpn-server)# route <ADDR/LEN> | <ADDR/LEN> – адрес подсети, имеет следующий формат: AAA.BBB.CCC.DDD/EE – IP-адрес подсети с маской в форме префикса, где AAA-DDD принимают значения [0..255] и EE принимает значения [1..32]. |
23 | Указать временной интервал, по истечению которого встречная сторона считается недоступной (необязательно). | esr(config-openvpn-server)# timers holdtime <TIME> | <TIME> – время в секундах, принимает значения [2..65535]. Значение по умолчанию: 120. |
24 | Указать временной интервал, по истечению которого идет проверка соединения со встречной стороной (необязательно). | esr(config-openvpn-server)# timers keepalive <TIME> | <TIME> – время в секундах, принимает значения [1..65535]. Значение по умолчанию: 10. |
25 | Разрешить подключаться к OpenVPN-серверу нескольким пользователям с одним сертификатом. | esr(config-openvpn-server)# duplicate-cn | |
26 | Указать список WINS-серверов, которые будут использовать удаленные пользователи (необязательно). | esr(config-openvpn-server)# wins-server <ADDR> | <ADDR> – IP-адрес WINS-сервера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
| 27 | Изменить алгоритм аутентификации OpenVPN-клиентов (необязательно). | esr(config-openvpn-server)# authentication algorithm <ALGORITHM> | <ALGORITHM> – алгоритм аутентификации:
Значение по умолчанию: sha. |
...
| Блок кода |
|---|
esr(config-openvpn)# crypto dh dh.pem esr(config-openvpn)# crypto ta ta.key esr(config-openvpn)# crypto pfx pfx.p12 |
| Scroll Pagebreak |
|---|
Укажем зону безопасности, к которой будут относиться сессии пользователей:
...
| Блок кода |
|---|
esr# show remote-access counters openvpn server AP |
...
Очистить счетчики сессий OpenVPN-сервера можно командой:
...
Настройка сервера удаленного доступа к корпоративной сети по WireGuard-протоколу
WireGuard – простой, быстрый и современный VPN, использующий современную криптографию (ChaCha20, Poly1305, Curve25519, BLAKE2s, SipHash24, HKDF). WireGuard надежно инкапсулирует IP-пакеты поверх UDP. В основе WireGuard лежит концепция под названием «Маршрутизация криптоключей», которая работает путем связывания открытых ключей со списком IP-адресов туннеля, разрешенным находиться внутри туннеля. Каждый сетевой интерфейс имеет закрытый ключ и список пиров. У каждого узла есть открытый ключ. Открытые ключи короткие и простые и используются узлами для аутентификации друг друга. Их можно передавать для использования в файлах конфигурации любым внешним методом аналогично тому, как можно отправить открытый ключ SSH для доступа к серверу.
Алгоритм настройки
| Якорь | ||||
|---|---|---|---|---|
|
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
1 | Создать профиль WireGuard-сервера. | esr(config)# remote-access wireguard <NAME> | <NAME> – имя профиля WireGuard-сервера, задаётся строкой до 31 символа. |
2 | Указать описание конфигурируемого сервера (необязательно). | esr(config-wireguard-server)# description <DESCRIPTION> | <DESCRIPTION> – описание WireGuard-сервера, задаётся строкой до 255 символов. |
3 | Определить статический IP-адрес конфигурируемого сервера. | esr(config-wireguard-server)# local-address <ADDR/LEN> | <ADDR/LEN> – IP-адрес и длина маски подсети, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32]. |
| 4 | Указать UDP-порт, который будет прослушиваться WireGuard-сервером (необязательно). | esr(config-wireguard-server)# port <PORT> | <PORT> – UDP-порт, принимает значения [1..65535]. |
| 5 | Отключить функции Firewall или включить WireGuard-сервер в зону безопасности и настроить правила взаимодействия между зонами (см. раздел Конфигурирование Firewall). | esr(config-wireguard-server)# ip firewall disable | |
| esr(config-wireguard-server)# security-zone <NAME> | <NAME> – имя зоны безопасности, задаётся строкой до 31 символа. | ||
| 6 | Задать MTU (необязательно). | esr(config-wireguard-server)# mtu <MTU> | <MTU> – 552–10000. Значение по умолчанию: 1500. |
| 7 | Указать приватный ключ WireGuard-сервера. | esr(config-wireguard-server)# private-key <NAME> | <NAME> – имя приватного ключа, задаётся строкой до 31 символа. |
| 8 | Включить профиль WireGuard-сервера. | esr(config-wireguard-server)# enable | |
| 9 | Перейти к настройке разрешённых туннелей WireGuard-сервера. | esr(config-wireguard-server)# peer <COUNT> | <COUNT> – номер соответствующего пира, принимает значения [1..16]. |
| 10 | Указать описание туннеля (необязательно). | esr(config-wireguard-server-peer)# description <DESCRITPION> | <DESCRIPTION> – описание WireGuard-сервера, задаётся строкой до 255 символов. |
| 11 | Указать публичный ключ туннеля. | esr(config-wireguard-server-peer)# public-key <NAME> | <NAME> – имя публичного ключа, задаётся строкой до 31 символа. |
| 12 | Указать список IP-адресов, которым будет разрешено находиться внутри туннеля. | esr(config-wireguard-server-peer)# access-addresses <TYPE> | <TYPE> – <TYPE> – тип аргумента, устанавливаемый в качестве адреса:
<FROM-ADDR> – начальный IP-адрес диапазона; <OBJ-GROUP-NAME> – имя профиля IP-адресов, задаётся строкой до 31 символа; <ADDR/LEN> – IP-адрес и маска подсети. |
| 13 | Включить туннель. | esr(config-wireguard-server-peer)# enable |
Пример настройки
Задача:
Настроить WireGuard-сервер на маршрутизаторе для подключения удаленных пользователей к ЛВС.
- адресация внутри туннеля – 10.10.10.0/24;
- порт подключения к серверу – 43020;
- адрес WireGuard-сервера внутри туннеля – 10.10.10.1.
Решение:
Предварительно нужно выполнить следующие действия:
- загрузить на ESR приватный ключ сервера и публичный ключ клиента;
- создать object-group network, в которой будет указан список IP-адресов, которым будет разрешено проходить через туннель.
Импортируйте по tftp приватный ключ сервера и публичный ключ клиента:
| Блок кода |
|---|
esr# copy tftp://192.168.16.10:/server.priv crypto:private-key/server.priv esr# copy tftp://192.168.16.10:/client.pub crypto:public-key/client.pub |
Создайте object-group network, в которой будет указан список IP-адресов, которым будет разрешено проходить через туннель:
| Блок кода |
|---|
esr(config)# object-group network client_wg esr(config-object-group-network)# ip address-range 10.10.10.2 |
Создайте профиль WireGuard-сервера, задайте локальный адрес сервера, порт для прослушивания и выставьте MTU:
| Блок кода |
|---|
esr(config)# remote-access wireguard WG esr(config-wireguard-server)# local-address 10.10.10.1/24 esr(config-wireguard-server)# port 43020 esr(config-wireguard-server)# mtu 1420 |
Укажите приватный ключ сервера и отключите Firewall:
| Блок кода |
|---|
esr(config-wireguard-server)# private-key server.priv esr(config-wireguard-server)# ip firewall disable |
Перейдите в настройки разрешённого туннеля, укажите связку публичного ключа клиента и разрешённого IP-адреса:
| Блок кода |
|---|
esr(config-wireguard-server)# peer 1 esr(config-wireguard-server-peer)# public-key client.pub esr(config-wireguard-server-peer)# access-addresses object-group client_wg |
Включите туннель и WireGuard-сервер:
| Блок кода |
|---|
esr(config-wireguard-server-peer)# enable esr(config-wireguard-server-peer)# exit esr(config-wireguard-server)# enable |
После применения конфигурации маршрутизатор будет прослушивать порт 43020.
Счётчики сессий WireGuard-сервера можно посмотреть командой:
| Блок кода |
|---|
esr# show remote-access counters wireguard server WG |
| Scroll Pagebreak |
|---|
Очистить счётчики сессий WireGuard-сервера можно командой:
| Блок кода |
|---|
esr# clear remote-access counters wireguard server WG |
Конфигурацию WireGuard-сервера можно посмотреть командой:
| Блок кода |
|---|
esr# show remote-access configuration wireguard WG |
...
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
1 | Создать PPPoE-туннель и перейти в режим конфигурирования PPPoE-клиента. | esr(config)# tunnel pppoe <PPPoE> | <PPPoE> – порядковый номер туннеля от 1 до 10. |
2 | Указать описание конфигурируемого клиента (необязательно). | esr(config-pppoe)# description <DESCRIPTION> | <DESCRIPTION> – описание PPPoE-туннеля, задаётся строкой до 255 символов. |
3 | Указать имя экземпляра VRF, в котором будут использоваться PPPoE-клиент (необязательно). | esr(config-pppoe)# ip vrf forwarding <VRF> | <VRF> – имя VRF, задается строкой до 31 символа. |
4 | Указать интерфейс, через который будет устанавливаться PPPoE соединение. | esr(config-pppoe)# interface <IF> | <IF> – интерфейс или группа интерфейсов. |
5 | Указать имя пользователя и пароль для подключения к PPPoE-серверу. | esr(config-pppoe)# username <NAME> password ascii-text | <NAME> – имя пользователя, задаётся строкой до 31 символа; <CLEAR-TEXT> – пароль, задаётся строкой [8 .. 64] символов; <ENCRYPTED-TEXT> – зашифрованный пароль, задаётся строкой [16..128] символов. |
6 | Включить PPPoE-туннель в зону безопасности и настроить правила взаимодействия между зонами (см. раздел Конфигурирование Firewall). | esr(config-pppoe)# security-zone <NAME> | <NAME> – имя зоны безопасности, задаётся строкой до 31 символа. |
7 | Активировать конфигурируемый профиль. | esr(config-pppoe)# enable | |
8 | Указать метод аутентификации (необязательно). | esr(config-pppoe)# authentication method <METHOD> | <METHOD> – метод аутентификации, возможные значения: chap, mschap, mschap-v2, eap, pap. Значение по умолчанию: chap. |
9 | Игнорировать dns-сервер через данный PPoE-туннель (необязательно). | esr(config-pppoe)# ignore nameserver | |
10 | Включить отказ от получения маршрута по умолчанию от PPPoE-сервера (необязательно). | esr(config-pppoe)# ignore-default-route | |
11 | Указать интервал времени, за который усредняется статистика о нагрузке (необязательно). | esr(config-pppoe)# load-average <TIME> | <TIME> – интервал времени в секундах от 5 до 150 (по умолчанию 5 с). |
12 | Указать размер MTU (MaximumTransmitionUnit) для PPPoE-туннеля. | esr(config-pppoe)# mtu <MTU> | <MTU> – значение MTU, принимает значения в диапазоне [552..1500]. Значение по умолчанию: 1500. |
| 13 | Изменить количество неудачных data-link тестов перед разрывом сессии (необязательно). | esr(config-pppoe)# ppp failure-count <NUM> | <NUM> – количество неудачных data-link тестов, задается в диапазоне [1..100]. Значение по умолчанию: 10. |
14 | Изменить интервал времени в секундах, по истечении которого маршрутизатор отправляет keepalive-сообщение (необязательно). | esr(config-pppoe)# ppp timeout keepalive <TIME > | <TIME> – время в секундах, задается в диапазоне [1..32767]. Значение по умолчанию: 10. |
| 15 | Переопределить значение поля MSS (Maximum segment size) во входящих TCP-пакетах (необязательно). | esr(config-pppoe)# ip tcp adjust-mss <MSS> | <MSS> – значение MSS, принимает значения в диапазоне [500..1460]. Значение по умолчанию: 1460. |
| 16 | Включить запись статистики использования текущего туннеля (необязательно). | esr(config-pppoe)# history statistics | |
Также для PPPoE-клиента возможно настроить:
| |||
...
Пример настройки
Задача:
Настроить PPPoE-клиент на маршрутизаторе.
...
| Блок кода |
|---|
esr# configure esr(config)# tunnel pppoe 1 esr(config-pppoe)# username tester password ascii-text password |
| Scroll Pagebreak |
|---|
Укажем интерфейс, через который будет устанавливаться PPPoE-соединение:
...
| Блок кода |
|---|
esr(config-pppoe)# security-zone untrust |
...
Опционально для PPPoE-туннеля можно указать следующие параметры:
...
| Блок кода |
|---|
esr# show tunnels counters pppoe 1 |
| Scroll Pagebreak |
|---|
Конфигурацию PPPoE-туннеля можно посмотреть командой:
...
| Блок кода |
|---|
esr(config-pptp)# remote address 20.20.0.1 |
| Scroll Pagebreak |
|---|
...
| Блок кода |
|---|
esr(config-pptp)# enable |
| Scroll Pagebreak |
|---|
Состояние туннеля можно посмотреть командой:
...
| Блок кода |
|---|
esr(config)# object-group network server_wg esr(config-object-group-network)# ip address-range 10.10.10.1 |
Создадим WireGuard-туннель, зададим локальный адрес и выставим MTU:
...
