为 VirtualBox 客户机创建到特定 IP 地址的网络路由

为 VirtualBox 客户机创建到特定 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

但 pingA这样做之后就不会起作用了。

编辑:现在我清楚地认识到,在主机上创建路由是没有意义的,而且是解决这个问题的错误方法。

我必须承认我不是网络专家,因此我很高兴收到任何形式的反馈。

答案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来自客人但没有其他地址,尤其是没有互联网。我不知道为什么会这样,也许对这个话题更了解的人可以解释一下。

相关内容