1

Мне нужно проверить сетевые характеристики, такие как RTT в сети, например, с помощью ICMP-пингов.

Этот вопрос особенный, поскольку я хочу принудительно пересылать каждый пакет через сервер, который должен работать как маршрутизатор, но не может предлагать перенаправления. Но именно это невозможно, вместо этого я всегда теряю связи между хостами.

Сеть была настроена (в "ip route" / таблицах маршрутизации) для первой передачи всех пакетов на сервер (IP: 10.0.0.4), который затем отправляет его обратно на шлюз (IP: 10.0.0.1). От шлюза он направляется на правильный хост (IP: 10.0.0.5 - 10.0.0.255).

В будущем этот сценарий позволит серверу изменять все пакеты в сети.

Чтобы упростить сценарий, настроены только два хоста (10.0.0.5 и .6). Затем хосты настраиваются со следующей таблицей маршрутизации (показана для 10.0.0.5):

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.0.0.1        0.0.0.0         UG    0      0        0 ens3
10.0.0.0        *               255.255.255.0   U     0      0        0 ens3
host-10-0-0-6.o host-10-0-0-4.o 255.255.255.255 UGH   0      0        0 ens3

Для сервера 10.0.0.4 таблица маршрутизации выглядит следующим образом:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.0.0.1        0.0.0.0         UG    0      0        0 ens3
10.0.0.0        *               255.255.255.0   U     0      0        0 ens3

На данный момент iptables полностью пуст для всех устройств. Кроме того, чтобы разрешить IP-пересылку, сервер был настроен с /proc/sys/net/ipv4/ip_forward = 1

С помощью этого параметра я могу легко пропинговать между двумя хостами, вывод выглядит следующим образом (для хоста 10.0.0.6):

# ping 10.0.0.5
PING 10.0.0.5 (10.0.0.5) 56(84) bytes of data.
From 10.0.0.4: icmp_seq=1 Redirect Host(New nexthop: 10.0.0.5)
64 bytes from 10.0.0.5: icmp_seq=2 ttl=64 time=0.441 ms
64 bytes from 10.0.0.5: icmp_seq=3 ttl=64 time=0.405 ms

Проблема заключается в ICMP-перенаправлении, которое серверы немедленно отправляют. При этом все ping-пакеты больше не проходят через сервер.

Я пробовал много вещей, включая изменение iptable для удаления перенаправлений и изменение файла sysctl.conf с net.ipv4.conf.all.accept_redirects = 0 и net.ipv4.conf.all.send_redirects = 0 (соответственно для интерфейса. ..conf.ens3 ....)

Проблема в том, что каждый раз, когда я отключаю перенаправления, пинг больше не возможен вообще (потеря пакета 100%).

Как я могу заставить этот простой сценарий работать, а это означает: как я могу маршрутизировать все пакеты каждый раз через сервер и обратно?

1 ответ1

1

Вы должны предотвратить сервер и маршрутизатор от ОТПРАВКИ ICMP перенаправления на хост.

Если это маршрутизатор cisco, "no ip redirects" сделает это.

На сервере, в зависимости от вашей версии Linux, эта ссылка содержит информацию обо всех вариантах и различных способах отключения перенаправления ICMP в Linux http://www.itsyourip.com/Security/how-to-disable-icmp-redirects-in -linux-для-безопасности-redhatdebianubuntususe проверенная / комментарий-страничный-1 /

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .