LINUX.ORG.RU

Почему ICMP редиректы считаются ошибкой и как правильно с ними поступать?

 ,


0

1

У меня есть сеть 192.168.100.0/24, у которой на 254 адресе сидит роутер. В эту сеть воткнут openvpn на адресе 192.168.100.253, у которого подсеть 10.20.30.0/24. Для того, чтобы компьютеры из сети 192.168.100.0/24 могли ходить в сеть 10.20.30.0/24 на роутере прописан статический маршрут, но в итоге при попытке пинговать узлы, я получаю ошибки:

[sssnake@loltech.lan@XQDwWcVtP7Qt ~]$ ping 192.168.231.1
PING 192.168.231.1 (192.168.231.1) 56(84) bytes of data.
64 bytes from 192.168.231.1: icmp_seq=1 ttl=64 time=1.18 ms
From 192.168.100.254 icmp_seq=2 Redirect Host(New nexthop: 192.168.100.253)
64 bytes from 192.168.231.1: icmp_seq=2 ttl=64 time=2.96 ms
From 192.168.100.254 icmp_seq=3 Redirect Host(New nexthop: 192.168.100.253)
64 bytes from 192.168.231.1: icmp_seq=3 ttl=64 time=3.67 ms
64 bytes from 192.168.231.1: icmp_seq=4 ttl=64 time=3.10 ms
From 192.168.100.254 icmp_seq=5 Redirect Host(New nexthop: 192.168.100.253)
64 bytes from 192.168.231.1: icmp_seq=5 ttl=64 time=2.93 ms
64 bytes from 192.168.231.1: icmp_seq=6 ttl=64 time=2.80 ms
64 bytes from 192.168.231.1: icmp_seq=7 ttl=64 time=2.77 ms
^C
--- 192.168.231.1 ping statistics ---
7 packets transmitted, 7 received, +3 errors, 0% packet loss, time 6008ms
rtt min/avg/max/mdev = 1.184/2.772/3.671/0.706 ms

Отсюда возникают вопросы:

  • А что вообще плохого в этих редиректах?
  • Как без статического маршрута на роутерах компьютеры в сети вообще должны ходить в другую сеть? Не прописывать же везде маршруты руками?
  • Как правильно и стоит ли вообще решать эту ошибку? Ошибка ли это в данном случае?

icmp редирект легко подделывается и ваш трафик идет врагу-соседу

С другой стороны, они подсказывают, что роутинг не оптимальный.

Не подключай в сеть с клиентами дополнительные роутеры. Или настрой выдачу статических маршрутов через dhcp.

vel ★★★★★
()

Отсылку redirect’ов можно выключить через sysctl. Тогда пакеты до сети за VPN будут приходить на маршрутизатор от клиентов, скажем, через eth0, и потом идти обратно через eth0 на VPN-сервер. Ничего совсем плохого, кроме лишнего хопа и связанных с ним задержек, в этой схеме нет.

AEP ★★★★★
()

У меня есть сеть 192.168.100.0/24, у которой на 254 адресе сидит роутер. В эту сеть воткнут openvpn на адресе 192.168.100.253, у которого подсеть 10.20.30.0/24. Для того, чтобы компьютеры из сети 192.168.100.0/24 могли ходить в сеть 10.20.30.0/24 на роутере прописан статический маршрут, но в итоге при попытке пинговать узлы, я получаю ошибки:

[sssnake@loltech.lan@XQDwWcVtP7Qt ~]$ ping __192.168.231.1__

PING 192.168.231.1 (192.168.231.1) 56(84) bytes of data.
64 bytes from 192.168.231.1: icmp_seq=1 ttl=64 time=1.18 ms
From 192.168.100.254 icmp_seq=2 Redirect Host(New nexthop: 192.168.100.253)
64 bytes from 192.168.231.1: icmp_seq=2 ttl=64 time=2.96 ms

Отсюда возникают вопросы

kindof
()
Ответ на: комментарий от AVL2

Тогда тебе надо на интерфейсе роутера отключть отправку редиректов. В /etc/sysctl.conf:

net.ipv4.conf.eth0.send_redirects=0

И затем sysctl -p.

Если все еще не работает, и есть пакеты, которые приходят через интерфейс, отличный от того, через который должны бы отправляться ответы на них, то убери rp_filter:

net.ipv4.conf.eth0.rp_filter=0
AEP ★★★★★
()