Пересылка ICMP через сервер без перенаправлений

1053
Len

Мне нужно проверить сетевые характеристики, такие как 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
Steve Faulkner

Вам нужно запретить ОБА сервер и роутер от отправки ICMP перенаправления на хост.

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

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