iptables 访客网络隔离不起作用

iptables 访客网络隔离不起作用

我有一个树莓派,它被设置为路由器,为访客网络提供服务。

设置如下:

  • Pi 接口 eth0 连接到本地家庭网络(192.168.10.0/24)
    • 通过这个网络,Pi 可以连接到互联网
  • Pi 接口 eth1 连接到本地访客网络
    • 这使用 USB 转 RJ45 适配器
    • Pi 在此网络上充当 DHCP(192.168.20.0/24)

Pi 所连接的交换机有几个端口被分配到 VLAN,因此它们与我的家庭网络是分开的。

到目前为止一切都运行正常。

下一步:授予访客网络互联网访问权限

通过以下命令我完成了该操作:

# Enable Forwarding
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo nano /etc/sysctl.conf
   # Uncomment the next line to enable packet forwarding for IPv4:
   net.ipv4.ip_forward=1

# Allow NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

所以现在我的访客网络可以访问互联网,但也可以访问我的本地家庭网络。

我需要一些 iptables 规则方面的帮助来限制访问。

我希望得到以下工作:

  • 客人隔离
    • 访客网络上的任何成员都无法看到/连接/ping 该网络上的任何其他成员
  • 不允许访客网络成员访问我的家庭网络
  • 我的家庭网络成员无权查看/连接/ping 访客网络上的任何成员
    • 我想我已经明白了?(如果我错了请纠正我)

这是我目前的 iptables 配置:

# Restrict Access to Interface eth0 (local home network)
# Drop all traffic from RFC 1918 subnets
# Allow SSH and Ping from local home network to Pi's
# interface on the local home network for remote administration

sudo iptables -A INPUT -s 192.168.0.0/16 -i eth0 -j DROP
sudo iptables -A INPUT -s 10.0.0.0/8 -i eth0 -j DROP
sudo iptables -A INPUT -s 172.16.0.0/12 -i eth0 -j DROP
sudo iptables -A INPUT -s 224.0.0.0/4 -i eth0 -j DROP
sudo iptables -A INPUT -s 240.0.0.0/5 -i eth0 -j DROP
sudo iptables -A INPUT -s 127.0.0.0/8 -i eth0 -j DROP
sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j ACCEPT

所以理论上除了 ping 和 SSH 之外我无法从本地网络连接到访客网络中的任何内容,对吗?

我该如何扭转这种局面,让我的访客网络计算机无法连接到本地家庭网络中的任何内容,但仍可访问互联网?在我的测试中,我要么限制所有内容(甚至互联网),要么我仍然可以访问网络共享。

问候 Alkahna

答案1

经过多次尝试和错误,我得出了以下命令/规则

sudo iptables -I FORWARD -d 192.168.0.0/16 -i eth1 -j DROP
sudo iptables -I FORWARD -d 10.0.0.0/8 -i eth1 -j DROP
sudo iptables -I FORWARD -d 172.16.0.0/12 -i eth1 -j DROP
sudo iptables -I FORWARD -d 224.0.0.0/4 -i eth1 -j DROP
sudo iptables -I FORWARD -d 240.0.0.0/5 -i eth1 -j DROP
sudo iptables -I FORWARD -d 127.0.0.0/8 -i eth1 -j DROP
sudo iptables -I FORWARD -d 127.0.0.0/8 -i eth1 -j DROP

基本上丢弃进入 eth1(我的访客网络)的以 RFC 1918 子网为目的地的所有内容。

有了这些规则,我就无法 ping 我的家庭网络。

但是,我可以通过某种方式 ping 通家庭网络中 Pi 的第二个 NIC,应该是这样吗,或者这会引起什么担忧?

但我对于客人隔离仍不甚了解。

相关内容