我有一个 Linux 路由器,它通过 pppoe 使用动态 IP 连接到互联网
我希望它不要响应来自外部(互联网)的 ping(或任何其他类型的 icmp),但我希望来自内部(LAN)和从服务器到外部目标的 ping(以及所有 icmp,例如 traceroute、tcptraceroute、mtr 等)能够工作,我该怎么做?
答案1
我猜你说的“Linux 路由器”是指运行 Linux 并充当路由器的计算机。
丢弃来自外部的 icmp 流量:
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
- -A 输入:发往本地套接字的数据包。
- -p icmp:指定要使用的协议,在本例中为 icmp
- --icmp-type 回显请求:指定要过滤的icmp数据包类型
- -j 删除:匹配过滤器时要做什么。
DROP
将直接丢弃它们,而不会向主机 ping 发送任何错误消息。
您还可以使用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
- -A 输出:本地生成的数据包。
- -p icmp:指定要使用的协议,在本例中为 icmp
- –icmp 类型 echo 回复:指定要过滤的icmp数据包类型
- -j 接受:匹配过滤器时该做什么。我们接受只回复
答案2
确保你有可用的 iptables icmp 扩展,并在外部接口上丢弃 icmp 类型为 8 的数据包(--protocol icmp --icmp-type 8)