Skip to content

Instantly share code, notes, and snippets.

@hiroyuki-sato
Last active June 5, 2020 11:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hiroyuki-sato/2b7890338e5eca2c4931 to your computer and use it in GitHub Desktop.
Save hiroyuki-sato/2b7890338e5eca2c4931 to your computer and use it in GitHub Desktop.
nmcliでブリッジインターフェースを作成する2

Links

これから実施すること

  • nmcliを使って、enp3s0をブリッジとして設定を行います。
  • OS: CentOS7

CentOS6でやっていたこと

bridgeを作る際には次のようにifcfg-XXXを編集していました。

/etc/sysconfig/network-scripts/ifcfg-brenp3s0

DEVICE=brenp3s0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR0=xxx.xxx.xxx.xxx
PREFIX0=24
NM_CONTROLLED=no
#DEFROUTE=no
#IPV4_FAILURE_FATAL=no
#IPV6INIT=no
#IPV6_AUTOCONF=yes
#IPV6_DEFROUTE=yes
#IPV6_PEERDNS=yes
#IPV6_PEERROUTES=yes
#IPV6_FAILURE_FATAL=no
#NAME=brenp3s0
#UUID=4ef34231-5268-4597-8ea6-4ae37faa64db

/etc/sysconfig/network-scripts/ifcfg-enp3s0

DEVICE=enp3s0
ONBOOT=yes
BRIDGE=brenp3s0
NM_CONTROLLED=no

CentOS7でブリッジ設定

OS導入直後の、初期状態の/etc/sysconfig/network-scripts/ifcfg-enp3s0

HWADDR=xx:xx:xx:xx:xx:xx
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp3s0
UUID=abb51b04-420b-49bb-bfca-3c159ebbc6ee
ONBOOT=no

有効なデバイスを表示する。nmcli deviceの実行結果

# nmcli device 
DEVICE  TYPE      STATE         CONNECTION 
eno1    ethernet  connected     eno1       
enp3s0  ethernet  disconnected  --         
eno2    ethernet  unavailable   --         
lo      loopback  unmanaged     --         

コネクションの情報を出力するnmcli showの出力

# nmcli connection show
NAME    UUID                                  TYPE            DEVICE 
eno1    f3b463df-5cc8-4c3b-b5d4-c245134f77fe  802-3-ethernet  eno1   
enp3s0  abb51b04-420b-49bb-bfca-3c159ebbc6ee  802-3-ethernet  --     
eno2    a7787771-26a8-4ccd-9b1e-cb64bffe34ad  802-3-ethernet  --     

ブリッジインターフェースの作成

実行結果例

# nmcli c add type bridge ifname brenp3s0
Connection 'bridge-brenp3s0' (f1ea72c8-e773-4bd9-aff7-d6873b015f74) successfully added.

ifnameでインターフェースを指定した場合

  • /etc/sysconfig/network-scripts/ifcfg-bridge-<ifnameで指定した名前>のファイルが作成される。
  • DEVICEのエントリ: ifnameの値
  • NAMEのエントリ: bridge-<ifnameで指定した名前>になる。
  • STP=yesになる

ifcfg-bridge-brenp3s0の中身を確認する

# cat ifcfg-bridge-brenp3s0 
DEVICE=brenp3s0
STP=yes
BRIDGING_OPTS=priority=32768
TYPE=Bridge
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=bridge-brenp3s0
UUID=f1ea72c8-e773-4bd9-aff7-d6873b015f74
ONBOOT=yes

STP(Spanning Tree Protocol)を無効にする

# nmcli con modify bridge-brenp3s0 bridge.stp no

もう一度ファイルを確認する。STP=noに変わっていることがわかる。

# cat ifcfg-bridge-brenp3s0 
DEVICE=brenp3s0
STP=no
TYPE=Bridge
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=bridge-brenp3s0
UUID=f1ea72c8-e773-4bd9-aff7-d6873b015f74
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

ブリッジのインターフェースにIPアドレスを割り当てする

# nmcli con modify bridge-brenp3s0 ipv4.method manual ipv4.addresses 10.10.10.2/24

ファイルを確認する。IPアドレス(IPADDR0)が設定されていることが確認できる。またネットマスク(PREFIX0)がセットされている。

# cat ifcfg-bridge-brenp3s0
DEVICE=brenp3s0
STP=no
TYPE=Bridge
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=bridge-brenp3s0
UUID=f1ea72c8-e773-4bd9-aff7-d6873b015f74
ONBOOT=yes
IPADDR0=10.10.10.2
PREFIX0=24
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

