Есть Slackware 9.1 работает как маршрутизатор. Как правильно настроить iptables для прохождения запросов traceroute?
На мой взгляд, Запрос даже не покидает маршрутизатор. Значит все дело в настройках iptables. Кто знает, подскажите, плиз.
[snapback]7761[/snapback]
Потому что все не правильно. Подумайте хорошенько. И срочно читать IPTables Tutorial, т.к. похоже что в голове нет ясности по тому как iptables работает.
Во-первых. traceroute в unix и в винде работает немного по разному. В unix по умолчанию используются udp пакеты (ключик -I меняет такое поведение), в Винде icmp.
При трассировке с хоста за маршрутизатором пакеты проходят только FORWARD (из указанных выше цепочек).
При трассировке с самого маршрутизатора исходящие пакеты проходят OUTPUT, а входящие INPUT.
Поэтому для трассировки с хостов за маршрутизатором нужно разрешить прохождение icmp пакетов через FORWARD и udp, если в сети есть UNIX машины.
Для трассировки с самого маршрутизатора нужно разрешить аналогичные пакеты в INPUT и в OUTPUT.
Самый лучший способ -- разрешить все пакеты, запустить tcpdump и понаблюдать за тем какие пакеты в каком направлении проходят. Это поможет разобраться и написать правила.
Потому что все не правильно. Подумайте хорошенько. И срочно читать IPTables Tutorial, т.к. похоже что в голове нет ясности по тому как iptables работает.
Во-первых. traceroute в unix и в винде работает немного по разному. В unix по умолчанию используются udp пакеты (ключик -I меняет такое поведение), в Винде icmp.
[snapback]7762[/snapback]
Роберт Л. Зиглер, "Брандмауэры в Linux"
"Система traceroute использует протокол UDP и работает следующим образом. При прохождении данных от исходного компьютера к месту назначения все промежуточные узлы генерируют ICMP-сообщения Time Exceeded, а целевой узел передает сообщение Destination Unreachable."
Использовал этот источник, правда там все настройки для ipchains.
Самый лучший способ -- разрешить все пакеты, запустить tcpdump и понаблюдать за тем какие пакеты в каком направлении проходят. Это поможет разобраться и написать правила.
[snapback]7762[/snapback]
При всех целях ACCEPT все работает.
В исходящих тоже ошибка
OUTPUT
# traceroute service
$IPTABLES -A OUTPUT -o $ISPDEV -p udp \
-s $HOMENET --sport $TRACEROUTE_SRC_PORT \
-d $ANYADDR --dport $TRACEROUTE_DEST_PORT -j ACCEPT
если указан -o $ISPDEV то -s $HOMENET ну никак не может быть.
(Я полагаю что $HOMENET это что-то вроде 192.168.0.0/24)
Соответственно под указанное правило пакеты не попадают и грохаются.
[snapback]7763[/snapback]
Ваша правда. Грохнул -s $HOMENET и с маршрутизатора пошло.
Буду рыть FORWARD.
Спасибо за потраченное на меня время.
Ваша правда. Грохнул -s $HOMENET и с маршрутизатора пошло.
Буду рыть FORWARD.
Спасибо за потраченное на меня время.
[snapback]7784[/snapback]
Еще раз акцентирую внимание на том, что Винда отправляет не udp пакеты, а icmp echo request. См. также ключ -I для traceroute.
А с ACCEPT естественно все будет проходить, но наблюдение в tcpdump за проходящими пакетами позволит сделать вывод о том как происходит процесс обмена пакетами и устранить ошибки в правилах. По крайней мере мне очень помогало. В некоторых случаях различные авторы допускают разночтения стандартов и реализуют протоколы на свой странный манер.
Роберт Л. Зиглер, "Брандмауэры в Linux" очень хорошая книжка, жаль не хотят переводить последнее издание, там все на iptables уже переписано.