Iptables
通過 IPSec 隧道轉發 virbr0 (VM) 流量
我有一個
virbr0
由 libvirt 創建的介面inet 10.1.2.1 netmask 255.255.255.0 broadcast 10.1.2.255
有一個活動的 IPSec 隧道
leftsubnet=10.1.2.0/24 rightsubnet=192.168.160.0/20
虛擬機能夠訪問 192.168.160.0/20,但現在我希望虛擬機將其所有流量重定向到 192.168.168.254,而不是使用機器的預設網關。
我想我可以使用這樣的東西:
iptables -t nat -A PREROUTING -i virbr0 -d 0.0.0.0/0 -j DNAT --to-destination 192.168.168.254
但這不起作用。我錯過了什麼還是我使用了錯誤的方法?
謝謝!
我在這裡假設您的虛擬機在
10.1.2.0/24
子網內有 IP,否則應該很明顯為什麼它不起作用。假設您的虛擬機想要打開到網站 example.org 的連接。使用上面的語句,您將此連接嘗試重定向到
192.168.160.0/20
子網內的路由器,這顯然不知道網站 example.org。首先,您需要為此進行路由,而不是 DNAT(以保留必須到達的 IP!)。其次,您顯然誤解了 IPsec 隧道的工作原理:只有商定的子網才允許通過 ipsec 隧道。這意味著:嘗試打開網站 example.org 的 VM 打開與其解析 IP 的連接,假設這將是 IP 1.2.3.4。連接來自左側,因此此 IP 必須位於正確的子網之一內。既然不是,它就不能通過 IPsec 隧道。
如果您想通過隧道路由所有流量,您需要一種不同類型的 VPN!