macvtap ブリッジを使用した基本ルーティング

macvtap ブリッジを使用した基本ルーティング

2つのイーサネットカードが付いている機械があります。 1つは単一のインターフェースを持ち、もう1つは4つのインターフェースを持っています。

私はこのコンピュータ(ホスト)にアクセス(sshなど)する方法として単一のインターフェイスカード(私のLANに接続する必要があります)を使用する予定です。

次に、macvtapを使用して2枚目のカードの4つのポートのそれぞれに1つずつ、4つのVM(libvirtを使用)を実行する予定です。一部はマイLANに接続され、一部はマイDMZ(以前のSonicWallで管理されていた)に接続されています。

例:

<network>
  <name>my-ubuntu-network</name>
  <uuid>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</uuid>
  <forward dev='e1' mode='bridge'>
    <interface dev='e1'/>
  </forward>
</network>

2つの仮想マシンを設定し、うまく動作しています。私のすべてのインターフェイスは、Sonicall DHCPからMACを介して正しいIPを取得します。両方のドメインで定義されているMACも、SonicWallから正しいIPを取得します(両方ともDMZにあります)。

次に、3番目の仮想マシン(DMZ用)を作成しました。 Sonicwallから正しいIPを取得しますが、言うことはできません。ホストから。

コンソールに接続するとできるDMZの他のデバイスにpingを送信します。最初の2人のゲストの1人に接続するとできる言ってみてください。 LAN上の他の物理コンピュータ(DMZを見ることができます)で試してみるとできる言ってみてください。私はゲストにpingを送ることができない唯一の場所だと思います。所有者


IPリンクの表示

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: e4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 00:00:00:00:00:05 brd ff:ff:ff:ff:ff:ff
3: e0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 00:00:00:00:00:50 brd ff:ff:ff:ff:ff:ff
4: e3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 00:00:00:00:00:04 brd ff:ff:ff:ff:ff:ff
5: e2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 00:00:00:00:00:07 brd ff:ff:ff:ff:ff:ff
6: e1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 00:00:00:00:00:06 brd ff:ff:ff:ff:ff:ff
7: macvtap0@e2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 500
    link/ether 00:00:00:00:00:73 brd ff:ff:ff:ff:ff:ff
8: macvtap1@e3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 500
    link/ether 00:00:00:00:00:03 brd ff:ff:ff:ff:ff:ff
9: macvtap2@e4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 500
    link/ether 00:00:00:00:00:33 brd ff:ff:ff:ff:ff:ff

インターフェイスがよさそうです。

最初の仮想マシンはe2を使用するように設定されます。 2番目の仮想マシンはe3を有効にします。 3番目の仮想マシンはe4を有効にします。


VMをpingする前に(ホストで)arpを実行すると、この結果が表示されます。

arp-a

? (10.0.20.10) at 00:00:00:00:00:a6 [ether] on e4
? (10.0.10.100) at 00:00:00:00:00:cb [ether] on e0

10.0.20.10はDMZの玄関口です。

10.0.10.100は、SSHを使用してホストシステムに接続する私のラップトップのIPです。


路線

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.0.20.10      0.0.0.0         UG    202    0        0 e4
default         10.0.10.10      0.0.0.0         UG    203    0        0 e0
default         10.0.20.10      0.0.0.0         UG    204    0        0 e3
default         10.0.20.10      0.0.0.0         UG    205    0        0 e2
default         10.0.10.10      0.0.0.0         UG    206    0        0 e1
10.0.10.0       0.0.0.0         255.255.255.0   U     203    0        0 e0
10.0.10.0       0.0.0.0         255.255.255.0   U     206    0        0 e1
10.0.20.0       0.0.0.0         255.255.255.0   U     202    0        0 e4
10.0.20.0       0.0.0.0         255.255.255.0   U     204    0        0 e3
10.0.20.0       0.0.0.0         255.255.255.0   U     205    0        0 e2

これは、予想通り、パスがe0の代わりにe4を使用していることを証明します。


ホストで最初のVM(10.0.20.71)をpingすると応答を受け取ります。

それからアルペジオをします。

arp-a

? (10.0.20.71) at 00:00:00:00:00:73 [ether] on e4
? (10.0.20.10) at 00:00:00:00:00:a6 [ether] on e4
? (10.0.10.100) at 00:00:00:00:00:cb [ether] on e0

待ってやりがいがあるね。

その後、VM 3(10.0.20.72)(ネットワーク定義がe4の問題のある最新のVM)をpingすると失敗します。 arpを実行すると、次のような結果が得られます。

arp-a

? (10.0.20.71) at 00:00:00:00:00:73 [ether] on e4
? (10.0.20.10) at 00:00:00:00:00:a6 [ether] on e4
? (10.0.10.100) at 00:00:00:00:00:cb [ether] on e0
? (10.0.20.72) at <incomplete> on e4

ご覧のとおり、不完全なようです。


私はホストコンピュータでArch Linuxを実行しています。

誰もがこの問題を解決するために何をすべきかを提案できますか?誰もが私が問題を正しく識別していることを確認できます(パス「優先順位」)。

e0がリストの一番上に来るように測定値を変更する必要があるようです。

基本的に、何が起こっているのか教えてくれる人はいますか?この問題を解決するには、何を読むべきですか?

ありがとうございます!

関連情報