異なるサブネットのマシンから VM 上の Web サーバーにアクセスする

異なるサブネットのマシンから VM 上の Web サーバーにアクセスする

別のサブネットにあるマシンから、KVM によってホストされている仮想マシン上で実行されている Web アプリケーションにアクセスできません。

そこで、マシン 192.168.1.2 (右上の緑の円) から仮想マシン 192.168.10.1 (下中央の赤い円) で実行されている Web アプリケーションにアクセスしたいと思います。

192.168.10.0/24 へのすべての要求がホスト マシン 192.168.1.1 に転送されるように、Netgear ルーターに静的ルートを追加しました。

ホストマシン自体には、vmbr1ブリッジインターフェースを介して192.168.10.0/24にリクエストを転送するための静的ルートがあります。

  • 80 ポートの telnet は 192.168.1.2 からは失敗しましたが、ホスト マシン 192.168.1.1 からは成功しました。
  • 仮想マシンへのping呼び出しは、192.168.1.2マシンからVMに機能します。
  • traceroute は失敗しますが、-I オプションを追加すると、traceroute も機能します。

ご協力やヒントをいただければ幸いです。

PS: ファイアウォールが無効になっている場合でも機能しないことに注意してください。

iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

物理マシン 192.168.1.2 から VM マシン 192.168.10.1 への traceroute => KO

traceroute to 192.168.10.1 (192.168.10.1), 30 hops max, 60 byte packets
 1  192.168.1.254 (192.168.1.254)  2.390 ms  3.004 ms  3.436 ms
 2  * * *
 3  * * *
 ...
 30  * * *

VM マシン 192.168.1.2 から物理マシン 192.168.10.1 への traceroute => OK

traceroute to 192.168.1.2 (192.168.1.2), 30 hops max, 60 byte packets
 1  192.168.10.254 (192.168.10.254)  0.846 ms  0.648 ms  0.519 ms
 2  192.168.1.2 (192.168.1.2)  5.447 ms  5.277 ms  4.977 ms

192.168.1.2 マシンから VM マシン 192.168.10.1 への ping:

ping 192.168.10.1
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
From 192.168.1.254: icmp_seq=1 Redirect Host(New nexthop: 192.168.1.1)
From 192.168.1.254 icmp_seq=1 Redirect Host64 bytes from 192.168.10.1: icmp_seq=1 ttl=63 time=2.77 ms
From 192.168.1.254: icmp_seq=2 Redirect Host(New nexthop: 192.168.1.1)
From 192.168.1.254 icmp_seq=2 Redirect Host64 bytes from 192.168.10.1: icmp_seq=2 ttl=63 time=2.56 ms

ホスト マシンではルートが適切に定義されており、このホスト マシンから VM の Web アプリケーションに問題なくアクセスできます。

IP ルート表示

default via 192.168.1.254 dev eth0 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.1 
192.168.10.0/24 dev vmbr10  proto kernel  scope link  src 192.168.10.254 
192.168.20.0/24 dev vmbr20  proto kernel  scope link  src 192.168.20.254 

ネットワーク図

編集

192.168.1.2 マシン (ソース マシン) を RJ45 ケーブルでルーターに直接接続すると、動作します。以前は 192.168.1.2 は Wi-Fi でルーターに接続されていました。そのため、Wi-Fi で接続されたマシンに静的ルートが適切に適用されないのは、このルーターの問題だと思います。理由はわかりませんが、奇妙です :S

答え1

問題は、同じサブネット 192.168.1.0/24 上で 2 つのインターフェースを持つルーターを使用しているために発生します。

192.168.1.2 マシンはデフォルト ゲートウェイにパケットを送信しています。これは 192.162.1.254、つまりルーターであると想定しています。

ただし、ルータはパケットの次のホップが同じサブネット上の別の IP であることを検出するため、ping 出力に表示されるリダイレクトを生成します。

ルーターをブリッジまたはスイッチとして実行する必要があります。つまり、KVM 192.168.1.1 とクライアント 192.168.1.2 は両方とも同じサブネット上にあるため、ルートは必要ありません。通信にルーティング プロトコルは必要ありません。

また、これは、クライアント 192.168.1.2 の正しいデフォルト ゲートウェイが KVM 192.168.1.1 である必要があることを意味します。

他に、KVM に正しいデフォルト ゲートウェイを使用しているかどうかを確認する必要があります。それは本当にルーターですか? ルーターは、KVM またはクライアントに、ここに描かれているサブネット以外のサブネットへのアクセスを提供していますか?

関連情報