ブリッジ接続 br0

目次

現状

kvm で仮想マシン環境を構築すると、virbr0 という名前のデバイス(ブリッジ)が一つ、作られていると思います。仮想マシンはこのブリッジから IP アドレスが割り当てられて、NAT 越しで LAN(及びインターネット)に接続することができます。

仮想マシンの仮想ネットワークインターフェースは次のとおり、NAT 接続になっています。

ホスト PC のネットワークインターフェースの様子は、Ubuntu の「設定」〜「ネットワーク」では確認できませんが、NetworkManager のコマンドラインインターフェース nmcli で確認するとこんな感じです(環境によって異なります)。 Ethernet が接続されているときは「有線接続 1」で、切断時であれば Wi-Fi に自動で切り替わってインターネットに繋がります。

hoge@T14:~$ nmcli device status 
DEVICE          TYPE      STATE     CONNECTION 
enp5s0          ethernet  接続済み  有線接続 1 
wlp3s0          wifi      接続済み  Buffalo-A  
virbr0          bridge    接続済み  virbr0     
p2p-dev-wlp3s0  wifi-p2p  切断済み  --         
enp2s0f0        ethernet  利用不可  --         
lo              loopback  管理無し  --         
virbr0-nic      tun       管理無し  --    

ところが、普段の仮想マシンは NAT 越しでも支障はありませんが、ホスト PC と同じ LAN 内の Windows10 に 仮想マシンの Ubuntu から smb プロトコルで接続するには NAT 越しではダメです。ルーターが適切に設定されている、ネットワークセグメントが異なるだけの環境なら、Windows10 側で Netlogon サービスを有効にすればいいのですが。

同様に、必要があるかどうかは別として、仮想マシンの Windows10 に、smb プロトコルでホスト PC や LAN 内の PC から NAT 越し接続することもできません。

なので、とりあえず仮想マシンをホスト PC と同じネットワークセグメントに接続するため、仮想マシン用には Ethernet 接を、ホスト PC には Wi-Fi 接続をそれぞれ専用に割り当てていました。上の enp5s0 に紐付いている「有線接続 1」は「設定」の「ネットワーク」から歯車をクリックして「プロファイルを削除」しています。
※ターミナルから「 nmcli connection delete 有線接続 1」としても削除できます。

hoge@T14:~$ nmcli device status 
DEVICE          TYPE      STATE     CONNECTION 
wlp3s0          wifi      接続済み  Buffalo-A  
virbr0          bridge    接続済み  virbr0     
enp5s0          ethernet  切断済み  --         
p2p-dev-wlp3s0  wifi-p2p  切断済み  --         
enp2s0f0        ethernet  利用不可  --         
lo              loopback  管理無し  --         
macvtap0        macvlan   管理無し  --         
virbr0-nic      tun       管理無し  --  

hoge@T14:~$ nmcli connection show
NAME       UUID                                  TYPE    DEVICE 
Buffalo-A  39f47772-76eb-4476-a485-54f365c8d8e3  wifi    wlp3s0 
virbr0     1a21ab0a-854f-40e1-aec6-e961dddee11e  bridge  virbr0 

このとおり、デバイス enp5s0 はホスト PC からみると「切断済み」で、connection も紐付いていません。
仮想マシンの仮想マシンネットワークインターフェースは次の画像のとおり、ネットワークソース enp5s0:macvtap を選択しています。

ソースモードは VEPA なので、「仮想マシン 〜 enp5s0 〜 BBルーター 〜 wlp3s0(Wi-Fi) 〜 ホスト PC 」という感じで ping も通ります。

やりたいこと

Wi-Fi 接続も以前に比べれば格段に速くなっているとはいえ、スマホをはじめ多くのデバイスがつながっている環境だと Ethernet のほうが安定・高速です。特に、仮想マシンとホスト PC とで大量のファイル転送するときは、やっぱり Ethernet のほうに分があります。

そこで、普段はホスト PC も仮想マシンも Wi-Fi を使いつつ、ファイル転送を高速に行いたいときは Ethernet 接続、かつ、同じネットワークセグメントに属するように、ブリッジを設定することにします。

ブリッジの作成

いくつか方法があるのでざっと書いてみます。

nmcli

オーソドックスな方法です。作成、削除を繰り返すようなことも無いですし、これで十分かと思います。
br0 という device が、bridge-br0 という CONNECTION が紐付いて作成されます。

hoge@T14:~$ nmcli device status 
DEVICE          TYPE      STATE                     CONNECTION 
wlp3s0          wifi      接続済み                  Buffalo-A  
virbr0          bridge    接続済み                  virbr0     
br0             bridge    接続中 (IP 設定を取得中)  bridge-br0 
enp5s0          ethernet  切断済み                  --         
p2p-dev-wlp3s0  wifi-p2p  切断済み                  --         
enp2s0f0        ethernet  利用不可                  --         
lo              loopback  管理無し                  --         
macvtap0        macvlan   管理無し                  --         
virbr0-nic      tun       管理無し                  --         

