LINUX.ORG.RU

Сообщения eurozyeniz

 

Не приходят ответы на пинг с заданным размером 1400

У меня есть домашний сервер с системой linux, дистрибутив Arch - 6.7.0

Есть белый IPv4 адрес. На роутере я пробросила несколько портов к нужным сервисам на сервере, точнее, wireguard.

У меня есть приватная сетка:

Взяла блок адресов:

  • IPv4 - 172.23.167.64/27
  • IPv6 - fda0:decc:6799::/48

У меня настроен BGP (Bird), настроила пиринг с одним человеком через wireguard (wg2). Wireguard туннель (wg2), я поднимала через systemd-networkd (/etc/systemd/network/wg2.netdev):

[NetDev]
Name = wg2
Kind = wireguard
Description = Wireguard tunnel (wg2)

[WireGuard]
PrivateKey = ...
ListenPort = 4444

[WireGuardPeer]
Endpoint = example.com:1234
PublicKey = ...
AllowedIPs = 0.0.0.0/0,::/0

wg2.network:

[Match]
Name = wg2

[Network]
VRF = dn42

[Address]
Address = 172.23.167.66/32
Peer = 172.22.119.1/32

[Address]
Address = fda0:decc:6799::1/128
Peer = fe80::acab/128

После этого я захотела иметь доступ к внутренним сервисам dn42, используя dn42 публичные DNS сервера. Чтобы делать это через свой домашний PC, на котором тот же arch, настроила wireguard туннель со своим сервером (wg1.netdev):

[NetDev]
Name = wg1
Kind = wireguard
Description = Wireguard tunnel with local PC

[WireGuard]
PrivateKey = ...
ListenPort = 4321

[WireGuardPeer]
Endpoint = local_IPv4:1234
PublicKey = ...
AllowedIPs = 0.0.0.0/0,::/0

wg1.network:

[Match]
Name = wg1

[Network]
VRF = dn42

[Address]
Address = 172.23.167.65/32
Peer = 172.23.167.67/32

[Address]
Address = fda0:decc:6799::2/128
Peer = fda0:decc:6799::3/128

На домашнем PC работает wg-quick, который после поднятия соединения с сервером пересылает пакеты предназначенные сети dn42 через wireguard. Всё работает.

Но проблема случилась когда я подняла пиринг с ещё одним соседом (wg3):

[NetDev]
Name = wg3
Kind = wireguard
Description = Wireguard tunnel (...)

[WireGuard]
PrivateKey = ...
ListenPort = 56789

[WireGuardPeer]
Endpoint =  example2.com:12345
PublicKey = ...
AllowedIPs = 0.0.0.0/0,fe80::/64,fd00::/8

wg3.network:

[Match]
Name = wg3

[Network]
VRF = dn42

[Address]
Address = 172.23.167.68/32
Peer = 172.20.129.169/32

[Address]
Address = fda0:decc:6799::4/128
Peer = fd42:4242:2601:31::1/128

Все интерфейсы (wg1, wg2, wg3) находятся в vrf dn42, я хотела изолировать маршруты dn42 от основных.

Всё работало, до тех пор, пока я не поменяла свой адрес на интерфейсе wg1 на другой, в файле конфигурации systemd-networkd. Следующая проблема возникает ТОЛЬКО при смене адреса на интерфейсе wg1 на любой другой адрес из диапазона 172.23.167.64/27 КРОМЕ 172.23.167.65. То есть, когда я ставлю адрес 172.23.167.65, никаких проблем нет.

Я выявила проблему, при пинге:

ip vrf exec dn42 ping fd42:4242:2601::1 -s 1400

Я не получаю никаких ответов. Ловлю с помощью tcpdump:

