Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Блок кода
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
{ <CLEAR-TEXT> | encrypted <ENCRYPTED-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-туннеля.
MTU более 1500 будет активно только если применена команда system jumbo-frames
(необязательно).

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> – тип аргумента, устанавливаемый в качестве симметричного ключа:

  • ascii-text – указать симметричный ключ в виде ASCII-текста, который будет сконвертирован в формат Base64;
  • base64 – указать симметричный ключ в формате Base64;
  • encrypted – указать симметричный ключ в зашифрованном виде.

<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> – тип аргумента, устанавливаемый в качестве адреса:

  • address-range – указать диапазон IPv4-адресов;
  • object-group – указать имя профиля;
  • prefix – указать адрес подсети и префикс.

<FROM-ADDR> – начальный IP-адрес диапазона;
<TO-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 туннель:

...