【CentOS】IEEE 802.1Q タグVLANの設定

CentOSでIEEE 802.1Q タグVLAN(以下タグVLAN)の設定方法を検証しました。
タグVLANを使用すると、1つの物理インターフェースで複数のVLANの通信を束ねることができます。サービス用通信と管理用通信を論理的に分離したり、ホスト内の仮想ソフトウェアに複数のネットワークを接続するときに活用できます。

前提条件

  • 物理環境のサーバにCentOSをインストール
  • 作業はroot権限を持つユーザで実施
  • サーバは、L2スイッチ(Cisco Catalyst 2960G)にLANケーブルで接続

OSは、CentOSインストールDVDのISOファイルから「最小限のインストール」を選択しインストールを行いました。
バージョン情報は以下の通りです。

# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

# uname -r
4.18.0-80.el8.x86_64

ネットワーク構成図

以下のネットワーク構成で検証を行いました。
サービス用セグメントと管理用セグメントをL2スイッチに個別に接続し、L2スイッチとサーバはタグVLANで物理リンクを1本に束ねています。

設定手順

タグVLAN用コネクションの作成

以下のコマンドを実行し、タグVLAN用のコネクションを作成します。
以下の例では、enp2s0インターフェースに、vlan10(VLAN ID:10)、vlan20(VLAN ID:20)の2つのコネクションを作成しています。

# nmcli con add type vlan con-name vlan10 dev enp2s0 id 10
接続 'VLAN10' (cc5db3d8-af15-48b3-90d2-a64e0ae66aa2) が正常に追加されました。
# nmcli con add type vlan con-name vlan20 dev enp2s0 id 20
接続 'VLAN20' (d50ed190-f8d3-4969-85f9-bc677ba0ad0a) が正常に追加されました。

以下のコマンドで、作成したタグVLAN用のコネクションを確認できます。
タグVLAN用のコネクションを作成すると、対応するデバイス(enp2s0.10enp2s0.20)が自動的に作成されます。

# nmcli con
NAME     UUID                                  TYPE      DEVICE
enp2s0   572d5b37-8787-475f-a23d-d3c53cf1de2f  ethernet  enp2s0
vlan10   cc5db3d8-af15-48b3-90d2-a64e0ae66aa2  vlan      enp2s0.10
vlan20   d50ed190-f8d3-4969-85f9-bc677ba0ad0a  vlan      enp2s0.20

IPアドレスの設定

以下のコマンドを実行し、タグVLAN用のコネクションに、IPアドレスを設定します。
以下の例では、vlan10192.168.10.1/24vlan20192.168.20.1/24を設定しています。

# nmcli con mod vlan10 ipv4.addresses 192.168.10.1/24
# nmcli con mod vlan20 ipv4.addresses 192.168.20.1/24

デフォルトルートの設定

外部ネットワークと通信するために、サービス用VLANのコネクションにデフォルトルートを設定します。
以下の例では、vlan10に対して、デフォルトルートを192.168.100.254に設定しています。

# nmcli con mod vlan10 ipv4.gateway 192.168.100.254

名前解決の設定

インターネット上のドメインを名前解決できるように、サービス用VLANのコネクションに名前解決先のDNSサーバを設定します。
以下の例では、vlan10に対して、名前解決先DNSサーバを8.8.8.8に設定しています。

# nmcli con mod vlan10 ipv4.dns 8.8.8.8

設定の反映

nmcliコマンドは、コネクションにパラメータを設定しただけでは変更が反映されません。
以下のコマンドを実行し、各VLAN用のコネクションの設定を反映させます。

# nmcli con up vlan10
# nmcli con up vlan20

物理インターフェース用コネクションの無効化

今回はタグVLANを使用するので、タグ無しで通信を行う物理インターフェース用コネクションは無効化します。なお、サーバ対向スイッチがネイティブVLAN(トランクポートでタグ無し通信も行う)を使用している場合は、無効化する必要はありません。

以下のコマンドを実行し、物理インターフェース用コネクションを無効化します。
以下の例では、enp2s0コネクションを無効化しています。

# nmcli con mod enp2s0 connection.autoconnect no
# nmcli con mod enp2s0 ipv4.method disabled
# nmcli con mod enp2s0 ipv6.method ignore
# nmcli con down enp2s0

設定結果の確認

以下のコマンドを実行し、enp2s0デバイスが切断済みenp2s0.100enp2s0.100接続済みで各VLANに対応するコネクションに接続されていることを確認します。

# nmcli dev
DEVICE      TYPE      STATE     CONNECTION 
enp2s0.200  vlan      接続済み  vlan200    
enp2s0.100  vlan      接続済み  vlan100    
enp2s0      ethernet  切断済み  --         
lo          loopback  管理無し  --       

以下のコマンドで、各インターフェースのIPアドレスを確認します。
VLANインターフェースのIPアドレスは、<VLAN用インターフェースデバイス名>@<物理インターフェースデバイス名>で表示されます。

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 18:66:da:38:a9:c7 brd ff:ff:ff:ff:ff:ff
25: enp2s0.100@enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 18:66:da:38:a9:c7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.20/24 brd 192.168.100.255 scope global noprefixroute enp2s0.100
       valid_lft forever preferred_lft forever
    inet6 fe80::1a66:daff:fe38:a9c7/64 scope link 
       valid_lft forever preferred_lft forever
26: enp2s0.200@enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 18:66:da:38:a9:c7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.3/24 brd 192.168.200.255 scope global noprefixroute enp2s0.200
       valid_lft forever preferred_lft forever
    inet6 fe80::1a66:daff:fe38:a9c7/64 scope link 
       valid_lft forever preferred_lft forever

参考情報

L2スイッチのタグVLAN設定

Cisco Catalystの場合、以下のコマンドでインターフェースへタグVLANの設定を行います。
なお、configure terminalは特権(enable)モードの状態で実行します。

!!! コンフィギュレーションモードへ移行 !!!
# configure terminal
(config)# 

!!! VLANの定義 !!!
(config)# vlan 10
(config-vlan)# name Service Segment
(config-vlan)# exit
(config)# vlan 20
(config-vlan)# name Management Segment
(config-vlan)# exit

!!! VLAN10用SVI(Server Virtual Interface)の設定
(config)# interface Vlan10
(config-if)# ip address 192.168.10.2 255.255.255.0
(config-if)# exit

!!! VLAN20用SVI(Server Virtual Interface)の設定
(config)# interface Vlan20
(config-if)# ip address 192.168.20.2 255.255.255.0
(config-if)# exit

!!! サービスセグメント側インターフェースの設定 !!!
(config)# interface GigabitEthernet0/1
(config-if)# description ### to Service Segment ###
(config-if)# switchport access vlan 10
(config-if)# switchport mode access
(config-if)# exit

!!! マネジメントセグメント側インターフェースの設定 !!!
(config)# interface GigabitEthernet0/2
(config-if)# description ### to Management Segment ###
(config-if)# switchport access vlan 20
(config-if)# switchport mode access
(config-if)# exit

!!! サーバ対向トランクポートの設定 !!!
(config)# interface GigabitEthernet0/24
(config-if)# description ### to Server ###
(config-if)# switchport trunk allowed vlan 10,20
(config-if)# switchport mode trunk
(config-if)# exit


!!! コンフィギュレーションモードから抜けて設定を保存 !!!
(config)# end
# write memory

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です