Оглавление | ||
---|---|---|
|
Настройка сервера удаленного доступа к корпоративной сети по PPTP-протоколу
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Создать профиль PPTP-сервера. | esr(config)# remote-access pptp <NAME> | <NAME> – имя профиля PPTP-сервера, задаётся строкой до 31 символа. |
2 | Указать описание конфигурируемого сервера (не обязательно). | esr(config-pptp-server)# description <DESCRIPTION> | <DESCRIPTION> – описание PPTP-сервера, задаётся строкой до 255 символов. |
3 | Указать IP-адрес, который должен обрабатывать PPTP-сервер. | esr(config-pptp-server)# outside-address | <OBJ-GROUP-NETWORK-NAME> – имя профиля, содержащего IP-адрес, который должен слушать PPTP-сервер, задаётся строкой до 31 символа; <ADDR> – начальный IP-адрес диапазона, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <IF> – тип и идентификатор интерфейса маршрутизатора; <TUN> – тип и номер туннеля маршрутизатора. |
4 | Указать IP-адрес локального шлюза. | esr(config-pptp-server)# local-address | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, который содержит IP-адрес локального шлюза, задаётся строкой до 31 символа; <ADDR> – начальный IP-адрес диапазона, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
5 | Указать список IP-адресов, из которого PPTP выдаются динамические IP-адреса удаленным пользователям. | esr(config-pptp-server)# remote-address | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, который содержит список IP-адресов удаленных пользователей, задаётся строкой до 31 символа; <FROM-ADDR> – начальный IP-адрес диапазона, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]; <TO-ADDR> – конечный IP-адрес диапазона, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
6 | Выбрать режим аутентификации PPTP-клиентов. | esr(config-pptp-server)# authentication mode |
|
7 | Разрешить необходимые методы аутентификации удаленных пользователей. | esr(config-pptp-server)# authentication method <METHOD> | <METHOD> – метод аутентификации, принимает значения [chap, mschap, mschap-v2, eap, pap]. По умолчанию разрешен только chap. |
8 | Указать имя пользователя (при использовании локальной аутентификации пользователей). | esr(config-pptp-server) username < NAME > | <NAME> – имя пользователя, задаётся строкой до 12 символов. |
9 | Указать пароль пользователя (при использовании локальной аутентификации пользователей). | esr(config-pptp-user) password ascii-text | <PASSWORD> – пароль пользователя, задается строкой до 32 символов. |
10 | Активировать пользователя (при использовании локальной аутентификации пользователей). | esr(config-pptp-user) enable | |
11 | Включить PPTP-сервер в зону безопасности и настроить правила взаимодействия между зонами или отключить firewall (см. раздел Конфигурирование Firewall). | esr(config-pptp-server)# security-zone <NAME> | <NAME> – имя зоны безопасности, задаётся строкой до 31 символа. |
12 | Включить сервер. | esr(config-pptp-server)# enable | |
13 | Указать DSCP-приоритет исходящих пакетов (не обязательно). | esr(config-pptp-server)# dscp <DSCP> | <DSCP>– dscp-приоритет исходящих пакетов [0..63]. |
14 | Включить шифрование MPPE для PPTP-соединений (не обязательно). | esr(config-pptp-server)# encryption mppe | |
15 | Указать размер MTU (MaximumTransmitionUnit) для сервера (не обязательно). | esr(config-pptp-server) mtu <MTU> | <MTU> – значение MTU, принимает значения в диапазоне [1280..1500]. Значение по умолчанию: 1500. |
16 | Указать список DNS-серверов, которые будут использовать удаленные пользователи (не обязательно). | esr(config-pptp-server)# dns-servers | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего адреса необходимых DNS-серверов, задаётся строкой до 31 символа. |
17 | Указать список WINS-серверов, которые будут использовать удаленные пользователи (не обязательно). | esr(config-pptp-server)# wins-servers object-group | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего адреса необходимых WINS-серверов, задаётся строкой до 31 символа. |
Scroll Pagebreak |
---|
Задача:
Настроить PPTP-сервер на маршрутизаторе.
...
Блок кода |
---|
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 |
...
Создадим профиль адресов, содержащий адреса, которые будут использовать удаленные пользователи:
Блок кода |
---|
esr(config)# object-group network pptp_dns
esr(config-object-group-network)# ip address-range 8.8.8.8,8.8.8.4
esr(config-object-group-network)# exit |
Создадим PPTP-сервер и привяжем вышеуказанные профили:
...
Блок кода |
---|
esr# clear remote-access session pptp username fedor esr# clear remote-access session pptp server remote-workers username fedor |
Scroll Pagebreak |
---|
Блок кода |
---|
esr# show remote-access configuration pptp remote-workers |
Примечание |
---|
Помимо создания PPTP-сервера необходимо в firewall открыть TCP-порт 1723 для обслуживания соединений и разрешить протокол GRE(47) для туннельного трафика. |
Настройка сервера удаленного доступа к корпоративной сети по L2TP over IPsec протоколу
...
Блок кода |
---|
esr# show remote-access configuration l2tp remote-workers |
Примечание |
---|
Помимо создания L2TP-сервера необходимо в firewall открыть UDP-порты 500, 1701, 4500 для обслуживания соединений и разрешить протоколы ESP (50) и GRE (47) для туннельного трафика. |
Настройка сервера удаленного доступа к корпоративной сети по OpenVPN-протоколу
...
Шаг | Описание | Команда | Ключи |
---|---|---|---|
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 | Или указать контейнер pkcs 12контейнер 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> – время в секундах, принимает значения [12..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. |
...
- подсеть OpenVPN-сервера – 10.10.100.0/24;
- режим – L3;
- аутентификация на основе сертификатов.
Scroll Pagebreak |
---|
Предварительно нужно выполнить следующие действия:
- Подготовить сертификаты и ключи:
- Сертификат Удостоверяющего Центра (СА),
- Ключ и сертификат для OpenVPN-сервера,
- Ключ Диффи-Хэллмана и HMAC для TLS.
ИЛИ
- Контейнер PKSC12, содержащий в себе сертификат Удостоверяющего Центра (СА) и ключ и сертификат для OpenVPN-туннеля.
- Настроить зону для интерфейса te1/0/1.
- Указать IP-адреса для интерфейса te1/0/1.
Импортируем по tftp сертификаты и ключи:
Блок кода |
---|
esr# copy tftp://192.168.16.10:/ca.crt crypto:cert/ca.crt esr# copy tftp://192.168.16.10:/dh.pem crypto:dh/dh.pem esr# copy tftp://192.168.16.10:/server.key crypto:private-key/server.key esr# copy tftp://192.168.16.10:/server.crt crypto:cert/server.crt esr# copy tftp://192.168.16.10:/ta.key crypto:ta/ta.key |
Или импортируем PKCS12-контейнер:
Блок кода |
---|
esr# copy tftp://192.168.0.1:/container.p12 crypto:pfx/cont.p12 |
...
Объявим подсети ЛВС, которые будут доступны через OpenVPN-соединение и укажем DNS-сервер:
...
Блок кода |
---|
esr(config-openvpn)# crypto ca ca.crt esr(config-openvpn)# crypto dh dh.pem esr(config-openvpn)# crypto private-key server.key esr(config-openvpn)# crypto cert server.crt esr(config-openvpn)# crypto ta ta.key |
Или укажем импортированный контейнер, DH и TA ключи указываются:
Блок кода |
---|
esr(config-openvpn)# crypto dh dh.pem esr(config-openvpn)# crypto ta ta.key esr(config-openvpn)# crypto pfx pfx.p12 |
...
Блок кода |
---|
esr(config-openvpn)# encryption algorithm aes128 |
Scroll Pagebreak |
---|
...
Блок кода |
---|
esr# show remote-access counters openvpn server AP |
Scroll Pagebreak |
---|
Очистить счетчики сессий OpenVPN-сервера можно командой:
...
Блок кода |
---|
esr# show remote-access configuration openvpn AP |
Примечание |
---|
Помимо создания OpenVPN-сервера необходимо в firewall открыть TCP-порт 1194. |
Настройка сервера удаленного доступа к корпоративной сети по WireGuard-протоколу
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 | Указать список DNS-серверов, которые будут использовать удаленные пользователи (не обязательно). | esr(config-wireguard-server)# dns-server <ADDR | ADDR, ADDR> | <ADDR | ADDR, ADDR> – IP-адрес или IP-адреса DNS-сервера, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. Можно указать до двух DNS-серверов. |
9 | Включить профиль WireGuard-сервера. | esr(config-wireguard-server)# enable | |
10 | Перейти к настройке разрешённых туннелей WireGuard-сервера. | esr(config-wireguard-server)# peer <COUNT> | <COUNT> – номер соответствующего пира, принимает значения [1..16]. |
11 | Указать описание туннеля (не обязательно). | esr(config-wireguard-server-peer)# description <DESCRITPION> | <DESCRIPTION> – описание WireGuard-сервера, задаётся строкой до 255 символов. |
12 | Указать публичный ключ туннеля (обязательно). | esr(config-wireguard-server-peer)# public-key <NAME> | <NAME> – имя публичного ключа, задаётся строкой до 31 символа. |
13 | Указать список IP-адресов, которым будет разрешено находиться внутри туннеля (обязательно). | esr(config-wireguard-server-peer)# subnet <OBJ-GROUP-NETWORK-NAME> | <OBJ-GROUP-NETWORK-NAME> – имя профиля IP-адресов, содержащего префиксы подсетей назначения, задается строкой до 31 символа. |
14 | Включить туннель (обязательно). | esr(config-wireguard-server-peer)# enable |
Пример настройки
Задача:
Настроить WireGuard-сервер на маршрутизаторе для подключения удаленных пользователей к ЛВС.
- адресация внутри туннеля – 10.10.10.0/24;
- порт подключения к серверу – 43020;
- адрес WireGuard-сервера внутри туннеля – 10.10.10.1;
- DNS-серверы: 8.8.8.8, 8.8.8.4.
Scroll Pagebreak |
---|
Решение:
Предварительно нужно выполнить следующие действия:
- загрузить на 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)# subnet 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 |
Настройка клиента удаленного доступа по протоколу PPPoE
PPPoE — – это туннелирующий протокол (tunneling protocol), который позволяет инкапсулировать IP PPP через соединения Ethernet и обладает программными возможностями PPP-соединений, что позволяет использовать его для виртуальных соединений на соседнюю Ethernet-машину и устанавливать соединение точка-точка, которое используется для транспортировки IP-пакетов, а также работает с возможностями PPP. Это позволяет применять традиционное PPP-ориентированное ПО для настройки соединения, которое использует не последовательный канал, а пакетно-ориентированную сеть (например, Ethernet), чтобы организовать классическое соединение с логином и паролем для Интернет-соединений. Кроме того, IP-адрес по другую сторону соединения назначается, только когда PPPoE-соединение открыто, позволяя динамическое переиспользование IP-адресов.
...
- Учетные записи для подключения – tester;
- Пароли учетных записей – password;
- Подключение должно осуществляться с интерфейса gigabitethernet 1/0/7.
Примечание |
---|
ИнтерфейсИнтерфейс, с которого будет осуществляться РРРоЕ-соединение, должен работать в режиме routerport (кроме случаев использования bridge). |
Решение:
Предварительно должен быть настроен PPPoE-сервер с соответствующими учетными записями. Также на устройстве должны быть настроены зоны безопасности и описаны правила их взаимодействия.
...
Блок кода |
---|
esr# show tunnels configuration l2tp |
Настройка клиента удаленного доступа по протоколу WireGuard
WireGuard — простой, быстрый и современный VPN, использующий современную криптографию (ChaCha20, Poly1305, Curve25519, BLAKE2s, SipHash24, HKDF). WireGuard надежно инкапсулирует IP-пакеты поверх UDP. В основе WireGuard лежит концепция под названием «Маршрутизация криптоключей», которая работает путем связывания открытых ключей со списком IP-адресов туннеля, которым разрешено находиться внутри туннеля. Каждый сетевой интерфейс имеет закрытый ключ и список пиров. У каждого узла есть открытый ключ. Открытые ключи короткие и простые и используются узлами для аутентификации друг друга. Их можно передавать для использования в файлах конфигурации любым внешним методом, аналогично тому, как можно отправить открытый ключ SSH для доступа к серверу.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
---|---|---|---|
1 | Создать WireGuard-туннель и перейти в режим его конфигурирования. | esr(config)# tunnel wireguard <INDEX> | <INDEX> – идентификатор туннеля в диапазоне: [1..16]. |
2 | Указать экземпляр VRF, в котором будет работать данный Wireguard-туннель (не обязательно). | esr(config-wireguard)# ip vrf forwarding <VRF> | <VRF> – имя VRF, задаётся строкой до 31 символа. |
3 | Указать описание конфигурируемого туннеля (не обязательно). | esr(config-wireguard)# description <DESCRIPTION> | <DESCRIPTION> – описание туннеля, задается строкой до 255 символов. |
4 | Включить Wireguard-туннель в зону безопасности и настроить правила взаимодействия между зонами или отключить firewall (см. раздел Конфигурирование Firewall). | esr(config-wireguard)# security-zone <NAME> | <NAME> – имя зоны безопасности, задаётся строкой до 31 символа. |
esr(config-wireguard)# ip firewall disable | |||
5 | Определить статический IP-адрес конфигурируемого туннеля (обязательно). | esr(config-wireguard)# ip address <ADDR/LEN> | <ADDR/LEN> – IP-адрес и длина маски подсети, задаётся в виде AAA.BBB.CCC.DDD/EE, где каждая часть AAA – DDD принимает значения [0..255] и EE принимает значения [1..32]. |
6 | Задать MTU (не обязательно). | esr(config-wireguard)# mtu <MTU> | <MTU> – 552–10000. Значение по умолчанию: 1500. |
7 | Указать приватный ключ WireGuard-клиента (обязательно). | esr(config-wireguard)# private-key <NAME> | <NAME> – имя приватного ключа, задается строкой до 31 символа. |
8 | Перейти к настройке разрешенных пиров | esr(config-wireguard)# peer <COUNT> | <COUNT> – номер соответствующего пира, принимает значения [1..16]. |
9 | Указать описание пира (не обязательно). | esr(config-wireguard-tunnel-peer)# description <DESCRIPTION> | <DESCRIPTION> – описание туннеля, задается строкой до 255 символов. |
10 | Задать значение keepalive (не обязательно). | esr(config-wireguard-tunnel-peer)# keepalive timeout <SEC> | <SEC> – количество секунд, принимает значения [1..32767]. |
11 | Указать публичный ключ WireGuard-пира (обязательно). | esr(config-wireguard-tunnel-peer)# public-key <NAME> | <NAME> – имя приватного ключа, задается строкой до 31 символа. |
12 | Указать IP-адрес удаленного пира (обязательно). | esr(config-wireguard-tunnel-peer)# remote address <ADDR> | <ADDR> – IP-адрес локального шлюза, задается в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
13 | Указать UDP-порт удаленного пира (обязательно) | esr(config-wireguard-tunnel-peer)# remote port <PORT> | <PORT>– UDP-порт, принимает значения [1..65535]. |
14 | Указать список IP-адресов, которым будет разрешено находиться внутри туннеля (обязательно). | esr(config-wireguard-tunnel-peer)# subnet <OBJ-GROUPNETWORK-NAME> | <OBJ-GROUP-NETWORKNAME> – имя профиля IPадресов, содержащего префиксы подсетей назначения, задается строкой до 31 символа. |
15 | Активировать пир (обязательно). | esr(config-wireguard-tunnel-peer)# enable | |
16 | Активировать туннель. | esr(config-wireguard)# enable | |
17 | Задать интервал времени, за который усредняется статистика о нагрузке на туннель (не обязательно). | esr(config-wireguard)# load-average <TIME> | <TIME> – интервал в секундах, принимает значения [5..150] Значение по умолчанию: 5. |
18 | Включить запись статистики использования текущего туннеля (не обязательно). | esr(config-wireguard)# history statistics |
Пример настройки
Задача:
Настроить WireGuard-клиента на маршрутизаторе:
- адресация внутри туннеля – 10.10.10.0/24;
- порт подключения к серверу – 43020;
- адрес WireGuard-клиента внутри туннеля – 10.10.10.2;
- адрес удаленного сервера – 178.47.26.133.
Drawio | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Решение:
Предварительно нужно выполнить следующие действия:
- загрузить на ESR приватный ключ клиента и публичный ключ сервера;
- создать object-group network, в которой будет указан список IP-адресов, которым будет разрешено проходить через туннель.
Импортируем по tftp приватный ключ клиента и публичный ключ сервера:
Блок кода |
---|
esr# copy tftp://192.168.16.10:/client.priv crypto:private-key/client.priv
esr# copy tftp://192.168.16.10:/server.pub crypto:public-key/server.pub |
Создадим object-group network, в которой будет указан список IP-адресов, которым будет разрешено проходить через туннель:
Блок кода |
---|
esr(config)# object-group network server_wg
esr(config-object-group-network)# ip address-range 10.10.10.1 |
Создадим WireGuard туннель, зададим локальный адрес и выставим MTU:
Блок кода |
---|
esr(config)# tunnel wireguard 1
esr(config-wireguard)# ip address 10.10.10.2/24
esr(config-wireguard)# mtu 1420 |
Укажем приватный ключ клиента и отключим Firewall:
Блок кода |
---|
esr(config-wireguard)# private-key client.priv
esr(config-wireguard)# ip firewall disable |
Перейдем в настройки разрешённого пира, укажем связку публичного ключа сервера и разрешённого IP-адреса, а также укажем адрес и порт удаленного сервера:
Блок кода |
---|
esr(config-wireguard)# peer 1
esr(config-wireguard-tunnel-peer)# public-key server.pub
esr(config-wireguard-tunnel-peer)# subnet server_wg
esr(config-wireguard-tunnel-peer)# remote address 178.47.26.133
esr(config-wireguard-tunnel-peer)# remote port 43020 |
Scroll Pagebreak |
---|
Включим пир и WireGuard-туннель:
Блок кода |
---|
esr(config-wireguard-tunnel-peer)# enable
esr(config-wireguard-tunnel-peer)# exit
esr(config-wireguard)# enable |
Счётчики сессий WireGuard-туннеля можно посмотреть командой:
Блок кода |
---|
esr# show tunnels counters wireguard 1 |
Очистить счётчики сессий WireGuard-туннеля можно командой:
Блок кода |
---|
esr# clear tunnels counters wireguard 1 |
Конфигурацию WireGuard-туннеля можно посмотреть командой:
Блок кода |
---|
esr# show tunnels configuration wireguard 1 |