这是我设置的规则..
iptables -P INPUT DROP
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
当我尝试建立传出连接时,连接被阻止了。
少了什么东西?
以下是输出iptables -n -L
Chain INPUT (policy DROP)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 source IP range 93.0.0.0-93.255.255.255
tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW recent: SET name: DEFAULT side: source
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW recent: UPDATE seconds: 60 hit_count: 15 name: DEFAULT side: source
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
注意..第一条规则用于阻止特定范围,接下来的两条规则用于限制任何人在 60 秒内可以发出的请求数量。
答案1
我没有看到任何允许传出连接的规则。你为什么认为它应该起作用?也许你忽略了一个事实,如果你建立传出连接到端口 80,返回数据包为从端口 80,不是到端口 80。
如果你想建立联系到端口 80,您有两种方法让返回数据包进入:
1)允许数据包从端口 80。
2) 允许属于现有会话的数据包。
我没有看到任何证据表明你做过这两件事。
答案2
为了详细说明戴维的回答,您可以通过在表中添加以下规则来允许属于现有会话的数据包filter
:
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允许ESTABLISHED
状态下的输入数据包将允许大多数传出连接按预期工作,包括非 TCP“无连接”内容,例如 DNS 查询(UDP)和 ping(ICMP)。
允许RELATED
状态下的输入数据包使您能够接收可能因连接到管理上禁止的端口/主机/网络等的连接尝试而返回的 ICMP 错误消息。