我一直试图从 github 拉取数据,但一直挂起。我的 iptables 规则没有阻止传出流量的规则,但我无法使用 ssh 或 http 连接到 github。我甚至无法通过 localhost 连接到 ssh 服务器。当我禁用防火墙时,这个问题就消失了。我知道 ssh 服务器允许传入,因为我仅通过 ssh 连接到服务器。
这是我的输出iptables -nvL
:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
92 6872 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9418
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5000
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
1 44 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 50 packets, 5664 bytes)
pkts bytes target prot opt in out source destination
我不知道这里发生了什么,在我看来应该允许传出数据包?
答案1
您需要接受已建立连接的规则。通常第一条规则应采用这种形式。
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
您似乎还缺少接受 IP 正常运行所需的 ICMP 数据包的规则。
-A INPUT -p 1 --icmp-type 3/4 -j ACCEPT -m comment --comment "Needed ICMP types"
-A INPUT -p 1 --icmp-type 11 -j ACCEPT -m comment --comment "Needed ICMP types"
答案2
乍一看,你好像丢弃了返回的包。将以下规则添加到你的 iptables 中:
/usr/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
接受退回包裹。