我的服务器:64 位 Ubuntu 12.04.4 LTS。提供商:Linode.com。没有其他防火墙。
我有这些规则:
*filter
# Allow localhost traffic. This rule is for all protocols.
-A INPUT -s ::1 -d ::1 -j ACCEPT
-A INPUT -p icmpv6 -j ACCEPT
-A OUTPUT -p icmpv6 -j ACCEPT
#Allow image server
-A INPUT -m tcp -p tcp --dport 31333 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 443 -j ACCEPT
COMMIT
ping 甚至可以在外部进行。但是 telnet 在本地主机上无法工作。
% telnet -6 2600:3c00:0:0:f03c:91ff:fe73:2b08 80
Trying 2600:3c00:0:0:f03c:91ff:fe73:2b08...
可能是什么问题呢?
最终,我的服务器将在端口 31333 上侦听来自 Chrome 浏览器 WebSocket 接口的请求。我希望先查看端口 80 上的 telnet 是否正常工作,然后再在端口 31333 上工作。
看起来 Apache 需要绑定到 64 位地址。但我甚至添加了这一行来查看 ftp 是否正常工作,但 telnet 仍然无法连接:
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
新的审判
根据迈克尔·汉普顿的建议,我已经运行ip6tables -F
以清除规则并且现在正在运行 ip6tables -L
节目:
Chain INPUT (policy DROP)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
但仍然无法连接到端口 80(使用 IPv4 则可以):
# telnet -6 2600:3c00::f03c:91ff:fe73:2b08 80
Trying 2600:3c00::f03c:91ff:fe73:2b08... ^C
# telnet -6 2600:3c00:0:0:f03c:91ff:fe73:2b08 80
Trying 2600:3c00::f03c:91ff:fe73:2b08...
# telnet 23.239.30.81 80
Trying 23.239.30.81... Connected to 23.239.30.81. Escape character is '^]'.
答案1
您的防火墙配置为丢弃所有流量,即使没有任何规则。这将是问题的根源。
Chain INPUT (policy DROP) Chain OUTPUT (policy DROP)
将这些表的策略重置为“接受”以恢复连接。
ip6tables -P INPUT ACCEPT
ip6tables -P OUTPUT ACCEPT
然后你就可以继续构建适当的防火墙。