広告

ブリッジ接続 br0

Ubuntu,Install

現状

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 connection add type bridge ifname br0
接続 'bridge-br0' (3bb7dda5-4ec9-4a33-af5a-5a8c5e5f9cb7) が正常に追加されました。

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 とブリッジを行ったり来たりするのでお手軽です。

Posted by @think