我有一台 Raspberry Pi,将其用作路由器。我想构建一个数据包过滤网络,但我不知道如何实现。
我所做的是这样的:
sudo iptables -w -N YOUTUBE
sudo iptables -w -A YOUTUBE -j REJECT
sudo iptables -w -I OUTPUT -p all -m string --string "youtube.com" --algo kmp -j YOUTUBE
sudo iptables -w -I FORWARD -p all -m string --string "youtube.com" --algo kmp -j YOUTUBE
sudo iptables -w -I OUTPUT -p all -m string --string "googlevideo.com" --algo kmp -j YOUTUBE
sudo iptables -w -I FORWARD -p all -m string --string "googlevideo.com" --algo kmp -j YOUTUBE
# ... (some other domains)
这是过滤 YouTube 的一个示例。
当我以隐身模式打开浏览器并转到 YouTube 时,我的电脑无法访问它。它的行为符合我的预期。
但是,当我尝试非隐身模式时,无论经过多长时间,它仍然可以访问 YouTube。
为什么会出现这种情况?我该如何解决?
顺便说一句,我尝试使用 Dnsmasq 屏蔽 YouTube,成功了。但我现在想做的是在 TCP/IP 级别进行限制。
谢谢。
答案1
我最终自己解决了这个问题。
看起来.
字符串里的字母被转换成了描述后续字母数量的数字。
我将以前的命令更新为以下命令,并且它似乎运行良好。
sudo iptables -w -I OUTPUT -p all -m string --hex-string "youtube|03|com" --algo bm -j YOUTUBE
sudo iptables -w -I FORWARD -p all -m string --hex-string "youtube|03|com" --algo bm -j YOUTUBE
sudo iptables -w -I OUTPUT -p all -m string --hex-string "googlevideo|03|com" --algo bm -j YOUTUBE
sudo iptables -w -I FORWARD -p all -m string --hex-string "googlevideo|03|com" --algo bm -j YOUTUBE
不过,我还是不确定为什么前一个在隐身模式下也能正常工作。