Iptables

通過 IPSec 隧道轉發 virbr0 (VM) 流量

  • November 11, 2022

我有一個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!

引用自:https://serverfault.com/questions/1115443