我正在使用 iptables 阻止连接到我的热点的设备上的互联网访问(通过重定向到内部服务器)。这是我的命令:
iptables -t nat -I PREROUTING -p tcp -s 192.168.43.51 -j DNAT --to-destination 192.168.43.1:12345
iptables -t nat -I PREROUTING -p udp -s 192.168.43.51 ! --dport 53 -j DNAT --to-destination 192.168.43.1:12345
192.168.43.51 是我要阻止的设备,192.168.43.1:12345 是内部服务器。所以它可以工作,但实际阻塞和命令执行之间存在延迟。例如,当我下载文件时,我正在执行该命令,但文件会持续下载 5-15(大约)秒,而用户可以消耗一些额外的数据。怎么解决呢?
答案1
在 OUTPUT 规则中阻止它,除了你的 IP。
iptables -I FORWARD -s 192.168.43.51 ! -d 192.168.43.1 -j DROP
iptables -I FORWARD -m state --state ESTABLISHED,RELATED -s 192.167.43.51 ! -d 192.168.43.1 -j DROP
答案2
所以,这是有效的解决方案:
iptables -I FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -s 192.168.43.51 ! -d 192.168.43.1 -j DROP