![如何设置路由器以通过包含白名单的内容过滤器路由所有内容](https://linux22.com/image/1419302/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%E8%B7%AF%E7%94%B1%E5%99%A8%E4%BB%A5%E9%80%9A%E8%BF%87%E5%8C%85%E5%90%AB%E7%99%BD%E5%90%8D%E5%8D%95%E7%9A%84%E5%86%85%E5%AE%B9%E8%BF%87%E6%BB%A4%E5%99%A8%E8%B7%AF%E7%94%B1%E6%89%80%E6%9C%89%E5%86%85%E5%AE%B9.png)
考虑一个通过 adsl 连接到互联网、有 3 个以太网端口(eth1 到 eth3)和 wifi 的路由器。
假设有一台 Linux 机器(用于进行内容过滤(白名单 - 仅允许特定的 IP 或 IP/TCP 组合或 URL(白名单)并阻止其他所有内容))连接到路由器上的 eth1,但从不连接到互联网。 可以永久阻止这台机器访问 adsl 互联网连接吗? 如何?
考虑到 eth2 和 eth3 上可能有另外两台机器,并且可能通过 wifi 还有更多机器。
是否可以设置路由器以将所有流量(原始物理层数据包)从 eth2、eth3 和所有 wifi 连接节点转发到 eth1,而 eth1 会将允许的数据包转发回路由器并丢弃其余数据包。路由器将使用 adsl(或 eth2 eth3 wifi)处理来自 eth1 的所有数据包。对于从 adsl 到 eth2、eth3 和 wifi 的所有数据包,必须存在类似的设置(adsl 到 eth2、eth3 和 wifi 必须首先发送到 eth1,然后发送到相应的设备)。如何设置?
答案1
通常,内容过滤器设置为代理服务器,这意味着它代表客户端连接到互联网。在这种配置下,阻止其访问互联网是不明智的,否则它无法正常工作。除非您像防火墙一样即时过滤,否则您可以添加规则,规定应丢弃来自内容过滤器的数据包。此外,大多数家用路由器和所有商用路由器都允许您丢弃以特定 IP 作为源的数据包。
如果所讨论的路由器是家用路由器,则 eth1 - eth3 和 wifi 都桥接在一起。也就是说,它们构成了同一个第 2 层网络,通常无法将它们视为单独的端口并单独应用路由决策。
在这种情况下,您需要将网络的默认网关设为内容过滤器。这样会将连接到路由器的任何设备的所有流量推送到内容过滤器。您通常无法使用家用路由器执行此操作,但您可以禁用路由器上的 DHCP 服务,并在内容过滤器上设置一个。
那么内容过滤器默认网关将是路由器。请注意,数据包将进出内容过滤器的同一接口,但这不应该成为问题。如果这是 Linux 机器,请确保包含/etc/sysctl.conf
:
net.ipv4.conf.all.send_redirects = 0
如果数据包到达路由器接口,但目的地是同一网络上的其他 IP 地址,这将阻止内容过滤器通知路由器直接连接到本地 IP 地址。正如您的情况一样。
最后一部分是确保所有传入流量都将进入内容过滤器。大多数家用路由器都允许您添加静态路由。如果您为整个内部网络范围添加静态路由(例如 192.168.0.0/24 以进入内容过滤器的 IP 地址),这将覆盖路由器将其连接的网络上的设备数据包直接发送到这些设备的自然倾向。相反,任何传入的内容都将进入内容过滤器。