めもめも

このブログに記載の内容は個人の見解であり、必ずしも所属組織の立場、戦略、意見を代表するものではありません。

RHEL7/CentOS7のnmcliコマンドでTeamデバイス/Bondingデバイス/VLAN/ブリッジを組み合わせる方法

はじめに

このエントリーは、下記の資料の補足資料として記載しています。まずは、下記の資料でNetworkManagerとnmcliコマンドの基礎を確認しておいてください。

RHEL7/CentOS7 NetworkManager徹底入門

Bondingとブリッジの接続

下記の構成を作成します。物理NICのデバイス名は、ens6, ens7としています。

ens6 -|
      |--bond0--br0 (192.168.1.11/24)
ens7 -|

はじめにブリッジ「br0」を用意して、有効化します。

# nmcli c add type bridge ifname br0 con-name bridge-br0
# nmcli c mod bridge-br0 bridge.stp no
# nmcli c mod bridge-br0 ipv4.method manual ipv4.address "192.168.1.11/24" ipv4.gateway "192.168.1.1"
# nmcli c mod bridge-br0 ipv4.dns 8.8.8.8 ipv4.dns-search redhat.com
# nmcli c down bridge-br0
# nmcli c up bridge-br0

続いて、Bondingデバイス「bond0」を作成します。「connection.master」と「connection.slave-type」を指定することで、ブリッジに接続しています。最後に各デバイスを有効化しています。

# nmcli c add type bond ifname bond0 con-name bond-bond0 mode active-backup
# nmcli c mod bond-bond0 connection.master br0 connection.slave-type bridge
# nmcli c add type bond-slave ifname ens6 con-name bond-slave-ens6 master bond0
# nmcli c add type bond-slave ifname ens7 con-name bond-slave-ens7 master bond0
# nmcli c down bond-slave-ens6
# nmcli c down bond-slave-ens7
# nmcli c down bond-bond0
# nmcli c up bond-slave-ens6
# nmcli c up bond-slave-ens7
# nmcli c up bond-bond0

この部分の手順は、RHEL7.2以降で改善される予定です。
Bug 1183420 - Adding bond device to bridge with "bridge-slave" type doesn't work.

BondingとVLANの接続

下記の構成を作成します。物理NICのデバイス名は、ens6, ens7としています。

ens6 -|
      |--bond0--vlan10 (192.168.10.11/24)
ens7 -|

はじめにBondingデバイス「bond0」を定義します。IPアドレスの設定は行わないように指定します。

# nmcli c add type bond ifname bond0 con-name bond-bond0 mode active-backup
# nmcli c mod bond-bond0 ipv4.method disabled ipv6.method ignore
# nmcli c add type bond-slave ifname ens6 con-name bond-slave-ens6 master bond0
# nmcli c add type bond-slave ifname ens7 con-name bond-slave-ens7 master bond0

「bond0」をベースデバイスとして、VLANデバイス「vlan10」を作成します。

# nmcli c add type vlan ifname vlan10 con-name vlan-vlan10 dev bond0 id 10
# nmcli c mod vlan-vlan10 ipv4.method manual ipv4.address "192.168.10.11/24" ipv4.gateway "192.168.10.1"

最後に、各デバイスを有効化します。

# nmcli c down bond-slave-ens6
# nmcli c down bond-slave-ens7
# nmcli c down bond-bond0
# nmcli c up bond-slave-ens6
# nmcli c up bond-slave-ens7
# nmcli c up bond-bond0
# nmcli c down vlan-vlan10
# nmcli c up vlan-vlan10

bond0にIPを設定しないと動作しない問題は、RHEL7.1で解決しました。
(参考)Bug 1183424 - Need to assign a dummy IP to a bond device when enslaving to a VLAN device.

BondingとVLANとブリッジの接続

下記の構成を作成します。物理NICのデバイス名は、ens6, ens7としています。

ens6 -|
      |--bond0--vlan10--br0 (192.168.1.11/24)
ens7 -|

はじめにブリッジ「br0」を用意して、有効化します。

# nmcli c add type bridge ifname br0 con-name bridge-br0
# nmcli c mod bridge-br0 bridge.stp no
# nmcli c mod bridge-br0 ipv4.method manual ipv4.address "192.168.1.11/24" ipv4.gateway "192.168.1.1"
# nmcli c mod bridge-br0 ipv4.dns 8.8.8.8 ipv4.dns-search redhat.com
# nmcli c down bridge-br0
# nmcli c up bridge-br0

IPアドレスを持たないBondingデバイス「bond0」を作成します。

