答案1
另一个选项(不使用防火墙)是设置 Linux 内核选项。
由于 Linux 中的大多数内容都是以文件形式访问的,因此内核设置被映射到特殊的/proc
文件系统中
echo 1 | sudo tee /proc/sys/net/ipv4/icmp_echo_ignore_all
您还可以通过在文件中设置值来使其永久生效/etc/sysctl.conf
:
net.ipv4.icmp_echo_ignore_all = 1
然后执行 sysctl 并设置-p
标志位以激活
sudo sysctl -p
答案2
您可以通过两种方法来实现:使用ufw
或iptables
。
使用联邦水务局
您需要添加:
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
到:
/etc/ufw/before.rules
然后运行:
sudo ufw disable
sudo ufw enable
使用iptables
添加以下规则:
iptables -A OUTPUT -p icmp -o eth0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -s 0/0 -i eth0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -s 0/0 -i eth0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type time-exceeded -s 0/0 -i eth0 -j ACCEPT
iptables -A INPUT -p icmp -i eth0 -j DROP