
我有一個虛擬機,其內部介面連接到本地 LAN。 VM 具有與另一個站點的有效 OpenVPN 連線。如何使用 iptables 透過 VPN 隧道轉送本機介面上的所有傳入流量?我正在運行 Ubuntu 發行版。
答案1
為了能夠使用現有連線執行站點到站點 VPN,您需要具有通過 VPN 的路由路徑。假設您位於網站#1(所有事物都是對稱的,無論哪個充當 OpenVPN 伺服器)。
- 首先,您需要確保具有 VPN 連線的虛擬機器(我們可以稱為「VPN#1」)可以到達遠端子網路。這是透過使用 OpenVPN 設定新增路由來完成的
- 如果「VPN#1」是 OpenVPN 用戶端,您可以使用關鍵字將其新增至伺服器中
push
,也可以使用本機新增route
- 如果「VPN#1」是 OpenVPN 伺服器,您可以使用
route
或使用外部工具(例如ip
- 如果「VPN#1」是 OpenVPN 用戶端,您可以使用關鍵字將其新增至伺服器中
- 然後,您需要確保「VPN#1」和遠端端點都啟用了 IP 轉送(已新增
net.ipv4.ip_forward=1
並/etc/sysctl.conf
使用重新載入sysctl -p
) - 如果 VPN#1 是預設網關,則完成。如果不是,您需要在預設閘道中為遠端 LAN 新增靜態路由,或者您可以在 LAN 的每台主機上新增靜態路由。
- 檢查 VPN#1 中的防火牆:應將其配置為允許 LAN 和 VPN 介面之間的流量(請參閱表
FORWARD
中的鏈,使用)filter
iptables
如果您在遠端重複此操作,一切都應該正常。使用ping
和traceroute
來調試任何問題。
答案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 接受