语境
我有两个网络,可信网络:10.0.1.0/24 和不可信网络:10.0.2.0/24,具有相当标准的设置,执行以下操作:
- NAT/掩码
- 两个网络上的访客都可以连接到互联网
- 两个网络上的访客都可以连接到防火墙上的服务(dns、dhcp)
目前,两个网络中的所有访客都可以看到自己网络中的其他访客。
问题
什么规则可以阻止不受信任网络中的客户端互相看到或看到受信任网络上的客户端?
例如 0.0.2.12 不应该看到 10.0.2.13 或 10.0.1.11。
受信任网络上的客户端应该可以看到彼此,也可以看到不受信任的客户端(现在可以使用)。
答案1
你有三个问题。鉴于我没有完整的配置,我给出了一些简单的命令,这些命令可能有效,或者可能需要根据你的配置进行调整
如何防止不受信任的局域网访问安全局域网?
iptables -A FORWARD -s 10.0.2.0/24 -d 10.0.1.0/24 -j DROP
不言自明:来自源 10.0.2.0/24 的数据包永远不能跨越到 10.0.1.0/24。
如何仍然允许从安全局域网访问不受信任的局域网?
iptables -I FORWARD -s 10.0.2.0/24 -d 10.0.1.0/24 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -I FORWARD 2 -s 10.0.1.0/24 -d 10.0.2.0/24 -j ACCEPT
请注意,使用-I
这些命令可以将这些命令放在第一个问题的答案中的命令之前,并使用2
保持通常的顺序。第二个命令不是必需的,它在这里给出意图,是否需要它取决于您的配置。第一个命令允许来自不受信任的应答数据包返回到受信任的,方法是查询netfilter 的 conntrack 功能。这仅适用于之前从受信任到不受信任发起的连接,在两个 LAN 之间有效。通常,第一个命令是全局写入一次(不使用-s
并将-d
其限制在这两个 LAN 内)。
- 如何防止同一局域网内其他不受信任的主机访问不受信任的主机?
虽然前两个问题可以用在第 3 层工作的路由器来处理:IP,但最后一个问题却不能轻易解决:主机在其 LAN 中彼此之间不路由(即在第 3 层),它们共享第 2 层设备(例如交换机),并且必须使用在此级别工作的工具。iptables
在第 3 层工作不能单独使用。相应的隔离实现称为私有 VLAN.该功能通常直接在网络设备上实现。
如果在标准 Linux 服务器上执行相同的操作,则需要大量网络接口才能像交换机一样工作(管理虚拟环境使其更容易,因为可以自由添加接口)。为此,第 2 层的防火墙是使用 完成的ebtables
。以下是有关此主题的一些问答:
https://unix.stackexchange.com/questions/12026/private-vlans-under-linux
https://serverfault.com/questions/388544/is-it-possible-to-enable-port-isolation-on-linux-bridges
如果 Linux 服务器的端口数量有限,因此它本身不能充当这交换机,它需要一种方法来接收来自不受信任的 LAN 的所有流量,并在每个数据包上添加一些标签来识别其来源,这可能需要异常多的 VLAN 以及网络设备上的特定配置。