Linux
從 iptable 的角度理解 OpenVPN 網橋
在我的場景中,有一台機器同時充當基於 iptables 的防火牆和 OpenVPN 伺服器。它有兩個網路介面 -
eth1
連接到網際網路,而eth0
連接到機器後面的 LAN。到目前為止,我了解如何為基於路由/TUN的 VPN 連接配置 iptables。您可以在 openvpn.net 上找到以下視覺化:
| FIREWALL | | | {eth1 eth0} | \ / | | +----------------------+ | | | iptables and | | | | routing engine | | | +--+----------------+--+ | | | | | | (openvpn)-------{tun0} | | 10.8.0.1 | +--------------------------------+
根據圖像,邏輯包流如下所示:
Internet –> eth1 –> iptables (通過 INPUT-chain) –> OpenVPN –> tun0 –> iptables (通過 FORWARD-chain) –> 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 連接,但我在理解邏輯包流和在橋接環境中創建 iptables 規則時遇到問題。
到目前為止我得到了什麼:
tun0
被取代tap0
- 我需要 eth0 和 tap0 之間的橋接介面,我們稱之為
br0
為了簡單起見,我們假設 tap0 和 br0 都已經配置好了。
我沒有得到的是從 iptables 的角度來看的 paket 流程,尤其是 iptables 如何處理
br0
. 我的目標是創建與上述相同的視覺化和規則,但針對所描述的基於橋接/TAP 的環境。編輯:我不必創建一個真實的生產就緒環境,不用擔心。我只是想了解它:)
就 iptables 而言,br0 可以被視為單個介面(例如,您可以匹配
-i br0
or-o br0
,這將適用於到達或離開 tap0 以及 eth0 的數據包),但您也可以在規則中引用它的子介面使用physdev
模組,例如-m physdev --physdev-in tap0
.請嘗試使您的問題更具體,我會嘗試更好地回答。