21:12:12.069833 wg3 Out IP6 fda0:decc:6799::4 > fd42:4242:2601:31::1: frag (0|1368) ICMP6, echo request, id 6, seq 1, length 1368
21:12:12.069879 wg3 Out IP6 fda0:decc:6799::4 > fd42:4242:2601:31::1: frag (1368|40)
21:12:12.081254 wg3 In  IP6 fd42:4242:2601:31::1 > fda0:decc:6799::4: frag (1368|40)
21:12:13.084029 wg3 Out IP6 fda0:decc:6799::4 > fd42:4242:2601:31::1: frag (0|1368) ICMP6, echo request, id 6, seq 2, length 1368
21:12:13.084039 wg3 Out IP6 fda0:decc:6799::4 > fd42:4242:2601:31::1: frag (1368|40)
21:12:13.095642 wg3 In  IP6 fd42:4242:2601:31::1 > fda0:decc:6799::4: frag (1368|40)
21:12:14.097680 wg3 Out IP6 fda0:decc:6799::4 > fd42:4242:2601:31::1: frag (0|1368) ICMP6, echo request, id 6, seq 3, length 1368
21:12:14.097693 wg3 Out IP6 fda0:decc:6799::4 > fd42:4242:2601:31::1: frag (1368|40)
21:12:14.109856 wg3 In  IP6 fd42:4242:2601:31::1 > fda0:decc:6799::4: frag (1368|40)

С пингом без размера 1400 пинги идут:

PING fd42:4242:2601:31::1 (fd42:4242:2601:31::1) 56 data bytes
64 bytes from fd42:4242:2601:31::1: icmp_seq=1 ttl=64 time=10.1 ms
64 bytes from fd42:4242:2601:31::1: icmp_seq=2 ttl=64 time=10.6 ms
64 bytes from fd42:4242:2601:31::1: icmp_seq=3 ttl=64 time=10.6 ms

Когда ставлю обратно адрес 172.23.167.65 на wg1, всё работает:

21:16:09.033254 wg3 Out IP6 fda0:decc:6799::4 > fd42:4242:2601:31::1: frag (0|1368) ICMP6, echo request, id 1, seq 1, length 1368
21:16:09.033264 wg3 Out IP6 fda0:decc:6799::4 > fd42:4242:2601:31::1: frag (1368|40)
21:16:09.043313 wg3 In  IP6 fd42:4242:2601:31::1 > fda0:decc:6799::4: frag (0|1368) ICMP6, echo reply, id 1, seq 1, length 1368
21:16:09.043326 wg3 In  IP6 fd42:4242:2601:31::1 > fda0:decc:6799::4: frag (1368|40)
21:16:10.034697 wg3 Out IP6 fda0:decc:6799::4 > fd42:4242:2601:31::1: frag (0|1368) ICMP6, echo request, id 1, seq 2, length 1368
21:16:10.034708 wg3 Out IP6 fda0:decc:6799::4 > fd42:4242:2601:31::1: frag (1368|40)
21:16:10.045285 wg3 In  IP6 fd42:4242:2601:31::1 > fda0:decc:6799::4: frag (0|1368) ICMP6, echo reply, id 1, seq 2, length 1368
21:16:10.045294 wg3 In  IP6 fd42:4242:2601:31::1 > fda0:decc:6799::4: frag (1368|40)
21:16:11.036837 wg3 Out IP6 fda0:decc:6799::4 > fd42:4242:2601:31::1: frag (0|1368) ICMP6, echo request, id 1, seq 3, length 1368
21:16:11.036848 wg3 Out IP6 fda0:decc:6799::4 > fd42:4242:2601:31::1: frag (1368|40)
PING fd42:4242:2601:31::1 (fd42:4242:2601:31::1) 1400 data bytes
1408 bytes from fd42:4242:2601:31::1: icmp_seq=1 ttl=64 time=10.2 ms
1408 bytes from fd42:4242:2601:31::1: icmp_seq=2 ttl=64 time=10.6 ms
1408 bytes from fd42:4242:2601:31::1: icmp_seq=3 ttl=64 time=10.6 ms

Я не понимаю как это возможно, как какой-то адрес на wg1 может иметь какое-то отношение к wg3. Хотелось бы узнать куда копать, и в чём может быть проблема.

Буду благодарна за хотя бы малейшие зацепки.

 , , , ,

eurozyeniz
()

RSS подписка на новые темы