![结合使用 OpenVPN 和 iptables](https://linux22.com/image/636079/%E7%BB%93%E5%90%88%E4%BD%BF%E7%94%A8%20OpenVPN%20%E5%92%8C%20iptables.png)
假设有三个网络,WAN、LAN-A 和 LAN-B。中间有一个防火墙服务器将网络相互连接。iptables 确保以下事项:
- 外部 WAN 用户无法访问两个本地网络
- LAN-A 中的用户可以通过防火墙访问 LAN-B,但是……
- LAN-B 中的用户无法访问 LAN-A
防火墙机器使用iptables进行路由和过滤,同时充当OpenVPN服务器。
我想让外部用户通过 VPN 连接到 LAN-A 和 LAN-B。第一个想法是允许防火墙的 tun0 接口通过 eth1 和 eth2(eth0 用于互联网连接)建立到 LAN-A 和 LAN-B 的连接。
一个理论问题:仅允许通过 eth1 到 LAN-A 的 VPN 连接并省略访问 LAN-B 的明确规则是否足够?根据上述内容,如果您在 LAN-A 中,则可以访问 LAN-B,因此我不确定是否有必要允许 tun0 访问 LAN-B。
第二个问题:tun0 是直接属于三个网络的一部分吗,还是在机器内部隔离的?
答案1
由于您的 OpenVPN 将驻留在路由器/防火墙上,因此,仅允许从 VPN 访问 LAN-A 是不够的。当连接到 OpenVPN 的用户想要访问 LAN-B 时,他将向 LAN-B 中的 IP 地址发送数据包。路由器/防火墙机器上的数据包将被发往位于接口 eth2 后面的 IP(假设 eth1 连接到 LAN-A,eth2 连接到 LAN-B)。如果您不允许来自 tun0 的流量通过 eth2,这些数据包将在防火墙处被丢弃。它们根本没必要进入 LAN-A。
关于您的第二个问题 - tun0 将成为三个网络的一部分 - 例如:LAN-A 中的所有计算机都将能够 ping tun0 地址,并且能够访问连接到 OpenVPN 的机器 - 除非您过滤该流量。LAN-B 也是如此。