VirtualBox - 同じネットワーク上の他のサブネット

VirtualBox - 同じネットワーク上の他のサブネット

VirtualBoxで複数の仮想マシンを実行しています。 Ubuntu Server 18.04がホストシステムにインストールされています。彼らはすべて「ホスト専用ゲスト」を使用します。インターネットは「ホスト専用アダプタ」でも動作します。

いくつかの理由で、ローカルIPアドレスではなくパブリックIPアドレスに仮想マシンを設定しました。たとえば、一般的な192.168.56.1と192.168.56.100の代わりに、ホストとゲストはそれぞれ11.22.33.1と11.22.33.44を持っています。詳細な説明。仮想マシンのゲートウェイは192.168.56.1ではなく11.22.33.1です。でも動作します。ホストとゲストは互いに通信でき、仮想マシンはインターネットにアクセスすることもできます。

仮想マシンがインターネットにアクセスして接続を許可できるように、各仮想マシンに対して次のスクリプトを作成しました。例:

localinterface=vboxnet0

# hosts's interface
publicinterface=ppp1

# public ip
localip=34.56.78.90

# local gateway
maingateway=10.0.3.1

# host's local ip
mainip=10.0.3.10

iptables -t nat -A POSTROUTING -s $localip/32 -o $publicinterface -j SNAT --to-source $mainip
iptables -t nat -A PREROUTING -i $publicinterface -p tcp --dport 1:65534 -j DNAT --to-destination $localip
iptables -t nat -A PREROUTING -i $publicinterface -p udp --dport 1:65534 -j DNAT --to-destination $localip
iptables -t nat -A PREROUTING -i $publicinterface -p gre -j DNAT --to-destination $localip
iptables -t nat -A PREROUTING -p icmp -d $mainip -j DNAT --to-destination $localip
iptables -t filter -A FORWARD -p icmp -d $localip -j ACCEPT

ip rule add from $localip table vm2
ip route add default dev $publicinterface via $maingateway table vm2

私が知っている限り、これを行うと、ホストとゲストの両方がIPアドレス34.56.78.90を使用して物理コンピュータにアクセスできなくなりますが、それは私の興味ではありません。

問題は、仮想マシンが同じネットワーク(vboxnet0)にあるにもかかわらず、互いに通信できないことです。ホストのサブネットが異なるためだと確信しています。 Tracerouteとpingは何の結果も得られませんでした。その後、次のパスを登録しようとします。

ip route add 99.88.77.0/24 via 11.22.33.1 dev vboxnet0 table vm0
ip route add 34.56.78.0/24 via 11.22.33.1 dev vboxnet0 table vm0

ip route add 11.22.33.0/24 via 99.88.77.1 dev vboxnet0 table vm1
ip route add 34.56.78.0/24 via 99.88.77.1 dev vboxnet0 table vm1

ip route add 11.22.33.0/24 via 34.56.78.1 dev vboxnet0 table vm2
ip route add 99.88.77.0/24 via 34.56.78.1 dev vboxnet0 table vm2

いくつかの進展が始まったが、まだ期待した結果を得ていない。その後、あるVMから別のVMへの経路追跡を試みると、そのゲートウェイに到達して停止します。

root@ubuntu-server-1804-fastpanel:~# traceroute -n 99.88.77.66
traceroute to 99.88.77.66 (99.88.77.66), 30 hops max, 60 byte packets
 1  11.22.33.1  0.222 ms  0.400 ms  0.334 ms^C
root@ubuntu-server-1804-fastpanel:~#

また、pingコマンドは、ゲートウェイが別のホストにリダイレクトされていることを示し始めました。

root@ubuntu-server-1804-fastpanel:~# ping 99.88.77.66
PING 99.88.77.66 (99.88.77.66) 56(84) bytes of data.
From 11.22.33.1: icmp_seq=2 Redirect Host(New nexthop: 99.88.77.66)
From 11.22.33.1: icmp_seq=3 Redirect Host(New nexthop: 99.88.77.66)
From 11.22.33.1: icmp_seq=4 Redirect Host(New nexthop: 99.88.77.66)
From 11.22.33.1: icmp_seq=5 Redirect Host(New nexthop: 99.88.77.66)
From 11.22.33.1: icmp_seq=6 Redirect Host(New nexthop: 99.88.77.66)
^C
--- 99.88.77.66 ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 6066ms

root@ubuntu-server-1804-fastpanel:~#

これで、ホストシステムの私のパスは次のようになります。

root@hypervisor:~# ip route
default via 10.0.1.1 dev eth0 proto static 
default via 10.0.2.1 dev ppp0 proto static 
default via 10.0.3.1 dev ppp1 proto static 
10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.10 
10.0.2.1 dev ppp0 proto kernel scope link src 10.0.2.10 
10.0.3.1 dev ppp1 proto kernel scope link src 10.0.3.10 
10.27.137.0/24 dev vboxnet0 proto kernel scope link src 10.27.137.213 
34.56.78.0/24 dev vboxnet0 proto kernel scope link src 34.56.78.1 
11.22.33.0/24 dev vboxnet0 proto kernel scope link src 11.22.33.1 
99.88.77.0/24 dev vboxnet0 proto kernel scope link src 99.88.77.1 
root@hypervisor:~# ip route show table vm0 && ip rule show table vm0
default via 10.0.1.1 dev eth0 
34.56.78.0/24 via 11.22.33.1 dev vboxnet0 
99.88.77.0/24 via 11.22.33.1 dev vboxnet0 
199:    from 11.22.33.44 lookup vm0 
root@hypervisor:~# ip route show table vm1 && ip rule show table vm1
default via 10.0.2.1 dev ppp0 
34.56.78.0/24 via 99.88.77.1 dev vboxnet0 
11.22.33.0/24 via 99.88.77.1 dev vboxnet0 
97:     from 99.88.77.66 lookup vm1 
99:     from 99.88.77.66 lookup vm1 
root@hypervisor:~# ip route show table vm2 && ip rule show table vm2
default via 10.0.3.1 dev ppp1 
11.22.33.0/24 via 34.56.78.1 dev vboxnet0 
99.88.77.0/24 via 34.56.78.1 dev vboxnet0 
96:     from 34.56.78.90 lookup vm2 
98:     from 34.56.78.90 lookup vm2 
root@hypervisor:~#

私の場合、サブネットは異なりますが、同じネットワーク上のホストが互いに通信するにはどうすればよいですか?

関連情報