我想将 yy4.36 桥接到我的虚拟机。
我可以在主机上配置 yy4.36。所以路由到主机是有效的,我可以ping y.y.4.36
从互联网:
$ ifconfig
eno2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet x.x.41.32 netmask 255.255.255.0 broadcast x.x.41.255
inet6 fe80::5a20:b1ff:fe07:b375 prefixlen 64 scopeid 0x20<link>
ether 58:20:b1:07:b3:75 txqueuelen 1000 (Ethernet)
RX packets 2851252 bytes 241129524 (241.1 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6722211 bytes 9634863759 (9.6 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device memory 0x92c00000-92cfffff
eno2:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet y.y.4.36 netmask 255.255.255.224 broadcast y.y.4.63
ether 58:20:b1:07:b3:75 txqueuelen 1000 (Ethernet)
device memory 0x92c00000-92cfffff
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 x.x.41.1 0.0.0.0 UG 0 0 0 eno2
x.x.41.0 0.0.0.0 255.255.255.0 U 0 0 0 eno2
请注意,yy4.36 没有默认网关。
我可以轻松地将虚拟机设置为使用桥接网络,并将其地址设置为 yy4.36。但我如何才能通过互联网访问它呢?
我希望我必须删除 eno2:0,然后告诉虚拟机它应该使用 yy4.36 作为其地址,并使用 xx41.1 作为其默认网关。
但我该怎么做呢?
这不起作用:
$ route add -net default gw x.x.41.1
SIOCADDRT: Network is unreachable
因为虚拟机在 xx41.* 上没有地址。
编辑
我已经做了一个解决方法。在虚拟机上添加另一个与主机网络的接口。然后:
ifconfig enp0s8 192.168.56.2
ifconfig eth0 y.y.4.36 netmask 255.255.255.224
route add -net default gw 192.168.56.1
# Force the src address to be y.y.4.36 and not 192.168.56.2
ip route replace default via 192.168.56.1 dev enp0s8 src y.y.4.36
在主机上:
route add -host y.y.4.36 gw 192.168.56.2
因此,我通过 VirtualBox 的主机网络 (192.168.56.0/24) 路由流量。
它似乎有效,但我相信有一种更传统的方法可以完成将 yy4.36 提供给虚拟机。
答案1
如果我理解正确的话:
Your host is x.x.41.32 netmask 255.255.255.0 (ie, net is x.x.41.0 to x.x.42.255),
and the gateway (to internet) is x.x.41.1.
you want to setup a lan for your vms on x.x.4.36 netmask 255.255.255.224
(hence on a subnet with 32 ips, x.x.4.32 to x.x.4.63 and that vm is x.x.4.36).
如果您希望该子网访问互联网:多种可能性之一(TIMTOWTDI...):其中一台虚拟机(例如:xx4.36?或主机?或另一个?)应该有 2 个接口:一个位于 xx41 .y,xx4.z 中的一个,已启用路由,并且默认网关为 xx41.1。其他虚拟机应将该特定虚拟机(或主机)的 xx4.z IP 作为默认网关。