ubichupas.net

nmcliコマンドでブリッジ作成

 NetworkManagerというとIPアドレスを設定するGUIという認識で、 とりあえず無効化してしまうLinux機能の1つだったのですけど、 CUI環境でもnmcliコマンドで設定するのがRHEL7からのスタイルらしいです。

NICの命名規則

 手始めにnmcliコマンドで状態を表示させてみます。 NetworkManagerではdeviceが仮想も含めたネットワークインタフェースそのものを指し、 connectionが/etc/sysconfig/network-scripts/配下の設定ファイルを指しているようです。

なおCentOS7を仮想マシンホスト構成でインストールしたので最初からvirbr0が作られていました。
[root@localhost ~]# nmcli device
DEVICE      TYPE      STATE        CONNECTION
virbr0      bridge    connected     virbr0
virbr0-nic  tap       connected     virbr0-nic
enp0s31f6   ethernet  disconnected  --
enp3s0      ethernet  unavailable   --
lo          loopback  unmanaged     --
wlp4s0      wifi      unmanaged     --

[root@localhost ~]# nmcli connection
NAME        UUID                                  TYPE            DEVICE
virbr0      b93007c6-e0e6-4916-b186-050966e59bb2  bridge          virbr0
enp0s31f6   714634a0-f8b2-40d1-a169-1cddc501e836  802-3-ethernet  --
enp3s0      20ba6fa2-4a25-4747-b3e8-fb37459caa7e  802-3-ethernet  --
virbr0-nic  1e0e6f66-4257-47a6-b48a-f4b6c57f49e7  generic         virbr0-nic


 ところでこのPCのマザーボード(GA-Z170N-WIFI)には有線LANが2つと無線LANが搭載されています。 どれにどんな名前が付いているのか「予想可能なネットワークインターフェイスデバイスの命名」に従って予想してみました。

デバイスタイプPci busSlotFunctionチップ
enp3s0EtherNet0x030x00-Intel I211
enp0s31f6EtherNet0x000x1f (31)6Intel I219-V
wlp4s0WirelessLan0x040x00-Intel 8260


予想結果がlspciコマンドで確認できるPCIバスの番号と一致しました。 ちなみにバックパネルの有線LANポートのうち無線LAN寄りにあるものがenp3s0のようですが、これはLANケーブルを挿してリンクアップしてみれば当然わかります。
[root@localhost ~]# lspci
00:00.0 Host bridge: Intel Corporation Sky Lake Host Bridge/DRAM Registers (rev 07)
00:02.0 VGA compatible controller: Intel Corporation Sky Lake Integrated Graphics (rev 06)
00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31)
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-H Thermal subsystem (rev 31)
00:16.0 Communication controller: Intel Corporation Sunrise Point-H CSME HECI #1 (rev 31)
00:17.0 RAID bus controller: Intel Corporation SATA Controller [RAID mode] (rev 31)
00:1b.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Root Port #17 (rev f1)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #1 (rev f1)
00:1c.4 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #5 (rev f1)
00:1c.5 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #6 (rev f1)
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #9 (rev f1)
00:1d.4 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #13 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-H LPC Controller (rev 31)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-H PMC (rev 31)
00:1f.3 Audio device: Intel Corporation Sunrise Point-H HD Audio (rev 31)
00:1f.4 SMBus: Intel Corporation Sunrise Point-H SMBus (rev 31)
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-V (rev 31)
03:00.0 Ethernet controller: Intel Corporation I211 Gigabit Network Connection (rev 03)
04:00.0 Network controller: Intel Corporation Wireless 8260 (rev 3a)


ブリッジの作成

 名前がハッキリしたところでenp0s31f6の方を使って 仮想マシンが家庭内LANに直接繋がるためのブリッジを作成し、 ホストマシンにアクセスするためのIPアドレスも設定します。
[root@localhost ~]# nmcli connection add type bridge ifname br0 stp no
接続 'bridge-br0' (19b14072-cf3f-491b-8f86-bca39d822977) が正常に追加されました。
[root@localhost ~]# nmcli connection modify bridge-br0 ipv4.method manual ipv4.addresses 192.168.3.91/24
[root@localhost ~]# nmcli connection modify bridge-br0 ipv4.gateway 192.168.3.1 ipv4.dns 192.168.3.1

[root@localhost ~]# nmcli connection add type bridge-slave ifname enp0s31f6 master br0
接続 'bridge-slave-enp0s31f6' (6e0bb72c-7c61-4e16-8ef5-61d08908c124) が正常に追加されました。
[root@localhost ~]# nmcli connection delete enp0s31f6
Connection 'enp0s31f6' (714634a0-f8b2-40d1-a169-1cddc501e836) successfully deleted.

[root@localhost ~]# reboot
再起動したらbr0にDHCPでIPアドレスが設定されてしまったので調べたところ、 /etc/sysconfig/network-scripts/ifcfg-bridge-br0の他にifcfg-br0が作成されていました。 なのでこの設定ファイルを削除したら解決しました。
[root@localhost ~]# nmcli connection delete br0
Connection 'br0' (d4043198-f545-447b-bb95-7efa8fcda68a) successfully deleted.
 connectionをdeleteして消えるのはあくまで設定ファイルです。 再起動の前にenp0s31f6もdeleteしていますけど、それはdeviceとしてのenp3s0の管理を ifcfg-enp0s31f6からifcfg-bridge-slave-enp0s31f6へ移す目的で行っています。

[root@localhost ~]# nmcli device
DEVICE      TYPE      STATE        CONNECTION
br0         bridge    connected    bridge-br0
virbr0      bridge    connected    virbr0
enp0s31f6   ethernet  connected    bridge-slave-enp0s31f6
virbr0-nic  tap       connected    virbr0-nic
enp3s0      ethernet  unavailable  --
lo          loopback  unmanaged    --
wlp4s0      wifi      unmanaged    --

[root@localhost ~]# nmcli connection
NAME                    UUID                                  TYPE            DEVICE
bridge-br0              19b14072-cf3f-491b-8f86-bca39d822977  bridge          br0
enp3s0                  20ba6fa2-4a25-4747-b3e8-fb37459caa7e  802-3-ethernet  --
bridge-slave-enp0s31f6  6e0bb72c-7c61-4e16-8ef5-61d08908c124  802-3-ethernet  enp0s31f6
virbr0-nic              9f76e889-2b08-4c22-b645-7a4545e25207  generic         virbr0-nic
virbr0                  8756b226-eb23-4ca9-a31b-3741a4910e0e  bridge          virbr0

[root@localhost ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.408d5c52d894       no              enp0s31f6
virbr0          8000.525400a1a3d6       yes             virbr0-nic
CentOS7のnmcliはコマンドラインをTABキーで補完できるので設定ファイルを直書きするより楽でした。

0 件のコメント: