从iptable的angular度了解OpenVPN网桥

在我的情况下,有一台机器可以同时作为基于iptables的防火墙和OpenVPN服务器。 它有两个networking接口 – eth1连接到互联网,而eth0连接到机器后面的LAN。

到现在为止,我明白如何configuration路由/基于TUN的VPN连接的iptables。 您可以在openvpn.net上find以下可视化文件:

 | FIREWALL | | | {eth1 eth0} | \ / | | +----------------------+ | | | iptables and | | | | routing engine | | | +--+----------------+--+ | | | | | | (openvpn)-------{tun0} | | 10.8.0.1 | +--------------------------------+ 

根据图像,逻辑分区stream程如下所示:

Internet – > eth1 – > iptables(通过INPUT链) – > OpenVPN – > tun0 – > iptables(通过FORWARD链) – > eth0 – > LAN

如果我没有错的话,这应该导致下面的iptables规则:

 # allow incoming and outgoing VPN traffic from/to the internet iptables -A INPUT -i eth1 -p udp --dport 1194 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT # allow traffic between tun0 and LAN iptables -A FORWARD -i tun+ -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i eth0 -o tun+ -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 

到现在为止还挺好。 我现在想要做的是实现与上述完全相同的场景,但是使用基于接/ TAP的VPN连接,但是我在理解桥接环境中的逻辑分区stream程和创buildiptables规则时遇到问题。

我到现在为止所得到的:

  • tun0tap0取代
  • 我需要eth0和tap0之间的桥接接口,我们称之为br0

为了简单起见,我们假设tap0和br0都已经configuration好了。

我没有得到的是从iptables的angular度来看,特别是iptables如何处理br0 。 我的目标是创build与上述相同的可视化和规则,但对于所描述的桥接/基于TAP的环境。

编辑:我不必创build一个真正的,生产就绪的环境,不要担心。 我只是想了解它:)

就iptables而言,br0可以看作是一个单一的接口(例如,你可以匹配-i br0-o br0 ,这将适用于到达tap0和eth0的数据包),但是你可以也使用physdev模块在规则中引用其子接口,例如-m physdev --physdev-in tap0

请尽量让你的问题更具体,我会尽力回答。