У меня есть маршрутизатор Linux, он подключается к Интернету через pppoe с динамическим IP
и я бы хотел, чтобы он НЕ отвечал на ping (или любой другой тип icmp) извне (из Интернета), НО я хотел бы, чтобы этот ping (и все icmp, такие как traceroute, tcptraceroute, mtr и т. д.) изнутри (LAN) и от сервера к внешним целям работать, как я могу это сделать?
Я предполагаю, что под «маршрутизатором Linux» вы подразумеваете компьютер под управлением Linux, выступающий в качестве маршрутизатора.
Отбросить icmp трафик извне:
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
DROP
просто сбросит их, не посылая сообщение об ошибке на пинг хоста.Вы также можете использовать REJECT
вместо того DROP
, что отправит сообщение об ошибке.
Разрешить внешнему трафику icmp:
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
Убедитесь, что у вас есть расширение icmp для iptables, и отбрасывайте пакеты с типом icmp 8 на внешний интерфейс (--protocol icmp --icmp-type 8)