我熟悉Iptables,最近想构建一个连接到openvpn服务器的状态防火墙。
如果有人愿意解释的话,例如eth0
(WAN)、eth1
(LAN) 和tun0
(VPN) 如何在彼此之间传递数据包?
我说的是FORWARD
链。我使用两个 NIC 设置防火墙没有遇到任何问题,但如果我尝试使用 OpenVPN 设置它,我就会感到困惑。
谢谢!
答案1
有两个独立的数据包流 - 一个是来自 LAN 的原始数据包,另一个是流向 WAN 的封装数据包。
例如,LAN 客户端尝试通过 VPN 访问远程主机:
- 原始数据包经过 FORWARD 并从 转发到
eth1
,tun0
然后由 OpenVPN 使用。 - OpenVPN 发送一个新的“VPN”数据包,该数据包经过 OUTPUT 并从防火墙发送到
eth0
。
VPN 到 LAN 的回复也一样:
- VPN 数据包在 上接收
eth0
,经过 INPUT,然后被防火墙上的 OpenVPN 接收。 - 解封装后的“原始”数据包看起来就像是通过 接收的
tun0
,并再次通过 FORWARD 到达eth1
。
因此,就 iptables 而言,tun0
它只是一个连接到另一个网络的常规网络接口 - 这与例如使用很长的电缆物理连接 eth2 没有什么不同。