FreeBSDはインターフェイスのmacアドレスを変更しますか?

FreeBSDはインターフェイスのmacアドレスを変更しますか?

KVMを使用してゲストVMをホストしています。私のホストVMで2つのブリッジを作成し、各ブリッジを物理インターフェイスに割り当てました(サブネットにも割り当てます)。

ルーティングはすべてうまく機能し、インターフェイスから外部リソースをpingできます。

次に、FreeBSDを実行しているゲストVMにこの2つのブリッジを割り当てました。 FreeBSD Guestにログインしてネットワーク設定を表示すると、次の2が表示されますcurr medias

root@VM% ifconfig -a | grep "curr media"
        curr media: i802 52:53:f:6f:e2:b2
        curr media: i802 52:53:f:3b:24:22

ホストUbuntu VMのすべてのインターフェイスを確認すると、次のようになります。

vnet1     Link encap:Ethernet  HWaddr fe:53:0f:6f:e2:b2
vnet2     Link encap:Ethernet  HWaddr fe:53:0f:3b:24:22

FreeBSDのインターフェイスが接続されたVNETと同じMACアドレスを持っていると仮定するので、これは非常に混乱しています。

feFreeBSDはmacアドレスをからに変更しますか52?それとも、freeBSDインターフェイスは接続されたVNETとは異なるMACアドレスを使用しますか?

より関連する混乱:
1)ルーティングを含む2つのブリッジがゲストVMに割り当てられている場合、ホストの各ブリッジに対してVNETが作成されますか?
2)2つのブリッジを作成すると、1つは1つのVMに割り当てられ、もう1つは別のVMに割り当てられます。それでも2つのVNETSがありますか?
3) ホスト仮想マシンに 2 つのブリッジが作成された場合。ただし、1つのブリッジが1つのVMに割り当てられ、別のブリッジが2つのVMに割り当てられている場合、ホストVMに3つのVNETが作成されますか?

これを説明する理由は、VNETがたくさん見えるからです。そしてそれがどこから来たのかわからず(MACアドレスを理解できないようだから)、それらを削除できないようです。 Ubuntuファイルにありませんnetwork/interfaces

ベストアンサー1

KVMを使用する場合、ホスト側のインターフェイスMACアドレスは、オペレーティングシステムに関係なく、VM内部のMACアドレスとはまったく同じではありません。これはTUN / TAPネットワークの結果です。

たとえば、CentOS 7 VMを実行すると、次のようになります。

$ ip link show v-test1
64: v-test1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
    link/ether fe:54:00:0c:d8:88 brd ff:ff:ff:ff:ff:ff

$ ssh test1 /sbin/ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:0c:d8:88 brd ff:ff:ff:ff:ff:ff

Solaris 11 VMでも同様の状況を見ることができます。

55: v-solaris: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
    link/ether fe:54:00:94:47:6d brd ff:ff:ff:ff:ff:ff

$ ssh solaris ifconfig -a
....
net0: flags=100001004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4,PHYSRUNNING> mtu 1500 index 2
        inet 10.0.0.157 netmask ffffff00 broadcast 10.0.0.255
        ether 52:54:0:94:47:6d 

したがって、VMオペレーティングシステムが何であるかは重要ではありません。仮想マシン内部に表示されるMACアドレスは、常にホスト側に表示されるアドレスとは異なります。

これで、一般的に構成を使用すると、ホスト側のインターフェイス名とゲスト側のMACアドレスを選択できます。私はlibvirtを使って仮想マシンを管理するので、guest.xmlファイルに

<interface type='bridge'>
  <mac address='52:54:00:0c:d8:88'/>
  <source bridge='br0'/>
  <target dev='v-test1'/>
  <model type='virtio'/>
</interface>

これにより、ホストに「v-test1」というネットワークが作成され、ゲストの内部MACアドレスが割り当てられます。これは上記の最初の例と一致します。

ホストに2つのネットワークアダプタを指定する場合は、そのアダプタが存在するホストのブリッジ、ホストに表示されるネットワークインターフェイス名、およびMACアドレスを独立して選択できます。

例えば

<interface type='bridge'>
  <mac address='52:54:00:0c:44:5d'/>
  <source bridge='br0'/>
  <target dev='v-test2'/>
  <model type='virtio'/>
</interface>
<interface type='bridge'>
  <mac address='52:54:00:0c:44:5e'/>
  <source bridge='internal'/>
  <target dev='v-test2b'/>
  <model type='virtio'/>
</interface>

これで、2つのインターフェイスが定義されました。 1つはv-test2と呼ばれ、ブリッジ「br0」に配置され、もう1つはv-test2bと呼ばれ、ブリッジ「内部」に配置されます。

$ ip addr show v-test2
68: v-test2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
    link/ether fe:54:00:0c:44:5d brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe0c:445d/64 scope link 
       valid_lft forever preferred_lft forever

$ ip addr show v-test2b
69: v-test2b: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
    link/ether fe:54:00:0c:44:5e brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe0c:445e/64 scope link 
       valid_lft forever preferred_lft forever

$ brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.0025222613c0       no              eth0
....
                                                        v-test2

internal                8000.fe54000c445e       no              v-test2b

ゲストの中には、次の人がいます。

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:0c:44:5d brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 52:54:00:0c:44:5e brd ff:ff:ff:ff:ff:ff

これにより、各仮想マシンにどのインターフェイス、MACアドレス、およびブリッジがあるかを正確に定義できます。

おすすめ記事