# nmcli c add type bond ifname bond0 con-name bond-bond0 mode active-backup
# nmcli c mod bond-bond0 ipv4.method disabled ipv6.method ignore
# nmcli c add type bond-slave ifname ens6 con-name bond-slave-ens6 master bond0
# nmcli c add type bond-slave ifname ens7 con-name bond-slave-ens7 master bond0

「bond0」をベースデバイスとして、VLANデバイス「vlan10」を作成します。「connection.master」と「connection.slave-type」を指定することで、ブリッジに接続しています。

# nmcli c add type vlan ifname vlan10 con-name vlan-vlan10 dev bond0 id 10
# nmcli c mod vlan-vlan10 connection.master br0 connection.slave-type bridge

この部分の手順は、RHEL7.2以降で改善される予定です。
Bug 1183420 - Adding bond device to bridge with "bridge-slave" type doesn't work.

最後に各デバイスを有効化します。

# nmcli c down bond-slave-ens6
# nmcli c down bond-slave-ens7
# nmcli c down bond-bond0
# nmcli c up bond-slave-ens6
# nmcli c up bond-slave-ens7
# nmcli c up bond-bond0
# nmcli c down vlan-vlan10
# nmcli c up vlan-vlan10

Teamデバイスとブリッジの接続

この構成は、現在(2015/01/19)の所、うまく作れないようです。

(参考)Bug 1183444 - Attaching a team device to a bridge doesn't work.

TeamデバイスとVLANの接続

下記の構成を作成します。物理NICのデバイス名は、ens6, ens7としています。

ens6 -|
      |--team0--vlan10 (192.168.10.11/24)
ens7 -|

はじめにTeamデバイス「team0」を定義します。IPアドレスは設定しないように指定します。

# nmcli c add type team ifname team0 con-name team-team0
# nmcli c mod  team-team0 ipv4.method disabled ipv6.method ignore
# nmcli c add type team-slave ifname ens6 con-name team-slave-ens6 master team-team0
# nmcli c add type team-slave ifname ens7 con-name team-slave-ens7 master team-team0

「team0」をベースデバイスとして、VLANデバイス「vlan10」を作成します。

# nmcli c add type vlan ifname vlan10 con-name vlan-vlan10 dev team0 id 10
# nmcli c mod vlan-vlan10 ipv4.method manual ipv4.address "192.168.10.11/24" ipv4.gateway "192.168.10.1"

最後に、各デバイスを有効化します。

# nmcli c down team-team0
# nmcli c down team-slave-ens6
# nmcli c down team-slave-ens7
# nmcli c down vlan-vlan10
# nmcli c up team-slave-ens6
# nmcli c up team-slave-ens7
# nmcli c up team-team0
# nmcli c up vlan-vlan10

TeamデバイスとVLANとブリッジの接続

下記の構成を作成します。物理NICのデバイス名は、ens6, ens7としています。

ens6 -|
      |--team0--vlan10--br0 (192.168.1.11/24)
ens7 -|

はじめにブリッジ「br0」を用意して、有効化します。

# nmcli c add type bridge ifname br0 con-name bridge-br0
# nmcli c mod bridge-br0 bridge.stp no
# nmcli c mod bridge-br0 ipv4.method manual ipv4.address "192.168.1.11/24" ipv4.gateway "192.168.1.1"
# nmcli c mod bridge-br0 ipv4.dns 8.8.8.8 ipv4.dns-search redhat.com
# nmcli c down bridge-br0
# nmcli c up bridge-br0

IPアドレスを持たないTeamデバイス「team0」を作成します。

# nmcli c add type team ifname team0 con-name team-team0
# nmcli c mod  team-team0 ipv4.method disabled ipv6.method ignore
# nmcli c add type team-slave ifname ens6 con-name team-slave-ens6 master team-team0
# nmcli c add type team-slave ifname ens7 con-name team-slave-ens7 master team-team0

「team0」をベースデバイスとして、VLANデバイス「vlan10」を作成します。「connection.master」と「connection.slave-type」を指定することで、ブリッジに接続しています。

# nmcli c add type vlan ifname vlan10 con-name vlan-vlan10 dev team0 id 10
# nmcli c mod vlan-vlan10 connection.master br0 connection.slave-type bridge

この部分の手順は、RHEL7.2以降で改善される予定です。
Bug 1183420 - Adding bond device to bridge with "bridge-slave" type doesn't work.

最後に各デバイスを有効化します。

# nmcli c down team-team0
# nmcli c down team-slave-ens6
# nmcli c down team-slave-ens7
# nmcli c down vlan-vlan10
# nmcli c up team-slave-ens6
# nmcli c up team-slave-ens7
# nmcli c up team-team0
# nmcli c up vlan-vlan10