我想用 iptables 设置防火墙,但它总是阻止我不想阻止的东西 :(
添加例外并执行以下代码后:
iptables -A INPUT -j DROP
我无法运行:
curl www.whatismyip.com/automation/n09230945.asp
curl www.whatismyip.com
我添加了 whois 列出的 whatismyip.com 的所有 IP 和名称服务器:
iptables -A 输入 -s 72.233.195 -j 接受
iptables -A 输入 -s 72.233.195 -j 接受
iptables -A 输入 -s 72.233.195 -j接受
iptables -A 输入 -s 72.233.195 -j 接受 iptables -A 输入 -s 72.233.195 -j 接受
iptables
-A 输入 -s 72.233.195 -j 接受
答案1
要检查的一些事项:
- 您是否阻止了 DNS?仅仅解除对 whatismyip.com 名称服务器的阻止是不够的;要找出 www.whatismyip.com 正在使用的名称服务器,您的机器至少需要通过另一个名称服务器。
- 您的 OUTPUT 策略中是否有任何内容阻止您访问该站点?
此外,为了进行调试,我建议您在每个 -j DROP 前面立即添加 -j LOG;这样,您就可以查看系统日志以查看删除了什么。
答案2
我建议使用状态检查iptables。通过添加此规则
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
您调用的页面的 DNS 服务器和 Web 服务器可以向您发送对您的请求的响应。
当然您必须在 OUTPUT 链上允许 DNS 和 HTTP 请求。
答案3
以下是名称为 www.whatismytrip.com 的 IP
72.233.89.198 72.233.89.199 72.233.89.200
1) 按照“tetromino”的建议,检查您的 DNS 设置。查看名称是否已解析。
2) 您使用 -A 选项将规则附加到 INPUT 链的末尾。使用 iptables -L 检查默认的 drop-all 规则是否是最后一个。
3)您还必须在OUTPUT链中为其解析的所有IP添加规则。
iptables -A 输出 -d 72.233.89.198 -j 接受