LINUX.ORG.RU
решено ФорумAdmin

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

 , , , ,


0

1

У меня есть домашний сервер с системой 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 (всего исправлений: 2)

Я ничего не понял касательно общей ситуации, лень вникать, но пинг 1400 у тебя фрагментированный а это сразу можно ждать проблем. Проверь на других длинах (1300, 1350 итд) и найди начиная с какого они пропадают.

А ещё запусти tcpdump не только на отправителе пинга но и на приёмнике.

А какая связь между пингами размера 1400 и bgp? Может оно ни при чём?

А ещё если меняешь адрес то наверно его и другая сторона должна новый знать.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

BGP тут не при чем, вы правы. Изменила немного, удалила кое-что по поводу BGP. Начинают пропадать от 1345. По поводу смены адреса, я не изменяю адрес на wg3, а на wg1, но проблема возникает при пинге на wg3 почему-то. Понятно что пинг фрагментированный и можно ждать проблем, но когда я пингую с длиной 1400 на wg3 с адресом 172.23.167.65 на wg1 интерфейсе пинги хоть и фрагментированные, но ответы получаю.

eurozyeniz
() автор топика

не разбираюсь в BGP и сетях в целом, но проходил через всякие эксперименты с wg. Cудя по всему dn42 это такой сетевой интерфейс, если это так и mtu у него больше чем у интерфейсов wg, то могут быть проблемы.

xgatron
()