...
| Блок кода |
|---|
esr(config)# security zone-pair WAN self esr(config-security-zone-pair)# rule 10 esr(config-security-zone-pair-rule)# description "Permit wireguard-traffic" esr(config-security-zone-pair-rule)# action permit esr(config-security-zone-pair-rule)# match protocol udp esr(config-security-zone-pair-rule)# match destination-port port-range 43020 esr(config-security-zone-pair-rule)# enable esr(config-security-zone-pair-rule)# exit esr(config-security-zone-pair)# rule 100 esr(config-security-zone-pair-rule)# action deny esr(config-security-zone-pair-rule)# enable esr(config-security-zone-pair-rule)# exit esr(config-security-zone-pair)# exit |
| Scroll Pagebreak |
|---|
Создадим правила, разрешающие обращения на 80 порт сервера 10.50.0.10 из туннеля WireGuard:
...
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
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-клиента возможно настроить:
| |||
| Scroll Pagebreak |
|---|
Пример настройки
Задача:
Настроить PPPoE-клиент на маршрутизаторе.
...
| Блок кода |
|---|
esr# configure esr(config)# tunnel pppoe 1 esr(config-pppoe)# username tester password ascii-text password |
...
Укажем интерфейс, через который будет устанавливаться PPPoE-соединение:
...
| Блок кода |
|---|
esr(config-pppoe)# security-zone untrust |
| Scroll Pagebreak |
|---|
Опционально для PPPoE-туннеля можно указать следующие параметры:
...
| Блок кода |
|---|
esr# show tunnels counters pppoe 1 |
...
Конфигурацию PPPoE-туннеля можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels configuration pppoe 1 |
| Scroll Pagebreak |
|---|
Настройка клиента удаленного доступа по протоколу PPTP
...
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
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-peer)# description <DESCRIPTION> | <DESCRIPTION> – описание туннеля, задается строкой до 255 символов. |
10 | Задать значение keepalive (необязательно). | esr(config-wireguard-peer)# keepalive timeout <SEC> | <SEC> – количество секунд, принимает значения [1..32767]. |
| 11 | Указать публичный ключ WireGuard-пира. | esr(config-wireguard-peer)# public-key <NAME> | <NAME> – имя приватного ключа, задается строкой до 31 символа. |
| 12 | Указать pre-shared-key для настраиваемого пира (необязательно). | esr(config-wireguard-peer)# pre-shared-key <TYPE> <WORD> | <TYPE> – тип аргумента, устанавливаемый в качестве симметричного ключа:
<WORD> - вводимый симметричный ключ. В зависимости от типа аргумента имеет длину 32 символа для ascii-text, 44 символа для формата base64 и 64 символа для зашифрованного вида. |
| 13 | Указать IP-адрес удаленного пира. | esr(config-wireguard-peer)# remote address <ADDR> | <ADDR> – IP-адрес локального шлюза, задается в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
| 14 | Указать UDP-порт удаленного пира. | esr(config-wireguard-peer)# remote port <PORT> | <PORT>– UDP-порт, принимает значения [1..65535]. |
| 15 | Указать список IP-адресов, которым будет разрешено находиться внутри туннеля. | esr(config-wireguard-peer)# access-addresses <TYPE> {<FROM-ADDR> - <TO-ADDR> | <OBJ-GROUP-NETWORK-NAME> | <ADDR/LEN>} | <TYPE> – тип аргумента, устанавливаемый в качестве адреса:
<FROM-ADDR> – начальный IP-адрес диапазона; <OBJ-GROUP-NAME> – имя профиля IP-адресов, задаётся строкой до 31 символа; <ADDR/LEN> – IP-адрес и маска подсети. |
| 16 | Активировать пир. | esr(config-wireguard-peer)# enable | |
17 | Активировать туннель. | esr(config-wireguard)# enable | |
18 | Задать интервал времени, за который усредняется статистика о нагрузке на туннель (необязательно). | esr(config-wireguard)# load-average <TIME> | <TIME> – интервал в секундах, принимает значения [5..150] Значение по умолчанию: 5. |
| 19 | Включить запись статистики использования текущего туннеля (необязательно). | esr(config-wireguard)# history statistics |
| Scroll Pagebreak |
|---|
Пример настройки
Задача:
Настроить WireGuard-клиента на маршрутизаторе:
- адресация внутри туннеля – 110.0.0.0/30;
- порт подключения к серверу – 43020;
- адрес WireGuard-клиента внутри туннеля – 110.0.0.2;
- адрес удаленного сервера – 212.0.50.9.
Решение:
Создадим ключевую пару x25519, которая будет использоваться в работе WireGuard:
| Блок кода |
|---|
esr# crypto generate private-key x25519 filename wg_client_private.key esr# crypto generate public-key x25519 private-key wg_client_private.key filename wg_client_public.key |
Для успешной работы необходимо совершить обмен открытыми криптографическими ключами с удаленной стороной любым удобным способом. На данном этапе настройки открытым криптографическим ключом является файл с именем именем wg_client_public.key, который хранится в в crypto:public-key:
| Блок кода |
|---|
esr# show crypto certificates public-key File name -------------------------------------------------------------------------------------------------------------- wg_client_public.key |
...
| Блок кода |
|---|
esr(config)# object-group network WG_SERVERS esr(config-object-group-network)# ip address-range 10.50.0.10-10.50.0.15 |
| Scroll Pagebreak |
|---|
Создадим WireGuard-туннель, зададим локальный адрес и выставим MTU:
...
| Блок кода |
|---|
esr(config-wireguard)# peer 1 esr(config-wireguard-peer)# public-key wg_server_public.key esr(config-wireguard-peer)# access-addresses object-group WG_SERVERS esr(config-wireguard-peer)# remote address 212.0.50.9 esr(config-wireguard-peer)# remote port 43020 |
Для усиления криптостойкости установим заранее известный симметричный ключ:
| Блок кода |
|---|
esr(config-wireguard-peer)# pre-shared-key base64 r4u48oYTouJ+j1GrAtVWRIZqlQ2YLjEZEvc+Yttc6R4= |
...
Включим пир и WireGuard-туннель:
...
| Блок кода |
|---|
esr@client:~$ ping 10.50.0.10 -c 4 PING 10.50.0.10 (10.50.0.10) 56(84) bytes of data. 64 bytes from 10.50.0.10: icmp_seq=1 ttl=62 time=1.85 ms 64 bytes from 10.50.0.10: icmp_seq=2 ttl=62 time=1.47 ms 64 bytes from 10.50.0.10: icmp_seq=3 ttl=62 time=1.97 ms 64 bytes from 10.50.0.10: icmp_seq=4 ttl=62 time=1.72 ms --- 10.50.0.10 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 1.465/1.753/1.974/0.188 ms |
| Scroll Pagebreak |
|---|
С помощью команды команды monitor, можно убедиться, что ICMP-пакеты проходят через wireguard туннель:
...
