问题描述
我有一系列 Ubuntu 10.04 服务器,每台服务器都启用了 ufw 防火墙。我已允许端口 22(用于 SSH)和 80(如果它是网络服务器)。我的问题是我正在尝试启用 icmp 回显响应(ping 回复)。
ICMP 的功能与其他协议不同——我知道它在技术意义上低于 IP 级别。您可以只输入 sudo ufw allow 22
,但不能输入 sudo ufw allow icmp
最佳回答
ufw 不允许通过命令行界面命令指定 icmp 规则。它确实允许您通过其规则文件(iptables-restore 样式文件)调整规则集。
ufw 默认情况下允许某些 icmp 流量,包括 icmp echo 回复,并且默认情况下已在 /etc/ufw/before.rules
中配置:
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
如果您的主机没有响应 ping,请查看此文件以确保上面的行存在,如果不起作用,请查看 ping 主机以及它们之间的任何防火墙。
次佳回答
对于 Ubuntu 18.04,您的 /etc/ufw/before.rules 文件中应包含以下规则:
# ok icmp codes for INPUT
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
# ok icmp code for FORWARD
-A ufw-before-forward -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type source-quench -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type echo-request -j ACCEPT
这些在我的默认文件中。
当然,请确保这确实是问题所在。我的问题是我的计算机阻止 ping 到达我尝试 ping 的服务器所在的网络。我最终使用了互联网上已经存在的网站来为我执行 ping 操作(例如 https://ping.eu/ping/ )。
第三种回答
将以下内容添加到 /etc/ufw/before.rules 文件中:
# allow outbound icmp
-A ufw-before-output -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A ufw-before-output -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
编辑文件后,运行命令:
sudo ufw reload