我如何让 iptables 阻止 YouTube 数据包?

我如何让 iptables 阻止 YouTube 数据包?

我有一台 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

不过,我还是不确定为什么前一个在隐身模式下也能正常工作。

相关内容