ipv6を使用したプライベートモードのKVM(libvirt)

ipv6を使用したプライベートモードのKVM(libvirt)

5つのネットワークカードを持つサーバーがあります。そのうち3つを仮想マシンに使用したいと思います。だから私は、Debianホストで次のネットワークをデフォルトネットワークに設定しました。

<network>
  <name>default</name>
  <forward mode='private'>
    <interface dev='eno2'/>
    <interface dev='eno3'/>
    <interface dev='eno4'/>
  </forward>
</network>

ゲストが通信する必要はなく、ほとんどのサービス(メール/Webサーバー、CTFテストVM、Sage jupyterを含むコンピューティングサーバー...)のみを実行するため、プライベートに設定しました。ルータとipv6サブネットからipv4アドレスを正しく割り当てました。しかし、ipv4だけが動作します。何らかの理由で、ホストにはインターフェイスのipv6アドレスも割り当てられます(これが起こるべきかどうかはわかりません)。しかし、ipv6では何もアクセスできません。ゲストでは、すべてのアドレスがnoprefixrouteとして表示されます。

たとえば、次のようになります。訪問者:

─$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether ff:23:00:ff:23:ae brd ff:ff:ff:ff:ff:ff
    inet 10.0.7.86/24 brd 10.0.7.255 scope global dynamic noprefixroute eth0
       valid_lft 86236sec preferred_lft 86236sec
    inet6 2a02:5:0:0:0:0:0:1/64 scope global temporary dynamic 
       valid_lft 604637sec preferred_lft 85668sec
    inet6 2a02:5:0:0:0:2:0:1/64 scope global mngtmpaddr noprefixroute 
       valid_lft forever preferred_lft forever
    inet6 fe80::beef:beef:beef:bded/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

マスター:

 ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
(..)
10: eno3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ff:fe:cc:dd:bb:e3 brd ff:ff:ff:ff:ff:ff
    altname enp2s0f0
    inet6 2a02:5:0:0:1:2:3:4/64 scope global dynamic mngtmpaddr
       valid_lft forever preferred_lft forever
    inet6 fe80::beef:beef:beef:57e3/64 scope link
       valid_lft forever preferred_lft forever
12: macvtap2@eno3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 500
    link/ether 52:54:00:87:e7:ae brd ff:ff:ff:ff:ff:ff
    inet6 fe80::acab:acab:acab:beef/64 scope link
       valid_lft forever preferred_lft forever

(個人情報保護のため、例ではIPを変更しましたが、ご理解いただきます。)

これで、libvirtのネットワーキングを完全に無視し、関連するpci IDを使用してNICを直接接続すると、すべてがうまく機能します。ただし、この場合、2つのポートは常に1つ(IOMMUグループ)を形成するため、1つのVMしか使用できません。最初のポートはホスト用で、他のポートは設定インターフェイス用です。この場合、パフォーマンスにも影響を与えるようです。したがって、これは理想的な解決策ではありません。

理想的には、各仮想マシンは、まるでケーブルを介してスイッチに物理的に接続されているかのように機能したいと思います。それぞれは、公的にルーティング可能なipv6ネットワークと割り当てられたアドレス(ルータのnatからipv4も同様)を取得する必要があります。現在、すべてのポートは同じスイッチに接続されており、接続されている各デバイスがインターネットとのみ通信できるようにスイッチを分離しており、各ポートには異なるIP4およびIP6サブネットが割り当てられています。

これがなぜそれほど混乱しているのか、少し混乱しています。 3つの物理サーバーを同じ方法でスイッチに接続すると、すべてが期待どおりに機能します。

また、ブリッジされたネットワークの設定例を試しましたが、うまくいかず、設定でIPを設定するのが好きではありません。 IPが変更される可能性があり、ルータがIPを正しく割り当てる方が良いでしょう(dhcpv6を使用)。

ベストアンサー1

おすすめ記事