...
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
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 | Указать pre-shared-key для настраиваемого туннеля (необязательно). | esr(config-wireguard-server-peer)# pre-shared-key <TYPE> <WORD> | <TYPE> – тип аргумента, устанавливаемый в качестве симметричного ключа:
<WORD> - – вводимый симметричный ключ. В зависимости от типа аргумента имеет длину 32 символа для ascii-text, 44 символа для формата base64 и 64 символа для зашифрованного вида. |
| 13 | Указать список IP-адресов, которым будет разрешено находиться внутри туннеля. | esr(config-wireguard-server-peer)# access-addresses <TYPE> | <TYPE> – тип аргумента, устанавливаемый в качестве адреса:
<FROM-ADDR> – начальный IP-адрес диапазона; <OBJ-GROUP-NAME> – имя профиля IP-адресов, задаётся строкой до 31 символа; <ADDR/LEN> – IP-адрес и маска подсети. |
| 14 | Включить туннель. | esr(config-wireguard-server-peer)# enable |
...
- адресация внутри туннеля – 110.0.0.0/30;
- порт подключения к серверу – 43020;
- адрес WireGuard-сервера внутри туннеля – 110.0.0.1.
Решение:
Создадим ключевую пару x25519, которая будет использоваться в работе WireGuard:
| Блок кода |
|---|
esr# crypto generate private-key x25519 filename wg_server_private.key esr# crypto generate public-key x25519 private-key wg_server_private.key filename wg_server_public.key |
Для успешной работы необходимо совершить обмен открытыми криптографическими ключами с удаленной стороной любым удобным способом. На данном этапе настройки открытым криптографическим ключом является файл с именем именем wg_server_public.key, который хранится в в crypto:public-key:
| Блок кода |
|---|
esr# show crypto certificates public-key File name -------------------------------------------------------------------------------------------------------------- wg_server_public.key |
Создадим object-group network со списком IP-адресов, которым будет разрешено прохождение через туннель:
| Блок кода |
|---|
esr(config)# object-group network WG_CLIENTS esr(config-object-group-network)# ip address-range 10.40.0.10-10.40.0.20 |
...
| Блок кода |
|---|
esr(config-wireguard-server)# peer 1 esr(config-wireguard-server-peer)# public-key wg_client_public.key esr(config-wireguard-server-peer)# access-addresses object-group WG_CLIENTS |
Для усиления криптостойкости установим заранее известный симметричный ключ:
| Блок кода |
|---|
esr(config-wireguard-server-peer)# pre-shared-key base64 r4u48oYTouJ+j1GrAtVWRIZqlQ2YLjEZEvc+Yttc6R4= |
...
| Блок кода |
|---|
esr# show 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-адресов.
Алгоритм настройки
...
Шаг
...
Описание
...
Команда
...
Ключи
...
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.
...
esr(config-pppoe)# ppp failure-count <NUM>
...
<NUM> – количество неудачных data-link тестов, задается в диапазоне [1..100].
Значение по умолчанию: 10.
...
14
...
esr(config-pppoe)# ppp timeout keepalive <TIME >
...
<TIME> – время в секундах, задается в диапазоне [1..32767].
Значение по умолчанию: 10.
...
esr(config-pppoe)# ip tcp adjust-mss <MSS>
...
<MSS> – значение MSS, принимает значения в диапазоне [500..1460].
Значение по умолчанию: 1460.
...
esr(config-pppoe)# history statistics
...
Также для PPPoE-клиента возможно настроить:
- QoS в базовом или расширенном режимах (см. раздел Управление QoS);
- Proxy (см. раздел Проксирование HTTP/HTTPS-трафика);
- Мониторинг траффика (см. разделы Настройка Netflow и Настройка sFlow).
| Scroll Pagebreak |
|---|
Пример настройки правил Firewall для совместной работы с WireGuard-сервером
Задача:
Настроить правила Firewall таким образом, чтобы разрешить обращения клиентов на 80 порт сервера 10.50.0.10, остальное взаимодействие запретить.
Решение:
Создадим зоны безопасности WAN, SERVERS, WIREGUARD и назначим их на соответствующие интерфейсы и включим Firewall:
| Блок кода |
|---|
esr(config)# security zone WAN
esr(config-security-zone)# exit
esr(config)# security zone SERVERS
esr(config-security-zone)# exit
esr(config)# security zone WIREGUARD
esr(config-security-zone)# exit
esr(config)# interface gigabitethernet 1/0/1
esr(config-if-gi)# security-zone WAN
esr(config-if-gi)# no ip firewall disable
esr(config-if-gi)# exit
esr(config)# interface gigabitethernet 1/0/2
esr(config-if-gi)# security-zone SERVERS
esr(config-if-gi)# no ip firewall disable
esr(config-if-gi)# exit
esr(config)# remote-access wireguard WG
esr(config-wireguard-server)# security-zone WIREGUARD
esr(config-wireguard-server)# no ip firewall disable
esr(config-wireguard-server)# exit |
Создадим правила, разрешающие работу WireGuard:
| Блок кода |
|---|
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:
| Блок кода |
|---|
esr(config)# security zone-pair WIREGUARD SERVERS
esr(config-security-zone-pair)# rule 10
esr(config-security-zone-pair-rule)# action permit
esr(config-security-zone-pair-rule)# match protocol tcp
esr(config-security-zone-pair-rule)# match destination-address address-range 10.50.0.10
esr(config-security-zone-pair-rule)# match destination-port port-range 80
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 |
Проверим работоспособность:
| Блок кода |
|---|
esr@client:~$ ping 10.50.0.10 -c 4
PING 10.50.0.10 (10.50.0.10) 56(84) bytes of data.
--- 10.50.0.10 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3090ms
esr@client:~$ hping3 10.50.0.10 -c 4 -S -p 80
HPING 10.50.0.10 (ens3 10.50.0.10): S set, 40 headers + 0 data bytes
len=46 ip=10.50.0.10 ttl=62 DF id=0 sport=80 flags=RA seq=0 win=0 rtt=2.0 ms
len=46 ip=10.50.0.10 ttl=62 DF id=0 sport=80 flags=RA seq=1 win=0 rtt=2.8 ms
len=46 ip=10.50.0.10 ttl=62 DF id=0 sport=80 flags=RA seq=2 win=0 rtt=2.6 ms
len=46 ip=10.50.0.10 ttl=62 DF id=0 sport=80 flags=RA seq=3 win=0 rtt=2.3 ms
--- 10.50.0.10 hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 2.0/2.4/2.8 ms |
Настройка клиента удаленного доступа по протоколу PPPoE
PPPoE – это туннелирующий протокол (tunneling protocol), который позволяет инкапсулировать IP PPP через соединения Ethernet и обладает программными возможностями PPP-соединений, что позволяет использовать его для виртуальных соединений на соседнюю Ethernet-машину и устанавливать соединение точка-точка, которое используется для транспортировки IP-пакетов, а также работает с возможностями PPP. Это позволяет применять традиционное PPP-ориентированное ПО для настройки соединения, которое использует не последовательный канал, а пакетно-ориентированную сеть (например, Ethernet), чтобы организовать классическое соединение с логином и паролем для Интернет-соединений. Кроме того, IP-адрес по другую сторону соединения назначается, только когда PPPoE-соединение открыто, позволяя динамическое переиспользование IP-адресов
Пример настройки
Задача:
Настроить PPPoE-клиент на маршрутизаторе.
- Учетные записи для подключения – tester;
- Пароли учетных записей – password;
- Подключение должно осуществляться с интерфейса gigabitethernet 1/0/7.
| Примечание |
|---|
Интерфейс, с которого будет осуществляться РРРоЕ-соединение, должен работать в режиме routerport (кроме случаев использования bridge). |
Решение:
Предварительно должен быть настроен PPPoE-сервер с соответствующими учетными записями. Также на устройстве должны быть настроены зоны безопасности и описаны правила их взаимодействия.
Зайдем в режим конфигурирования PPPoE-туннеля и зададим пользователя и пароль для подключения к PPPoE-серверу:
| Блок кода |
|---|
esr# configure
esr(config)# tunnel pppoe 1
esr(config-pppoe)# username tester password ascii-text password |
| Scroll Pagebreak |
|---|
Укажем интерфейс, через который будет устанавливаться PPPoE-соединение:
| Блок кода |
|---|
esr(config-pppoe)# interface gigabitethernet 1/0/7
esr(config- pppoe)# enable |
Настроим зону безопасности,:
| Блок кода |
|---|
esr(config-pppoe)# security-zone untrust |
Опционально для PPPoE-туннеля можно указать следующие параметры:
Изменить метод аутентификации:
| Блок кода |
|---|
esr(config-pppoe)# authentication method
METHOD Select PPP authentication method:
chap
mschap
mschap-v2
eap
pap |
Игнорировать полученный маршрут по умолчанию, выданные РРРоЕ-сервером:
| Блок кода |
|---|
esr(config-pppoe)# ignore-default-route |
Переопределить значение поля MSS (Maximum segment size) во входящих TCP-пакетах:
| Блок кода |
|---|
esr(config-pppoe)# ip tcp adjust-mss 1452 |
Указать размер MTU (Maximum Transmition Unit):
| Блок кода |
|---|
esr(config-pppoe)# mtu 1496 |
Изменить количество неудачных data-link тестов перед разрывом сессии:
| Блок кода |
|---|
esr(config-pppoe)# ppp failure-count 15 |
Установить интервал времени в секундах, по истечении которого маршрутизатор отправляет keepalive-сообщение:
| Блок кода |
|---|
esr(config-pppoe)# ppp timeout keepalive 15 |
Состояние PPPoE-туннеля можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels status pppoe 1 |
Счетчики входящих и отправленных пакетов PPPoE-туннеля можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels counters pppoe 1 |
| Scroll Pagebreak |
|---|
Конфигурацию PPPoE-туннеля можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels configuration pppoe 1 |
Настройка клиента удаленного доступа по протоколу PPTP
PPTP (англ. Point-to-Point Tunneling Protocol) – туннельный протокол типа точка-точка, позволяющий устанавливать защищённое соединение за счёт создания специального туннеля в обычной незащищенной сети. PPTP помещает (инкапсулирует) кадры PPP в IP-пакеты для передачи по глобальной IP-сети, например, Интернет. PPTP может также использоваться для организации туннеля между двумя локальными сетями. РРТР использует дополнительное TCP-соединение для обслуживания туннеля.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
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 символа |
; |
esr(config-pptp)# ip firewall disable
5
Установить удаленный IP-адрес для установки туннеля.
esr(config-pptp)# remote address <ADDR>
<ADDR> – IP-адрес локального шлюза, задается в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].
6
Установить размер MTU (MaximumTransmitionUnit) для туннеля (необязательно)
esr(config-pptp)# mtu <MTU>
<MTU> – значение MTU, принимает значения в диапазоне [552..10000].
Значение по умолчанию: 1500.
7
<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)# |
{ <WORD> | encrypted <HEX> }
<NAME> – имя пользователя, задается строкой до 31 символа.
<WORD> – пароль в открытой форме, задается строкой [8..64] символов, может включать символы [0-9a-fA-F].
<HEX> – пароль в зашифрованной форме, задается строкой [16..128] символов.
8
Активировать туннель.
esr(config-pptp)# enable
esr(config-pptp)# ip tcp adjust-mss <MSS>
<MSS> – значение MSS, принимает значения в диапазоне [500..1460].
Значение по умолчанию: 1460.
10
authentication method <METHOD> | <METHOD> – метод аутентификации, возможные значения: chap, mschap, mschap-v2, eap, pap. Значение по умолчанию: chap. |
9 |
Игнорировать dns-сервер через данный |
PPoE-туннель (необязательно). | esr(config- |
pppoe)# ignore nameserver |
11
10 | Включить отказ от получения маршрута по умолчанию от PPPoE-сервера |
(необязательно). | esr(config- |
pppoe)# ignore-default-route |
11 |
Указать интервал времени, за который усредняется статистика о нагрузке |
(необязательно). | esr(config- |
pppoe)# load-average <TIME> | <TIME> – интервал времени в секундах |
от 5 до 150 (по умолчанию |
5 с). |
13
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. |
Пример настройки
Задача:
Настроить PPTP-туннель на маршрутизаторе:
- адрес PPTP-сервера 20.20.0.1;
- учетная запись для подключения – логин: ivan, пароль: simplepass.
Решение:
Создадим туннель PPTP:
| Блок кода |
|---|
esr(config)# tunnel pptp 1 |
Укажем учетную запись (пользователя Ivan) для подключения к серверу:
| Блок кода |
|---|
esr(config-pptp)# username ivan password ascii-text simplepass |
Укажем удаленный шлюз:
| Блок кода |
|---|
esr(config-pptp)# remote address 20.20.0.1 |
Укажем зону безопасности:
| Блок кода |
|---|
esr(config-pptp)# security-zone VPN |
...
| 16 | Включить запись статистики использования текущего туннеля (необязательно). | esr(config-pppoe)# history statistics | |
Также для PPPoE-клиента возможно настроить:
| |||
| Scroll Pagebreak |
|---|
Пример настройки
Задача:
Настроить PPPoE-клиент на маршрутизаторе.
- Учетные записи для подключения – tester;
- Пароли учетных записей – password;
- Подключение должно осуществляться с интерфейса gigabitethernet 1/0/7.
| Примечание |
|---|
Интерфейс, с которого будет осуществляться РРРоЕ-соединение, должен работать в режиме routerport (кроме случаев использования bridge). |
Решение:
Предварительно должен быть настроен PPPoE-сервер с соответствующими учетными записями. Также на устройстве должны быть настроены зоны безопасности и описаны правила их взаимодействия.
Зайдем в режим конфигурирования PPPoE-туннеля и зададим пользователя и пароль для подключения к PPPoE-серверу:
| Блок кода |
|---|
esr# configure
esr(config)# tunnel pppoe 1
esr(config-pppoe)# username tester password ascii-text password |
Укажем интерфейс, через который будет устанавливаться PPPoE-соединение:
| Блок кода |
|---|
esr(config-pptppppoe)# enable |
| Scroll Pagebreak |
|---|
Состояние туннеля можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels status pptp |
Счетчики входящих и отправленных пакетов можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels counters pptp |
Конфигурацию туннеля можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels configuration pptp |
Настройка клиента удаленного доступа по протоколу L2TP
L2TP (англ. Layer 2 Tunneling Protocol – протокол туннелирования второго уровня) – туннельный протокол, использующийся для поддержки виртуальных частных сетей. L2TP помещает (инкапсулирует) кадры PPP в IP-пакеты для передачи по глобальной IP-сети, например, Интернет. L2TP может также использоваться для организации туннеля между двумя локальными сетями. L2ТР использует дополнительное UDP-соединение для обслуживания туннеля. L2TP-протокол не предоставляет средств шифрования данных и поэтому он обычно используется в связке с группой протоколов IPsec, которая предоставляет безопасность на пакетном уровне.
Алгоритм настройки
interface gigabitethernet 1/0/7
esr(config- pppoe)# enable |
Настроим зону безопасности,:
| Блок кода |
|---|
esr(config-pppoe)# security-zone untrust |
| Scroll Pagebreak |
|---|
Опционально для PPPoE-туннеля можно указать следующие параметры:
Изменить метод аутентификации:
Блок кода esr(config-pppoe)# authentication method METHOD Select PPP authentication method: chap mschap mschap-v2 eap papИгнорировать полученный маршрут по умолчанию, выданные РРРоЕ-сервером:
Блок кода esr(config-pppoe)# ignore-default-routeПереопределить значение поля MSS (Maximum segment size) во входящих TCP-пакетах:
Блок кода esr(config-pppoe)# ip tcp adjust-mss 1452Указать размер MTU (Maximum Transmition Unit):
Блок кода esr(config-pppoe)# mtu 1496Изменить количество неудачных data-link тестов перед разрывом сессии:
Блок кода esr(config-pppoe)# ppp failure-count 15Установить интервал времени в секундах, по истечении которого маршрутизатор отправляет keepalive-сообщение:
Блок кода esr(config-pppoe)# ppp timeout keepalive 15
Состояние PPPoE-туннеля можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels status pppoe 1 |
Счетчики входящих и отправленных пакетов PPPoE-туннеля можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels counters pppoe 1 |
Конфигурацию PPPoE-туннеля можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels configuration pppoe 1 |
| Scroll Pagebreak |
|---|
Настройка клиента удаленного доступа по протоколу PPTP
PPTP (англ. Point-to-Point Tunneling Protocol) – туннельный протокол типа точка-точка, позволяющий устанавливать защищённое соединение за счёт создания специального туннеля в обычной незащищенной сети. PPTP помещает (инкапсулирует) кадры PPP в IP-пакеты для передачи по глобальной IP-сети, например, Интернет. PPTP может также использоваться для организации туннеля между двумя локальными сетями. РРТР использует дополнительное TCP-соединение для обслуживания туннеля.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
1 | Создать PPTP-туннель и перейти в режим его конфигурирования. | esr(config)# tunnel pptp <INDEX> | <INDEX> – идентификатор туннеля в диапазоне: [1..10]. |
2 | Указать описание конфигурируемого туннеля (необязательно). | esr(config-pptp)# description <DESCRIPTION> | <DESCRIPTION> – описание туннеля, задается строкой до 255 символов. |
3 | Указать экземпляр VRF, в котором будет работать данный PPTP-туннель (не обязательно). | esr(config-pptp)# ip vrf forwarding <VRF> | <VRF> – имя VRF, задается строкой до 31 символа. |
4 | Включить PPTP-туннель в зону безопасности и настроить правила взаимодействия между зонами или отключить firewall (см. раздел Конфигурирование Firewall). | esr(config-pptp)# security-zone <NAME> | <NAME> – имя зоны безопасности, задаётся строкой до 31 символа. |
esr(config-pptp)# ip firewall disable | |||
5 | Установить удаленный IP-адрес для установки туннеля. | esr(config-pptp)# remote address <ADDR> | <ADDR> – IP-адрес локального шлюза, задается в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
6 | Установить размер MTU (MaximumTransmitionUnit) для туннеля (необязательно) | esr(config-pptp)# mtu <MTU> | <MTU> – значение MTU, принимает значения в диапазоне [552..10000]. Значение по умолчанию: 1500. |
7 | Указать пользователя и установить пароль в открытой или зашифрованной форме для аутентификации удаленной стороны. | esr(config-pptp)# username <NAME> password ascii-text | <NAME> – имя пользователя, задается строкой до 31 символа. <WORD> – пароль в открытой форме, задается строкой [8..64] символов, может включать символы [0-9a-fA-F]. <HEX> – пароль в зашифрованной форме, задается строкой [16..128] символов. |
8 | Активировать туннель. | esr(config-pptp)# enable | |
| 9 | Переопределить значение поля MSS (Maximum segment size) во входящих TCP-пакетах |
Шаг
Описание
Команда
Ключи
1
Создать L2TP-туннель и перейти в режим его конфигурирования.
esr(config)# tunnel l2tp <INDEX>
<INDEX> – идентификатор туннеля в диапазоне: [1..10].
2
Указать экземпляр VRF, в котором будет работать данный L2TP-туннель (необязательно).
esr(config-l2tp)# ip vrf forwarding <VRF>
<VRF> – имя VRF, задаётся строкой до 31 символа.
3
Указать описание конфигурируемого туннеля (необязательно).
esr(config-l2tp)# description <DESCRIPTION>
<DESCRIPTION> – описание туннеля, задается строкой до 255 символов.
4
Включить L2TP-туннель в зону безопасности и настроить правила взаимодействия между зонами или отключить firewall (см. раздел Конфигурирование Firewall).
esr(config-l2tp)# security-zone <NAME>
<NAME> – имя зоны безопасности, задаётся строкой до 31 символа.
esr(config-l2tp)# ip firewall disable
5
Установить удаленный IP-адрес для установки туннеля.
esr(config-l2tp)# remote address <ADDR>
<ADDR> – IP-адрес локального шлюза, задается в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].
6
Указать пользователя и установить пароль в открытой или зашифрованной форме для аутентификации удалённой стороны.
esr(config-l2tp)# username <NAME> password ascii-text
{ <WORD> | encrypted <HEX> }
<NAME> – имя пользователя, задается строкой до 31 символа.
<WORD> – пароль в открытой форме, задается строкой [8..64] символов, может включать символы [0-9a-fA-F].
<HEX> – пароль в зашифрованной форме, задается строкой [16..128] символов.
7
Выбрать метод аутентификации по ключу для IKE-соединения.
esr(config-l2tp)# ipsec authentication
method pre-shared-key
8
Указать общий секретный ключ для аутентификации, который должен совпадать у обоих сторон, устанавливающих туннель.
esr(config-l2tp)# ipsec authentication pre-shared-key
{ ascii-text { <TEXT> | encrypted <ENCRYPTED-TEXT> } |
hexadecimal {<HEX> | encrypted <ENCRYPTED-HEX> } }
<TEXT> – строка [1..64] ASCII-символов;
<HEX> – число размером [1..32] байт, задаётся строкой [2..128] символов в шестнадцатеричном формате (0xYYYY...) или (YYYY...);
<ENCRYPTED-TEXT> – зашифрованный пароль размером [1..32] байт, задаётся строкой [2..128] символов;
<ENCRYPTED-HEX> – зашифрованное число размером [2..64] байт, задаётся строкой [2..256] символов.
<NAME> – имя ранее созданного профиля протокола IKE, задаётся строкой до 31 символа.
esr(config-l2tp)# ipsec proposal <NAME>
<NAME> – имя ранее созданного профиля IPsec, задаётся строкой до 31 символа.
| (необязательно). | esr(config- |
pptp)# ip tcp adjust-mss <MSS> | <MSS> – значение MSS, принимает значения в диапазоне [ |
500.. |
1460]. Значение по умолчанию: |
1460. |
13
10 | Игнорировать dns-сервер через данный PPTP-туннель (необязательно) |
. | esr(config- |
pptp)# |
ignore nameserver |
14
11 | Игнорировать маршрут по умолчанию через данный PPTP-туннель (необязательно) |
esr(config- |
pptp)# |
<MTU> – значение MTU, принимает значения в диапазоне [552..10000].
Значение по умолчанию: 1500.
15
ignore-default-route | |
12 | Задать интервал времени, за который усредняется статистика о нагрузке на |
туннель (необязательно). | esr(config- |
pptp)# |
16
Игнорировать маршрут по умолчанию через данный L2TP-туннель (необязательно)
esr(config-l2tp)# ignore-default-route
load-average <TIME> | <TIME> – интервал в секундах, принимает значения [5..150] Значение по умолчанию: 5. |
13 |
Указать метод аутентификации (необязательно). | esr(config- |
pptp)# authentication method <METHOD> | <METHOD> – метод аутентификации, возможные значения: chap, mschap, mschap-v2, eap, pap. Значение по умолчанию: chap. |
18
| 14 | Включить запись статистики использования текущего туннеля (не обязательно). | esr(config- |
pptp)# |
<TIME> – интервал в секундах, принимает значения [5..150]
Значение по умолчанию: 5.
history statistics | |
| 15 |
| Изменить интервал времени в секундах, по истечении которого маршрутизатор отправляет keepalive-сообщение (необязательно). | esr(config- |
pptp)# ppp timeout keepalive <TIME > | <TIME> – время в секундах, задается в диапазоне [1..32767]. Значение по умолчанию: 10. |
| 16 | Изменить количество неудачных data-link тестов перед разрывом сессии (необязательно). | esr(config- |
pptp)# ppp failure-count <NUM> | <NUM> – количество неудачных data-link тестов, задается в диапазоне [1..100]. Значение по умолчанию: 10. |
Также для L2TP-клиента возможно настроить QoS в базовом или расширенном режимах (см. раздел Управление QoS).
Пример настройки
Задача:
Настроить PPTP-туннель на маршрутизаторе:
- адрес PPTP-сервера 20.20.0.1;
- учетная запись для подключения – логин: ivan, пароль: simplepass.
Решение:
Создадим туннель L2TPPPTP:
| Блок кода |
|---|
esr(config)# tunnel l2tppptp 1 |
Укажем учетную запись (пользователя Ivan) для подключения к серверу:
| Блок кода |
|---|
esr(config-l2tppptp)# username ivan password ascii-text simplepass |
Укажем удаленный шлюз:
| Блок кода |
|---|
esr(config-l2tppptp)# remote address 20.20.0.1 |
Укажем зону безопасности:
| Блок кода |
|---|
esr(config-l2tppptp)# security-zone VPN |
Укажем метод аутентификации IPsecВключим туннель PPTP:
| Блок кода |
|---|
esr(config-l2tppptp)# ipsec authentication method pre-shared-key |
...
enable |
| Scroll Pagebreak |
|---|
Состояние туннеля можно посмотреть командой:
| Блок кода |
|---|
esr(config-l2tp)# ipsec authentication pre-shared-key ascii-text password |
Включим туннель L2TP:
| Блок кода |
|---|
esr(config-l2tp)# enable |
Состояние туннеля можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels status l2tp |
esr# show tunnels status pptp |
Счетчики входящих и отправленных пакетов можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels counters l2tppptp |
Конфигурацию туннеля можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels configuration l2tppptp |
Настройка клиента удаленного доступа по протоколу
...
L2TP
L2TP (англ. Layer 2 Tunneling Protocol – протокол туннелирования второго уровня) – туннельный протокол, использующийся для поддержки виртуальных частных сетей. L2TP помещает (инкапсулирует) кадры PPP в IP-пакеты для передачи по глобальной IP-сети, например, Интернет. L2TP может также использоваться для организации туннеля между двумя локальными сетями. L2ТР использует дополнительное UDP-соединение для обслуживания туннеля. L2TP-протокол не предоставляет средств шифрования данных и поэтому он обычно используется в связке с группой протоколов IPsec, которая предоставляет безопасность на пакетном уровнеWireGuard — простой, быстрый и современный VPN, использующий современную криптографию (ChaCha20, Poly1305, Curve25519, BLAKE2s, SipHash24, HKDF). WireGuard надежно инкапсулирует IP-пакеты поверх UDP. В основе WireGuard лежит концепция под названием «Маршрутизация криптоключей», которая работает путем связывания открытых ключей со списком IP-адресов туннеля, которым разрешено находиться внутри туннеля. Каждый сетевой интерфейс имеет закрытый ключ и список пиров. У каждого узла есть открытый ключ. Открытые ключи короткие и простые и используются узлами для аутентификации друг друга. Их можно передавать для использования в файлах конфигурации любым внешним методом, аналогично тому, как можно отправить открытый ключ SSH для доступа к серверу.
Алгоритм настройки
Шаг | Описание | Команда | Ключи |
|---|---|---|---|
1 | Создать |
L2TP-туннель и перейти в режим его конфигурирования. | esr(config)# tunnel |
l2tp <INDEX> | <INDEX> – идентификатор туннеля в диапазоне: [1.. |
10]. | |
2 | Указать экземпляр VRF, в котором будет работать данный |
L2TP-туннель (необязательно). | esr(config- |
l2tp)# ip vrf forwarding <VRF> | <VRF> – имя VRF, задаётся строкой до 31 символа. | |
3 | Указать описание конфигурируемого туннеля (необязательно). | esr(config- |
l2tp)# description <DESCRIPTION> | <DESCRIPTION> – описание туннеля, задается строкой до 255 символов. |
4 | Включить |
L2TP-туннель в зону безопасности и настроить правила взаимодействия между зонами или отключить firewall (см. раздел Конфигурирование Firewall). | esr(config- |
l2tp)# security-zone <NAME> | <NAME> – имя зоны безопасности, задаётся строкой до 31 символа. |
esr(config- |
l2tp)# ip firewall disable | |
5 |
Установить удаленный IP-адрес |
для установки туннеля. | esr(config- |
l2tp)# |
remote address |
<ADDR> | <ADDR> – IP-адрес |
локального шлюза, задается в виде AAA.BBB.CCC.DDD |
, где каждая часть |
принимает значения [0..255] |
. |
6 |
Указать пользователя и установить пароль в открытой или зашифрованной форме для аутентификации удалённой стороны. | esr(config- |
l2tp)# |
username <NAME> password ascii-text | <NAME> – имя пользователя |
7
, задается строкой до 31 символа. |
8
<COUNT> – номер соответствующего пира, принимает значения [1..16].
10
<WORD> – пароль в открытой форме, задается строкой [8..64] символов, может включать символы [0-9a-fA-F]. <HEX> – пароль в зашифрованной форме, задается строкой [16..128] символов. | |||
7 | Выбрать метод аутентификации по ключу для IKE-соединения. | esr(config-l2tp)# ipsec authentication | |
8 | Указать общий секретный ключ для аутентификации, который должен совпадать у обоих сторон, устанавливающих туннель |
. | esr(config- |
l2tp)# ipsec authentication pre-shared-key |
<TYPE> – тип аргумента, устанавливаемый в качестве симметричного ключа:
- ascii-text – указать симметричный ключ в виде ASCII-текста, который будет сконвертирован в формат Base64;
- base64 – указать симметричный ключ в формате Base64;
- encrypted – указать симметричный ключ в зашифрованном виде.
<WORD> - вводимый симметричный ключ. В зависимости от типа аргумента имеет длину 32 символа для ascii-text, 44 символа для формата base64 и 64 символа для зашифрованного вида.
{<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-адрес и маска подсети.
17
Активировать туннель.
esr(config-wireguard)# enable
18
Задать интервал времени, за который усредняется статистика о нагрузке на туннель (необязательно).
esr(config-wireguard)# load-average <TIME>
<TIME> – интервал в секундах, принимает значения [5..150]
Значение по умолчанию: 5.
esr(config-wireguard)# history statistics
Пример настройки
Задача:
Настроить WireGuard-клиента на маршрутизаторе:
- адресация внутри туннеля – 10.10.10.0/24;
- порт подключения к серверу – 43020;
- адрес WireGuard-клиента внутри туннеля – 10.10.10.2;
- адрес удаленного сервера – 178.47.26.133.
...
| <TEXT> – строка [1..64] ASCII-символов; <HEX> – число размером [1..32] байт, задаётся строкой [2..128] символов в шестнадцатеричном формате (0xYYYY...) или (YYYY...); <ENCRYPTED-TEXT> – зашифрованный пароль размером [1..32] байт, задаётся строкой [2..128] символов; <ENCRYPTED-HEX> – зашифрованное число размером [2..64] байт, задаётся строкой [2..256] символов. | ||
| 9 | Ограничить используемые методы аутентификации и шифрования протокола IKE (необязательно). | esr(config-l2tp)# ipsec ike proposal <NAME> | <NAME> – имя ранее созданного профиля протокола IKE, задаётся строкой до 31 символа. |
| 10 | Включить пересогласование ключей до разрыва IKE-соединения (необязательно) | esr(config-l2tp)# ipsec ike rekey enable | |
| 11 | Ограничить используемые методы аутентификации и шифрования протокола IPsec (не обязательно). | esr(config-l2tp)# ipsec proposal <NAME> | <NAME> – имя ранее созданного профиля IPsec, задаётся строкой до 31 символа. |
| 12 | Определяется номер UDP-порта по которому устанавливается соединение с l2tp-сервером (необязательно). | esr(config-l2tp)# port <PORT> | <PORT> – номер UDP-порта, задаётся в диапазоне [1024..65535]. Значение по умолчанию: 1701. |
13 | Активировать туннель. | esr(config-l2tp)# enable | |
14 | Установить размер MTU (MaximumTransmitionUnit) для туннеля (необязательно). | esr(config-l2tp)# mtu <MTU> | <MTU> – значение MTU, принимает значения в диапазоне [552..10000]. Значение по умолчанию: 1500. |
15 | Игнорировать dns-сервер через данный L2TP-туннель (необязательно). | esr(config-l2tp)# ignore nameserver | |
16 | Игнорировать маршрут по умолчанию через данный L2TP-туннель (необязательно) | esr(config-l2tp)# ignore-default-route | |
17 | Указать метод аутентификации (необязательно). | esr(config-l2tp)# authentication method <METHOD> | <METHOD> – метод аутентификации, возможные значения: chap, mschap, mschap-v2, eap, pap Значение по умолчанию: chap. |
18 | Задать интервал времени, за который усредняется статистика о нагрузке на туннель (необязательно). | esr(config-l2tp)# load-average <TIME> | <TIME> – интервал в секундах, принимает значения [5..150] Значение по умолчанию: 5. |
| 19 | Изменить интервал времени в секундах, по истечении которого маршрутизатор отправляет keepalive-сообщение (необязательно). | esr(config-l2tp)# ppp timeout keepalive <TIME > | <TIME> – время в секундах, задается в диапазоне [1..32767]. Значение по умолчанию: 10. |
| 20 | Изменить количество неудачных data-link тестов перед разрывом сессии (необязательно). | esr(config-l2tp)# ppp failure-count <NUM> | <NUM> – количество неудачных data-link тестов, задается в диапазоне [1..100]. Значение по умолчанию: 10. |
Также для L2TP-клиента возможно настроить QoS в базовом или расширенном режимах (см. раздел Управление QoS). | |||
Пример настройки
Задача:
Настроить PPTP-туннель на маршрутизаторе:
- адрес PPTP-сервера 20.20.0.1;
- учетная запись для подключения – логин: ivan, пароль: simplepass
Решение:
Создадим туннель L2TP:
| Блок кода |
|---|
esr(config)# tunnel l2tp 1 |
Укажем учетную запись (пользователя Ivan) для подключения к серверу:
| Блок кода |
|---|
esr(config-l2tp)# username ivan password ascii-text simplepass |
Укажем удаленный шлюз:
| Блок кода |
|---|
esr(config-l2tp)# remote address 20.20.0.1 |
Укажем зону безопасности:
| Блок кода |
|---|
esr(config-l2tp)# security-zone VPN |
Укажем метод аутентификации IPsec:
| Блок кода |
|---|
esr(config-l2tp)# ipsec authentication method pre-shared-key |
Укажем ключ безопасности для IPsec:
| Блок кода |
|---|
esr(config-l2tp)# ipsec authentication pre-shared-key ascii-text password |
Включим туннель L2TP:
| Блок кода |
|---|
esr(config-l2tp)# enable |
Состояние туннеля можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels status l2tp |
Счетчики входящих и отправленных пакетов можно посмотреть командой:
| Блок кода |
|---|
esr# show tunnels counters l2tp |
Конфигурацию туннеля можно посмотреть командой:
| Блок кода |
|---|
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-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 |
Создадим object-group network, в которой будет указан список IP-адресов, которым будет разрешено проходить через туннель:
| Блок кода |
|---|
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)# tunnel wireguard 1
esr(config-wireguard)# ip address 110.0.0.2/30
esr(config-wireguard)# mtu 1420 |
Укажем приватный ключ клиента и отключим Firewall:
| Блок кода |
|---|
esr(config-wireguard)# private-key wg_client_private.key
esr(config-wireguard)# ip firewall disable |
Перейдем в настройки разрешённого пира, укажем связку публичного ключа сервера и разрешённого IP-адреса, а также укажем адрес и порт удаленного сервера:
| Блок кода |
|---|
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(config-wireguard-peer)# enable
esr(config-wireguard-peer)# exit
esr(config-wireguard)# enable |
Попробуем отправить ICMP с рабочего ПК сотрудника (10.40.0.10) на удаленный сервер (10.50.0.10):
| Блок кода |
|---|
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 туннель:
| Блок кода |
|---|
esr# monitor wireguard 1
06:54:36.536109 ip: (tos 0x0, ttl 63, id 22999, offset 0, flags [DF], proto ICMP (1), length 84)
10.40.0.10 > 10.50.0.10: ICMP echo request, id 1568, seq 12, length 64
06:54:36.537358 ip: (tos 0x0, ttl 63, id 32883, offset 0, flags [none], proto ICMP (1), length 84)
10.50.0.10 > 10.40.0.10: ICMP echo reply, id 1568, seq 12, length 64
esr# monitor gigabitethernet 1/0/1
06:54:36.536109 50:1f:e6:04:51:00 > 50:dd:a1:04:50:00, ethertype IPv4 (0x0800), length 170: (tos 0x0, ttl 64, id 21376, offset 0, flags [none], proto UDP (17), length 156)
212.0.50.10.40548 > 212.0.50.9.43020: UDP, length 128
06:54:36.537358 50:dd:a1:04:50:00 > 50:1f:e6:04:51:00, ethertype IPv4 (0x0800), length 170: (tos 0x0, ttl 64, id 41730, offset 0, flags [none], proto UDP (17), length 156)
212.0.50.9.43020 > 212.0.50.10.40548: UDP, length 128 |
Решение:
Предварительно нужно выполнить следующие действия:
- загрузить на 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-peer)# public-key server.pub
esr(config-wireguard-peer)# access-addresses object-group server_wg
esr(config-wireguard-peer)# remote address 178.47.26.133
esr(config-wireguard-peer)# remote port 43020 |
| Scroll Pagebreak |
|---|
Включим пир и WireGuard-туннель:
| Блок кода |
|---|
esr(config-wireguard-peer)# enable
esr(config-wireguard-peer)# exit
esr(config-wireguard)# enable |
Счётчики сессий WireGuard-туннеля можно посмотреть командой:
...



