我尝试屏蔽除 Google.se 之外的所有 IP。但不起作用(网站不显示)
以下是我写的内容:
#/bin/sh
echo "Flushing IPTables..."
sleep 1
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
echo "Done!"
echo "Setting Firewall..."
sleep 1
iptables -A INPUT -p tcp -m iprange --src-range 0.0.0.0-255.255.255.255 -j DROP
iptables -A OUTPUT -p tcp -m iprange --src-range 0.0.0.0-255.255.255.255 -j DROP
iptables -A FORWARD -i wlan0 -d www.google.se -p tcp --dport 80 --sport 1024:65355 -j ACCEPT
echo "Done!"
谢谢。
答案1
我发现您的防火墙存在一些问题,主要是您似乎在输入和输出时丢弃了一些东西,但忽略了转发。因此,本地计算机上的所有内容都将被阻止,但防火墙后面的计算机上的内容不会被阻止。
您不清楚您是想阻止进入/离开运行防火墙规则的设备的流量,还是想阻止防火墙后面的东西。同样,您也没有建议是否要阻止传入或传出的流量(在网页浏览时,这两种方式都会产生相同的明显影响,但安全隐患不同)
如果您想要阻止转发内容(如脚本最后一行所暗示的),并且您不担心从实际执行防火墙的盒子进行的访问(并且根据您的示例,默认值设置为接受):
iptables -A FORWARD -j DROP
iptables -I FORWARD -i wlan0 -d www.google.se -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
应该可以工作,只要客户端使用本地 DNS 服务器并且能够解析 www.google.se — 并且重要的是(但可能是无效的假设),名称服务器始终将 www.google.se 解析为相同的 IP 地址。
第一行表示“如果流量通过此框而我对此不知情,则不允许流量通过”。插入的第二行(因此在上面一行之前读取)表示允许对 www.google.se 的出站请求第三行表示“如果我们成功连接到 IP,我们可以允许它与我们通信”。