為 VirtualBox guest 虛擬機器建立到特定 IP 位址的網路路由

為 VirtualBox guest 虛擬機器建立到特定 IP 位址的網路路由

我想做的是從另一個子網路中僅主機網路的 VirtualBox 來賓存取特定的 IP 位址。我想保持訪客電腦隔離(除了特定的 IP 之外,無法從外部訪問,更重要的是無法訪問互聯網)。我不確定這是否可能,因為它被稱為“僅主機”網絡,也許還有另一個更好的解決方案 - 我對任何類型的建議都很高興。

這是我目前的設定:

主機A(Ubuntu 14.04):

eth0:192.168.0.100,網關192.168.0.1

vboxnet0:192.168.56.1

具有僅主機適配器的訪客電腦 B (Windows 10):

192.168.56.101,網關192.167.56.1

另一台機器C:

192.168.0.101

我需要的是那台機器可以到達機器AC但沒有其他機器/網路或網路。我目前可以 ping 主機A從訪客機通過ping 192.168.0.100但不是機器C。我嘗試在主機上建立一條路由A使用命令

ip route add 192.168.56.101 via 192.168.0.100 dev eth0

但 ping 來自A這樣做後將不起作用。

編輯:現在我很清楚,在主機上建立路由沒有意義,並且是解決此問題的錯誤方法。

我必須承認我不是網路專家,因此我對任何類型的回饋都很高興。

答案1

僅供參考,我想在嘗試不同的方法後發布一個對我有用的解決方案。

以下步驟適用於我使用 Ubuntu 14.04 作為主機、Windows 10 作為訪客的情況:

  1. 確保 IP 轉送已啟用

    sudo sysctl net.ipv4.ip_forward=1
    sudo sysctl -p
    
  2. 設定iptables規則:

    sudo iptables -t filter -I FORWARD --in-interface vboxnet0 --out-interface eth0 --source 192.168.56.0/24 --destination 192.168.0.101 -j ACCEPT
    sudo iptables -t filter -I FORWARD --in-interface eth0 --out-interface vboxnet0 --source 192.168.0.0/24 --destination 192.168.56.0/24 -j ACCEPT
    sudo iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
    

透過應用這些步驟,我能夠到達機器AC來自客人但沒有其他位址,尤其是沒有網路。我不知道為什麼這有效,也許對這個主題了解更多的人知道一個解釋。

相關內容