我想要做的是从另一个子网中具有仅主机网络的 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
我需要的是那台机器乙可以到达机器A和C但没有其他机器/网络或互联网。我目前可以 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 作为客户机:
确保已启用 IP 转发
sudo sysctl net.ipv4.ip_forward=1 sudo sysctl -p
设置
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
通过这些步骤,我能够接触到机器A和C来自客人乙但没有其他地址,尤其是没有互联网。我不知道为什么会这样,也许对这个话题更了解的人可以解释一下。