iptables 轉送所有內部流量

iptables 轉送所有內部流量

我有一個虛擬機,其內部介面連接到本地 LAN。 VM 具有與另一個站點的有效 OpenVPN 連線。如何使用 iptables 透過 VPN 隧道轉送本機介面上的所有傳入流量?我正在運行 Ubuntu 發行版。

答案1

為了能夠使用現有連線執行站點到站點 VPN,您需要具有通過 VPN 的路由路徑。假設您位於網站#1(所有事物都是對稱的,無論哪個充當 OpenVPN 伺服器)。

  1. 首先,您需要確保具有 VPN 連線的虛擬機器(我們可以稱為「VPN#1」)可以到達遠端子網路。這是透過使用 OpenVPN 設定新增路由來完成的
    • 如果「VPN#1」是 OpenVPN 用戶端,您可以使用關鍵字將其新增至伺服器中push,也可以使用本機新增route
    • 如果「VPN#1」是 OpenVPN 伺服器,您可以使用route或使用外部工具(例如ip
  2. 然後,您需要確保「VPN#1」和遠端端點都啟用了 IP 轉送(已新增net.ipv4.ip_forward=1/etc/sysctl.conf使用重新載入sysctl -p
  3. 如果 VPN#1 是預設網關,則完成。如果不是,您需要在預設閘道中為遠端 LAN 新增靜態路由,或者您可以在 LAN 的每台主機上新增靜態路由。
  4. 檢查 VPN#1 中的防火牆:應將其配置為允許 LAN 和 VPN 介面之間的流量(請參閱表FORWARD中的鏈,使用)filteriptables

如果您在遠端重複此操作,一切都應該正常。使用pingtraceroute來調試任何問題。

答案2

好的,現在可以使用了。我可以透過 RDP 連接本地 LAN 另一端的伺服器。我無法使用 smb 存取另一端 Windows 伺服器上的管理共用。這是我使用的 IP 表規則:

/sbin/iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE /sbin/iptables -A FORWARD -i tun0 -o ens160 -m state --state 相關,已建立-j 接受/sbin/iptables -A FORWARD - i ens160 -o tun0 -j 接受

相關內容