ifcfg-enp3s0の確認、こちらは特に変化がない

# cat ifcfg-enp3s0 
HWADDR=xx:xx:xx:xx:xx:xx
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=enp3s0
UUID=abb51b04-420b-49bb-bfca-3c159ebbc6ee
ONBOOT=no

物理ポートenp3s0をブリッジに接続します。

# nmcli con add type bridge-slave ifname enp3s0 master bridge-brenp3s0
Connection 'bridge-slave-enp3s0' (3264fc3b-9b7c-4241-87b0-3b207dc7cc92) successfully added.

新しく、ifcfg-bridge-slave-enp3s0というファイルができました。

# ls
ifcfg-bridge-enp3s0
ifcfg-bridge-slave-enp3s0
ifcfg-enp3s0

作成されたファイルの中身を確認します。

# cat ifcfg-bridge-slave-enp3s0
TYPE=Ethernet
NAME=bridge-slave-enp3s0
UUID=3264fc3b-9b7c-4241-87b0-3b207dc7cc92
DEVICE=enp3s0
ONBOOT=yes
BRIDGE=f1ea72c8-e773-4bd9-aff7-d6873b015f74




# nmcli device     
brenp3s0  bridge    connected    bridge-brenp3s0     
eno1      ethernet  connected    eno1                
enp3s0    ethernet  connected    bridge-slave-enp3s0 
eno2      ethernet  unavailable  --                  
lo        loopback  unmanaged    --                  


nmcli c show
NAME                 UUID                                  TYPE            DEVICE   
eno1                 f3b463df-5cc8-4c3b-b5d4-c245134f77fe  802-3-ethernet  eno1     
enp3s0               abb51b04-420b-49bb-bfca-3c159ebbc6ee  802-3-ethernet  --       
eno2                 a7787771-26a8-4ccd-9b1e-cb64bffe34ad  802-3-ethernet  --       
bridge-slave-enp3s0  3264fc3b-9b7c-4241-87b0-3b207dc7cc92  802-3-ethernet  enp3s0   
bridge-brenp3s0      f1ea72c8-e773-4bd9-aff7-d6873b015f74  bridge          brenp3s0 

これは不要だと思うが、enp3s0の設定を変更します。

# nmcli con modify enp3s0 ipv4.dns "" ipv4.addresses "" ipv4.dns-search "" ipv4.method disable

中身を確認します。

# cat ifcfg-enp3s0 
TYPE=Ethernet
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=enp3s0
UUID=abb51b04-420b-49bb-bfca-3c159ebbc6ee
ONBOOT=no
HWADDR=xx:xx:xx:xx:xx:xx
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

NetworkManagerをリスタートします。

# systemctl restart NetworkManager

nmcli deviceの結果を確認します。

# nmcli d
DEVICE    TYPE      STATE        CONNECTION          
brenp3s0  bridge    connected    bridge-brenp3s0     
eno1      ethernet  connected    eno1                
enp3s0    ethernet  connected    bridge-slave-enp3s0 
eno2      ethernet  unavailable  --                  
lo        loopback  unmanaged    --                  

nmcli connection showの結果を確認します。

# nmcli c show
nmcli c show
NAME                 UUID                                  TYPE            DEVICE   
bridge-slave-enp3s0  3264fc3b-9b7c-4241-87b0-3b207dc7cc92  802-3-ethernet  enp3s0   
bridge-brenp3s0      f1ea72c8-e773-4bd9-aff7-d6873b015f74  bridge          brenp3s0 
eno2                 a7787771-26a8-4ccd-9b1e-cb64bffe34ad  802-3-ethernet  --       
enp3s0               9bd21e62-df5c-4d81-ab1d-b5a46de5ed5d  802-3-ethernet  --       
eno1                 f3b463df-5cc8-4c3b-b5d4-c245134f77fe  802-3-ethernet  eno1     
enp3s0               abb51b04-420b-49bb-bfca-3c159ebbc6ee  802-3-ethernet  --       

デバイスとの関連は、UUIDを使って行われているようです。

grep f1ea72c8-e773-4bd9-aff7-d6873b015f74 ifcfg-*
ifcfg-bridge-brenp3s0:UUID=f1ea72c8-e773-4bd9-aff7-d6873b015f74
ifcfg-bridge-slave-enp3s0:BRIDGE=f1ea72c8-e773-4bd9-aff7-d6873b015f74

brctl show

# brctl show
bridge name	bridge id		STP enabled	interfaces
brenp3s0		8000.002590df8219	no		enp3s0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment