[РЕШЕНО] Отключить ICMP Redirect

Автор tetramin, 16 мая 2013, 11:27:03

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

tetramin

Добрый день.

Собственно, если бы сработало это:

net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

то я бы и не написал. Хоть ты ему кол на голове теши, он (Debian, конечно) всё равно говорит, что есть лучший маршрут, который берёт из таблицы. Как мне его от этого отучить?

Открыть содержимое (спойлер)

Вкратце напишу предысторию. У меня шлюз. Там 2 таблицы маршрутизации. В них попадают пакеты, которые помечаются каждый своей меткой (в зависимости от пользователя, отправившего пакет). Когда пингую адрес в интернете с одного из компов (на котором линукс) в ответ приходит сообщение, мол Redirect Host(New nexthop: 192.168.1.1). Это очень плохо. Может какую-то информацию дать ещё, чтобы было более ясно, о чём идёт речь?
[свернуть]

fry

А если запретить icmp через iptables? Если политика для INPUT по умолчанию DROP, тоiptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
А все остальное, связанное  с icmp, удалить.
Товарищи призывники! Надо понимать всю глубину наших глубин!

Руководство по добавлению изображений на форум

tetramin

Если прописать на хосте, с которого пингую, то не получается. Если прописать на шлюзе в OUTPUT запрет вообще на все icmp, то тоже не получается.

fry

#3
Что именно не получается? Это делается на сервере (шлюзе). Этой командой мы разрешаем входящие icmp-сообщения с типом 8 (эхо-запрос) http://ru.wikipedia.org/wiki/ICMP. Какие у вас политики по умолчанию? Выложите сюда вывод #iptables -vLдо и после применения правила.
P.S. извините, я не прочитал вопрос полностью. не заглянул под спойлер. Попробуйте добавить на шлюзе правила.
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
iptables -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp -j DROP
Товарищи призывники! Надо понимать всю глубину наших глубин!

Руководство по добавлению изображений на форум

tetramin

#4
Вот до:
Открыть содержимое (спойлер)

iptables -nvL
Chain INPUT (policy ACCEPT 11927 packets, 1644K bytes)
pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 822 packets, 216K bytes)
pkts bytes target     prot opt in     out     source               destination         
79417   48M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate RELATED,ESTABLISHED
3448  343K inet_dsl   all  --  eth3   *       0.0.0.0/0            0.0.0.0/0           ctstate NEW

Chain OUTPUT (policy ACCEPT 11761 packets, 1418K bytes)
pkts bytes target     prot opt in     out     source               destination         
   35  5270 DROP       icmp --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain inet_dsl (1 references)
pkts bytes target     prot opt in     out     source               destination         
   71  4101 RETURN     all  --  *      *       192.168.1.214        0.0.0.0/0           
1601  238K RETURN     all  --  *      *       192.168.1.50         0.0.0.0/0           
1776  100K RETURN     all  --  *      *       192.168.1.51         0.0.0.0/0           
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable

[свернуть]

Вот после:
Открыть содержимое (спойлер)

iptables -nvL
Chain INPUT (policy ACCEPT 5 packets, 446 bytes)
pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp !type 8

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
79665   49M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate RELATED,ESTABLISHED
3453  343K inet_dsl   all  --  eth3   *       0.0.0.0/0            0.0.0.0/0           ctstate NEW

Chain OUTPUT (policy ACCEPT 2 packets, 228 bytes)
pkts bytes target     prot opt in     out     source               destination         
   35  5270 DROP       icmp --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain inet_dsl (1 references)
pkts bytes target     prot opt in     out     source               destination         
   71  4101 RETURN     all  --  *      *       192.168.1.214        0.0.0.0/0           
1606  239K RETURN     all  --  *      *       192.168.1.50         0.0.0.0/0           
1776  100K RETURN     all  --  *      *       192.168.1.51         0.0.0.0/0           
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable

[свернуть]

Но у меня ACCEPT по умолчанию, поэтому я запретил просто всё, что НЕ 8.

Сообщение объединено: 16 мая 2013, 16:31:34

Цитата: fry от 16 мая 2013, 15:36:23Попробуйте добавить на шлюзе правила

Не помогает. Это я пробовал сделать. Я так же пробовал запретить входящие icmp на хосте - то же самое.

fry

#5
ЦитироватьRedirect Host(New nexthop: 192.168.1.1)
А от кого это сообщение приходит? Там поле from должно быть еще.
Странно, что предыдущий вариант не работает. По логике, этого было бы достаточно.
Снова туплю. Раз nexthop, то и сообщение от шлюза приходит.
Тогда...
С какого хоста пытаетесь пинговать?
eth3 - сетевая к провайдеру, я так понял?
Зачем этот огород с RETURN? Может лучше дропать по умолчанию все, а разрешить только нужное? Это был бы лучший вариант. Во всяком случае, для INPUT и FORWARD.
Нашел вот такой вариант http://forum.oszone.net/post-870025.html#post870025
Попробуйте явно правилами задать разрешение форвардинга пакетов. Помимо политик по умолчанию.
Товарищи призывники! Надо понимать всю глубину наших глубин!

Руководство по добавлению изображений на форум

tetramin

Решил проблему - это я сам не углядел. У меня же:

ip ru
0: from all lookup local
32762: from 192.168.1.52 fwmark 0x2 lookup inet_dsl
32763: from 192.168.1.0/24 lookup inet_ppp
32764: from all fwmark 0x1 lookup inet_ppp
32765: from all fwmark 0x2 lookup inet_dsl
32766: from all lookup main
32767: from all lookup default

Вот такие правила, только без первых двух (32762 и 32763), были. Вот и проходил пакет до таблицы default, где как раз и был 192.168.1.1 прописан. Решил добавлением:

ip ru add from 192.168.1.0/24 table inet_ppp
ip ru add from 192.168.1.52 fwmark 2 table inet_dsl