はじめに
この実験 (Lab) では、iproute2 スイートに含まれる ip コマンドを使用して、Linux システム上で仮想 LAN (VLAN) インターフェイスを構成する方法を学びます。単一の物理インターフェイス上に論理的に分離されたネットワークを作成する実践的な経験を積むことができます。これは、ネットワーク管理とセグメンテーションにおける基本的なスキルです。このプロセスにより、追加の物理ハードウェアなしでネットワークトラフィックを分離し、セキュリティとパフォーマンスを向上させることができます。
まず、必要な vlan ユーザー空間ユーティリティをインストールし、VLAN タギングを有効にするために 802.1q カーネルモジュールをロードすることからシステムを準備します。初期セットアップの後、プライマリネットワークインターフェイスを特定し、VLAN 10 および VLAN 20 用に 2 つの新しい仮想インターフェイスを作成し、それぞれに静的 IP アドレスを割り当てます。最後に、ip a コマンドを使用して、VLAN インターフェイスが正常に作成され、システム上でアクティブになっていることを確認します。
VLAN ユーティリティのインストールと 802.1q カーネルモジュールのロード
このステップでは、Linux 環境を VLAN 構成用に準備します。これには、必要なユーザー空間ツールのインストールと、必要なカーネルモジュールのロードという 2 つの主要なアクションが含まれます。
仮想 LAN (VLAN) を使用すると、同じ物理ネットワークインフラストラクチャ上に論理的に分離されたネットワークを作成できます。Linux 上で VLAN を管理するには、コマンドラインツールを提供する vlan パッケージが必要です。さらに、カーネルは VLAN タグ付きトラフィックを処理できる必要があります。これは、VLAN 用の IEEE 802.1Q ネットワーキング規格にちなんで名付けられた 8021q カーネルモジュールによって有効になります。
まず、パッケージリストが最新であることを確認し、次に vlan パッケージをインストールします。すべてのコマンドはターミナルで実行されます。
システム上のパッケージインデックスを更新します。
sudo apt updatevlanパッケージをインストールします。-yフラグは、インストールを自動的に確認します。sudo apt install -y vlanパッケージがインストールされていることを示す出力が表示されるはずです。
Reading package lists... Done Building dependency tree... Done Reading state information... Done The following NEW packages will be installed: vlan 0 upgraded, 1 newly installed, 0 to remove and XX not upgraded. Need to get XX.X kB of archives. After this operation, XXX kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 vlan X.X-X [XX.X kB] Fetched XX.X kB in Xs (XX.X kB/s) Selecting previously unselected package vlan. (Reading database ... XXXXXX files and directories currently installed.) Preparing to unpack .../vlan_X.X-X_amd64.deb ... Unpacking vlan (X.X-X) ... Setting up vlan (X.X-X) ...
ツールがインストールされたので、8021q カーネルモジュールをロードする必要があります。このモジュールにより、Linux カーネルは VLAN タグを持つネットワークパケットを処理できるようになります。
modprobeコマンドを使用して8021qモジュールをロードします。sudo modprobe 8021qこのコマンドは、成功した場合、通常は何も出力しません。
モジュールが正しくロードされたことを確認するには、
lsmodでロードされているすべてのモジュールを一覧表示し、grepを使用して8021qで出力をフィルタリングできます。lsmod | grep 8021q出力には
8021qモジュールが表示され、カーネルでアクティブになっていることを確認する必要があります。8021q 36864 0 garp 20480 1 8021q mrp 20480 1 8021q
これで、システムは VLAN 構成の準備ができました。次のステップでは、ネットワークインターフェイスを特定し、VLAN の作成を開始します。
プライマリネットワークインターフェイスの特定
このステップでは、システム上のプライマリネットワークインターフェイスの名前を特定します。VLAN インターフェイスは、物理ネットワークインターフェイスに論理的に接続された仮想インターフェイスです。したがって、VLAN を作成する前に、まずこの物理的な「親」インターフェイスの名前を知る必要があります。
ここでは、Linux 上のネットワーク構成の最新標準である ip コマンドを使用します。具体的には、ip a (または ip addr) コマンドがすべてのネットワークインターフェイスに関する情報を表示します。
ターミナルを開きます。現在の作業ディレクトリは
~/projectです。すべてのネットワークインターフェイスとその構成を一覧表示するには、次のコマンドを入力して Enter キーを押します。
ip a
システム上のすべてのネットワークインターフェイスのリストが表示されます。アクティブで IP アドレスが割り当てられているインターフェイスを探してください。ローカルループバックデバイスである lo インターフェイスは無視してください。プライマリインターフェイス名は通常 en (Ethernet の場合) または eth で始まります。
以下は、出力がどのようになるかの例です。この例では、eth0 がプライマリ物理インターフェイスです。
1: lo: <LOOPBACK,MULTICAST,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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:16:3e:00:04:06 brd ff:ff:ff:ff:ff:ff
altname enp0s5
altname ens5
inet 172.16.50.186/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
valid_lft 1892159924sec preferred_lft 1892159924sec
inet6 fe80::216:3eff:fe00:406/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:f2:70:14:b5 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
上記の出力から、以下に注意してください。
eth0: これはインターフェイスの名前です。この名前をメモしておいてください。次のステップで必要になります。インターフェイス名は異なる場合があります (例:ens33)。state UP: これはインターフェイスがアクティブであることを示します。inet 172.16.50.186/24: これはインターフェイスに割り当てられた IPv4 アドレスです。
プライマリネットワークインターフェイスを特定したので、それに VLAN インターフェイスを作成する準備ができました。
VLAN 10 および VLAN 20 用の仮想インターフェイスの作成
このステップでは、ip コマンドを使用して 2 つの新しい仮想ネットワークインターフェイスを作成します。各インターフェイスは特定の VLAN ID に関連付けられ、これによりホストは 2 つの異なる論理ネットワーク、VLAN 10 および VLAN 20 に効果的に接続されます。これらの新しいインターフェイスは、前のステップで特定したプライマリ物理インターフェイスにリンクされます。
VLAN インターフェイスを作成するためのコマンドは ip link add です。その構造を分解してみましょう。
sudo ip link add: 新しいネットワークリンク (インターフェイス) を追加するための基本コマンドです。link <physical_interface>: 親となる物理インターフェイスを指定します。<physical_interface>は、ステップ 2 で見つけた名前 (例:eth0) に置き換えてください。name <vlan_interface_name>: 新しい仮想インターフェイスの名前を定義します。一般的な規則は<physical_interface>.<vlan_id>で、例えばeth0.10のようになります。type vlan: 新しいインターフェイスが VLAN タイプであることを指定します。id <vlan_id>: 数値の VLAN ID (またはタグ) を割り当てます。
それでは、インターフェイスを作成しましょう。インターフェイス名が異なる場合は、必ず eth0 を実際の物理インターフェイス名に置き換えてください。
まず、VLAN 10 の仮想インターフェイスを作成します。このインターフェイスは
eth0.10という名前になります。sudo ip link add link eth0 name eth0.10 type vlan id 10次に、VLAN 20 の仮想インターフェイスを作成し、
eth0.20という名前を付けます。sudo ip link add link eth0 name eth0.20 type vlan id 20
これらのコマンドが成功した場合、何も出力されません。これで論理インターフェイスは作成されましたが、まだアクティブではなく、IP アドレスも構成されていません。これは次のステップで処理します。
IP アドレスの割り当てと VLAN インターフェイスのアクティブ化
このステップでは、新しく作成した VLAN インターフェイスをオンラインにし、IP アドレスを割り当てます。作成後、ネットワークインターフェイスはデフォルトで DOWN 状態になり、無効化されてトラフィックを送受信できなくなります。機能させるためには、それらをアクティブ化し、ネットワーク層のアドレスを提供する必要があります。
インターフェイスをアクティブ化するには ip link set up コマンドを、IP アドレスを割り当てるには ip addr add コマンドを使用します。
まず、VLAN インターフェイスをアクティブ化、つまり「アップ」させる必要があります。これにより、ネットワーク通信に参加できるようになります。ターミナルで以下のコマンドを実行してください。インターフェイス名が
eth0でない場合は、ご自身のインターフェイス名を使用することを忘れないでください。eth0.10インターフェイスのアクティブ化:sudo ip link set dev eth0.10 upeth0.20インターフェイスのアクティブ化:sudo ip link set dev eth0.20 upこれらのコマンドが成功した場合、何も出力されません。
インターフェイスがアクティブになったので、それぞれに IP アドレスを割り当てることができます。VLAN 10 には
192.168.10.0/24ネットワークから、VLAN 20 には192.168.20.0/24ネットワークからアドレスを割り当てます。/24は、サブネットマスク255.255.255.0の CIDR 表記です。eth0.10インターフェイスに192.168.10.10/24を割り当てます。sudo ip addr add 192.168.10.10/24 dev eth0.10eth0.20インターフェイスに192.168.20.10/24を割り当てます。sudo ip addr add 192.168.20.10/24 dev eth0.20
これで、VLAN インターフェイスは現在のセッションに対して完全に構成され、アクティブになりました。最後のステップで、完全な構成を確認します。
ip a コマンドによる VLAN インターフェイス設定の確認
最終ステップとして、VLAN インターフェイスが正常に作成、アクティブ化され、正しい IP アドレスで構成されたことを確認します。再度 ip a コマンドを実行すると、新しい仮想インターフェイスを含むホストの完全なネットワーク構成が表示されます。
ターミナルで
ip aコマンドを実行し、すべてのネットワークインターフェイス情報を表示します。ip a出力を注意深く確認します。物理インターフェイスおよびループバックインターフェイスと並んで、新しい VLAN インターフェイス
eth0.10およびeth0.20が表示されているはずです。出力は以下のようになります。
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 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:3e:00:04:06 brd ff:ff:ff:ff:ff:ff inet 172.16.50.186/24 metric 100 brd 172.16.50.255 scope global dynamic eth0 valid_lft 1892159924sec preferred_lft 1892159924sec 3: eth0.10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:00:04:06 brd ff:ff:ff:ff:ff:ff inet 192.168.10.10/24 brd 192.168.10.255 scope global eth0.10 valid_lft forever preferred_lft forever 4: eth0.20@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:00:04:06 brd ff:ff:ff:ff:ff:ff inet 192.168.20.10/24 brd 192.168.20.255 scope global eth0.20 valid_lft forever preferred_lft forever
新しいインターフェイスの以下の重要な詳細を確認してください。
eth0.10@eth0およびeth0.20@eth0: VLAN インターフェイスの名前です。@eth0の部分は、これらがeth0物理デバイスにリンクされていることを明示的に示しています。state UP: 両方のインターフェイスがアクティブで、データの送信準備ができていることを確認します。inet 192.168.10.10/24およびinet 192.168.20.10/24: 前のステップで割り当てた IP アドレスが正しく構成されています。
おめでとうございます!単一の Linux ホストで 2 つの異なる VLAN に参加するように、正常に構成できました。これは、サーバーが単一の物理接続を使用して複数の論理ネットワークセグメント間で通信する方法を示しています。
永続性に関する注意: 使用した ip コマンドは、再起動すると失われる一時的な構成を作成します。本番環境では、Netplan (/etc/netplan/*.yaml) や古い ifupdown システム (/etc/network/interfaces) で使用されるネットワーク構成ファイルを編集することで、これらの変更を永続化します。
まとめ
この実験では、ip コマンドを使用して Linux システム上で VLAN インターフェイスを作成および構成する完全なプロセスを学びました。まず、ユーザー空間ユーティリティのために vlan パッケージをインストールし、VLAN タグ処理を有効にするために 8021q カーネルモジュールをロードすることを含む環境準備から始めました。この基礎的なステップにより、システムは VLAN トラフィックを理解し、管理できるようになります。
初期セットアップの後、VLAN の親として機能するプライマリ物理ネットワークインターフェイスを特定しました。次に、ip link コマンドを使用して、VLAN 10 用と VLAN 20 用の 2 つの別個の仮想インターフェイスを作成し、それらを親インターフェイスにリンクしました。これらのインターフェイスを機能させるために、それぞれに一意の IP アドレスを割り当て、アクティブ化しました。プロセスは、ip a コマンドを使用して、新しい VLAN インターフェイスが正常に作成され、正しい IP アドレスで構成され、ネットワーク上でアクティブであることを確認して完了しました。



