我唯一的路由器是使用 ewan 端口连接到互联网的 billion 7800n。我有 4 台计算机连接到它,其中 2 台使用有线,2 台使用 wifi。我想将其中一个有线端口与查看其他计算机隔离,但我仍然希望所有计算机都能访问互联网。使用 Web GUI 似乎无法设置,但我可以访问 busybox 提示符。关于如何做到这一点,有什么建议吗?
谢谢丹
答案1
您必须使用 iptables。假设您的路由器是 192.168.1.1,您的普通客户端是 192.168.1.2-4,而您要隔离的客户端是 192.168.1.100。那么以下规则就可以了:
iptables -A FORWARD -s 192.168.1.100 -d 192.168.1.2 -j DROP
iptables -A FORWARD -s 192.168.1.100 -d 192.168.1.3 -j DROP
iptables -A FORWARD -s 192.168.1.100 -d 192.168.1.4 -j DROP
原则上这应该足够了。但是,如果使用 192.168.1.100 的人可以访问(甚至是物理访问)其他机器,则阻止建立反向隧道可能是有意义的,在这种情况下,我会添加以下规则:
iptables -A FORWARD -s 192.168.1.2 -d 192.168.1.100 -j DROP
iptables -A FORWARD -s 192.168.1.3 -d 192.168.1.100 -j DROP
iptables -A FORWARD -s 192.168.1.4 -d 192.168.1.100 -j DROP
要实现这一点,有两个条件:首先,通过 192.168.1.100 的通信必须经过路由器。换句话说,您必须将 192.168.1.100 连接到路由器,而不是交换机。如果将其连接到交换机,由于它是内部流量,交换机将能够将来自 192.168.1.100 的通信尝试转发到连接到交换机的其他 PC,而无需通过路由器,即直接转发,并且上述命令永远不会应用。其次,PC 必须始终具有相同的 IP 地址;您可以使用静态 IP 或保留 IP(在路由器 GUI 中设置的功能)来实现这一点。
编辑:
根据维基百科,
在计算机网络中,单个第 2 层网络可以划分为多个不同的广播域,这些广播域相互隔离,以便数据包只能通过一个或多个路由器在它们之间传递;这样的域称为虚拟局域网、虚拟 LAN 或 VLAN。
“数据包只能通过一个或多个路由器在它们之间传递”的情况正是我刚才描述的那种情况。唯一的区别是 192.168.1.100 将能够拦截广播流量。这在这里没什么用,但是如果您愿意,我仍然可以修改 iptables 规则以获得该效果。否则,我上面描述的解决方案与您在评论中提到的解决方案相同。