hoge@T14:~$ nmcli connection show
NAME        UUID                                  TYPE    DEVICE 
bridge-br0  3bb7dda5-4ec9-4a33-af5a-5a8c5e5f9cb7  bridge  br0    
Buffalo-A   39f47772-76eb-4476-a485-54f365c8d8e3  wifi    wlp3s0 
virbr0      1a21ab0a-854f-40e1-aec6-e961dddee11e  bridge  virbr0 

このブリッジには、LAN に接続するためのインターフェースが無いので追加します。
Ethernet は LAN ケーブルを接続した状態です。

hoge@T14:~$ nmcli connection add type bridge-slave ifname enp5s0 master bridge-br0
接続 'bridge-slave-enp5s0' (09ef85a4-530b-471c-81bd-ffc96a2ff3fe) が正常に追加されました。

hoge@T14:~$ nmcli device status 
DEVICE          TYPE      STATE                     CONNECTION 
wlp3s0          wifi      接続済み                  Buffalo-A  
virbr0          bridge    接続済み                  virbr0     
br0             bridge    接続中 (IP 設定を取得中)  bridge-br0 
enp5s0          ethernet  切断済み                  --         
p2p-dev-wlp3s0  wifi-p2p  切断済み                  --         
enp2s0f0        ethernet  利用不可                  --         
lo              loopback  管理無し                  --         
macvtap0        macvlan   管理無し                  --         
virbr0-nic      tun       管理無し                  --        
 
hoge@T14:~$ nmcli connection show
NAME                 UUID                                  TYPE      DEVICE 
bridge-br0           3bb7dda5-4ec9-4a33-af5a-5a8c5e5f9cb7  bridge    br0    
Buffalo-A            39f47772-76eb-4476-a485-54f365c8d8e3  wifi      wlp3s0 
virbr0               1a21ab0a-854f-40e1-aec6-e961dddee11e  bridge    virbr0 
bridge-slave-enp5s0  09ef85a4-530b-471c-81bd-ffc96a2ff3fe  ethernet  --     

ブリッジの STP(スパニングツリー)は無効にします。

hoge@T14:~$ nmcli connection modify bridge-br0 bridge.stp no

ブリッジを有効化します。

hoge@T14:~$ nmcli connection up bridge-br0 
接続が正常にアクティベートされました (master waiting for slaves) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/18)

hoge@T14:~$ nmcli connection show
NAME                 UUID                                  TYPE      DEVICE 
Buffalo-A            39f47772-76eb-4476-a485-54f365c8d8e3  wifi      wlp3s0 
bridge-br0           3bb7dda5-4ec9-4a33-af5a-5a8c5e5f9cb7  bridge    br0    
virbr0               1a21ab0a-854f-40e1-aec6-e961dddee11e  bridge    virbr0 
bridge-slave-enp5s0  09ef85a4-530b-471c-81bd-ffc96a2ff3fe  ethernet  enp5s0 

hoge@T14:~$ nmcli device status 
DEVICE          TYPE      STATE     CONNECTION          
wlp3s0          wifi      接続済み  Buffalo-A           
br0             bridge    接続済み  bridge-br0          
virbr0          bridge    接続済み  virbr0              
enp5s0          ethernet  接続済み  bridge-slave-enp5s0 
p2p-dev-wlp3s0  wifi-p2p  切断済み  --                  
enp2s0f0        ethernet  利用不可  --                  
lo              loopback  管理無し  --                  
virbr0-nic      tun       管理無し  --                  

PC を再起動して仮想マシンの仮想ネットワークインターフェースでブリッジを選択します。

これで、仮想マシンがブリッジ接続されました。

ちなみに、この状態で LAN ケーブルを抜いても Wi-Fi には自動で戻りません。ターミナルから「 $ nmcli connection down bridge-br0 」でブリッジを無効化すれば Wi-Fi に切り替わります。

ただし、仮想マシンの仮想ネットワークインターフェースは手動で NAT に変更する必要があります。

再度、LAN ケーブルを差し込んだら再び「 $ nmcli connection up bridge-br0 」としてブリッジを有効化すれば Ethernet に切り替わります。

nmtui

ターミナルから $ nmtui で NetworkManager の TUI を起動できます。たぶん、出番はあまり無いと思われますが、こちらからブリッジその他の追加・設定が可能です。

nm-connection-editor

こちらのイメージとしては上の nmtui を GUI にしたような感じです。画像の左下歯車ボタンで追加できます。

その他

ブリッジの作成・管理方法は複数あります。詳細は以下のサイトをご覧ください。

さいごに

仮想マシンもホスト PC もすべて、IP アドレスは DHCP で取得することを前提としています。特に仮想マシンは NAT とブリッジを行ったり来たりするのでお手軽です。

コメント

コメントする

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

目次
閉じる