利用 iptables 实现黑名单:
首先,设置 FORWARD 默认策略为信任:ACCEPT
iptables -P FORWARD ACCEPT
例如,我们想要让用户无法访问 百度。我们只需要设置 FORWARD 链上。目标为 百度 的所有数据丢弃即可:
iptables -I FORWARD -d m.baidu.com -j DROP
既然知道了这个原理。我们便可以写一个简单的黑名单脚本文件,把所有禁止用户访问的域名 IP 写到 black.txt 文件中,黑名单脚本文件 black.sh
black.sh 内容如下:
root@goldsunny:~# vi black.sh
#!/bin/ash
echo run black shell!
iptables -P FORWARD ACCEPT
cat black.txt | while read line
do
echo iptables -I FORWARD -d $line -j DROP
iptables -I FORWARD -d $line -j DROP
done
black.txt内容如下:
root@goldsunny:~# cat black.txt
www.baidu.com
m.baidu.com
运行该脚本文件。然后查看 iptables 发现已经生效。
root@goldsunny:~# iptables -L FORWARD
Chain FORWARD (policy ACCEPT)
target prot opt source destination
root@goldsunny:~#
root@goldsunny:~#
root@goldsunny:~# ./black.sh
run black shell!
./black.sh: line 5: ptables: not found
iptables -I FORWARD -d www.baidu.com -j DROP
iptables -I FORWARD -d m.baidu.com -j DROP
root@goldsunny:~#
root@goldsunny:~#
root@goldsunny:~# iptables -L FORWARD
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere 53.16.185.117.in-addr.arpa
DROP all -- anywhere 111.13.100.92
DROP all -- anywhere 111.13.100.91
手机连接 rt5350 的wifi。发现可以上新浪等网站。但是无法上百度。说明防火墙黑名单设置成功。