Как заблокировать traceroute и разрешить ping?, RouterOS
shielder
Guest
0
22.04.2006 06:16:00
Привет, хочу заблокировать traceroute в моей сети, но разрешить ping. Я поискал в Google и нашел ICMP type 30 как traceroute, но когда попытался настроить это в опциях ICMP в брандмауэре, там нет type 30, только type 18. Так есть ли способ заблокировать traceroute, как я и хотел? Спасибо.
savage
Guest
0
22.04.2006 09:06:00
Хм, никогда раньше не слышал про ICMP Type 30, должен признать. Допустимые типы включают: echo reply (0), destination unreachable (3), source quench (4), redirect (5), echo request (8), router advertisement (9), router solicitation (10), time-to-live exceeded (11), IP header bad (12), timestamp request (13), timestamp reply (14), information request (15), information reply (16), address mask request (17) и address mask reply (18). Для ping нужны только ICMP 0 и ICMP 8 – строго говоря. Остальные можно блокировать без особых проблем. Возможно, я ошибаюсь, но я думаю, что traceroute использует ICMP 11. Блокировка traceroute только на ICMP не поможет. Traceroute также можно использовать с UDP, и traceroute можно выполнить на любом TCP/IP Порте, который вы укажете… TCP traceroute на порту 80: traceroute: Предупреждение: имеет несколько адресов; используется 207.46.225.60 traceroute до lb1. (207.46.225.60), 64 хопа максимум, 52 байта пакетов 1 198.18.0.35 1.253 мс 1.568 мс 0.911 мс 2 198.18.0.4 1.490 мс 2.120 мс 1.206 мс 3 * * * ^C Man page: Интернет — это большая и сложная совокупность сетевого оборудования, соединенных между собой шлюзами. Отслеживание маршрута, по которому следуют ваши пакеты (или обнаружение виновного шлюза, отбрасывающего ваши пакеты) может быть трудным. Traceroute использует поле протокола IP `time to live` и пытается вызвать ответ ICMP TIME_EXCEEDED от каждого шлюза на пути к какому-либо хосту.
<SNIP><SNIP>
-P Отправлять пакеты указанного протокола IP. Поддерживаемые протоколы: UDP, TCP, GRE и ICMP. Другие протоколы также могут быть указаны (либо по имени или по номеру), хотя traceroute не реализует никакой специальной информации об их форматах пакетов. Эта опция полезна для определения, какой маршрутизатор на пути может блокировать пакеты на основе номера протокола IP. Но см. BUGS ниже.
-p Протокол-специфичный. Для UDP и TCP устанавливает базовый номер порта, используемый в зондах (по умолчанию 33434). Traceroute надеется, что ничто не прослушивает порты UDP от base до base + nhops * nprobes - 1 на хосте назначения (чтобы был возвращен ICMP PORT_UNREACHABLE, завершающий трассировку маршрута). Если что-то прослушивает порт в диапазоне по умолчанию, эту опцию можно использовать для выбора неиспользуемого диапазона портов.
ezanolin
Guest
0
23.04.2006 13:20:00
Неважно, используете ли вы TCP, UDP или ICMP, метод выполнения traceroute один и тот же. Пакет отправляется с увеличивающимся значением IP TTL (Time To Live). Каждый раз, когда пакет проходит через маршрутизатор, маршрутизатор уменьшает TTL. Если TTL достигает нуля, маршрутизатор должен ответить источнику пакета сообщением ICMP "недоступно". Это сделано для того, чтобы предотвратить зацикливание маршрутов и остановить маршрутизаторы. Другое применение — это хитростью определить маршрут пакета, изменяя TTL до 1 для первого пакета, затем 2, затем 3 и так далее. То, что вам нужно блокировать, — это тип ответа ICMP 11. Если вы создаете новое правило брандмауэра, вам нужно выбрать тип ICMP на вкладке [General], а затем на вкладке [Advanced] развернуть панель ICMP-опций и выбрать тип ICMP 11 (время истекло). Сложность в том, что этот пакет нужно блокировать в цепочке Output, то есть вам нужно вернуться на вкладку [General] и выбрать Output из списка цепочек. Это связано с тем, что пакеты генерируются маршрутизатором и будут покидать цепочку Output, а не проходить через цепочку Forward. Если вы хотите заблокировать ответы traceroute с других маршрутизаторов, вы можете заблокировать их в цепочке Forward, но будьте осторожны, так как это не заблокирует ответы, сгенерированные самим маршрутизатором, а только те, которые проходят через него обратно. Надеюсь, это немного прояснило ситуацию. Cheers.
shielder
Guest
0
25.04.2006 04:54:00
Привет, спасибо за все ответы, я попробовал. Если я использую ICMP options type 11, то traceroute и ping все равно проходят через мой роутер, но если отключить ICMP options и заблокировать все ICMP-пакеты, то ни ping, ни traceroute больше не проходят через мой роутер. Думаю, дело в типе. ICMP type 30 - это то, что я искал в Google. Простите, если я не прав.
ezanolin
Guest
0
25.04.2006 23:40:00
Тип 30 — это ICMP-тип, который передаётся от клиента traceroute. Тип 11 — это то, чем отвечает маршрутизатор клиенту.
ceacu
Guest
0
05.05.2006 23:01:00
Еще одно, более элегантное решение: измените TTL на постоянное значение.
moazdabsheh
Guest
0
06.04.2014 18:43:00
Пожалуйста, подскажи, как это сделать.
panikosagros
Guest
0
01.06.2021 16:10:00
Можно настроить следующее (проверено и работает): /ip firewall filter add action=drop chain=output comment=“DROP_TRACEROUTE_REPLY 11:0” icmp-options=11:0 protocol=icmp src-address-list=IP_LIST add action=drop chain=output comment=“DROP_TRACEROUTE_REPLY 3:1” icmp-options=3:1 protocol=icmp src-address-list=IP_LIST Где "IP_LIST" – это публичные или приватные IP-адреса вашего роутера, на которые вы не хотите, чтобы роутер отвечал.
Примечание: 11:0 используется, когда роутер отвечает, если пакет достиг TTL 0, 3:0 – когда роутер отвечает сообщением о недостижимости назначения (даже если TTL ещё больше 1).