![数据包如何穿越防火墙上的 tun+ 适配器](https://linux22.com/image/1523135/%E6%95%B0%E6%8D%AE%E5%8C%85%E5%A6%82%E4%BD%95%E7%A9%BF%E8%B6%8A%E9%98%B2%E7%81%AB%E5%A2%99%E4%B8%8A%E7%9A%84%20tun%2B%20%E9%80%82%E9%85%8D%E5%99%A8.png)
我熟悉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 没有什么不同。