【CentOS】IEEE 802.1Q タグVLANの設定
CentOSでIEEE 802.1Q タグVLAN(以下タグVLAN)の設定方法を検証しました。
タグVLANを使用すると、1つの物理インターフェースで複数のVLANの通信を束ねることができます。サービス用通信と管理用通信を論理的に分離したり、ホスト内の仮想ソフトウェアに複数のネットワークを接続するときに活用できます。
Contents
前提条件
- 物理環境のサーバに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.10
、enp2s0.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アドレスを設定します。
以下の例では、vlan10
に192.168.10.1/24
、vlan20
に192.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.100
とenp2s0.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