Linode の VLAN (Virtual LAN) の設定について書きます。VLAN を使うと、プライベートネットワークを組むことができます。
VLANは、プライベートな仮想ローカルエリアネットワークで、Linode ユーザーなら追加料金なしで利用できます。VLAN は OSI ネットワークモデルの第2層で動作し、他のネットワークから完全に分離できます。VLAN は仮想ネットワークスイッチのように機能し、同じ VLAN に接続されたすべてのインスタンスは、同じ物理イーサネットネットワークに直接接続されているように互いに通信することができます。ネットワーク外のデバイスは、プライベートネットワーク内のトラフィックを見ることができません。
この先を読む前に、以下のページを参照して Linode のネットワーク構成を理解してください。
VLAN の利用ケース
VLAN を使う理由を整理します。
- Linode VM インスタンス間の通信をセキュアにする
- Linode VM インスタンス間の通信を最適化する
- Linode VM インスタンス間のアウトバウンド通信費用を削減する
VLAN の設定はとても簡単ですので、設定方法を紹介していきます。
Linode の VLAN
VLAN についてはユーザーガイドに記載されています。この記事は、この手順どおりに動かした情報をもとにしています。
執筆時点で日本リージョンは VLAN に対応していません。
VLAN ネットワーク構成
2つの Linode インスタンスを作成し VLAN を構成します。一台目はパブリック IP を使ってインターネットに公開し、二台目はパブリック IP を無効にし VLAN 内のサーバーからしかアクセスできないようにします。
VLAN を使う 2つの VM
パブリック IP で公開するフロントサーバー (linode-ap-south-01-front) と VLAN でのみ動作する DMZ 内を想定したサーバー (linode-ap-south-02-dmz) を用意します。
VM を作成するときに 下図の画面から VLAN を割り当てることもできますが、今回はその設定は使わず、インスタンスを作成した後に VLAN を設定する例を書きます。
VLAN の IP アドレスを決定する
VLAN のネットワークの IP アドレスを決めます。今回の例では次の2つの IP アドレスを使います。
- 10.0.0.1/24
- 10.0.0.2/24
サブネットマスクは 255.255.255.0 の構成となります。次のような図でも表現できます。
VLAN を VM に設定する
フロントサーバーと DMZ サーバーの両方に VLAN を設定します。
フロントサーバーの設定
Cloud Manager から Linode のインスタンスを設定し、Configurations タブから編集します。
ネットワークインタフェースの eth0 には Public Internet が設定されています。今回は、eth1 に VLAN を設定します。
バックエンドサーバーの設定
フロントサーバーと同様に設定します。設定後、インスタンスのネットワークインタフェースは次のように表示されます。
VM のネットワークを確認する
フロントサーバーの ifconfig
eth1 に 10.0.0.1 が割り当てられています。
root@linode-ap-south-01-front:~# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet XXX.XXX.XXX.XXX netmask 255.255.255.0 broadcast XXX.XXX.XXX.255
inet6 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX prefixlen 64 scopeid 0x20<link>
inet6 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX prefixlen 64 scopeid 0x0<global>
ether f2:3c:93:d8:03:c9 txqueuelen 1000 (Ethernet)
RX packets 19715 bytes 2375776 (2.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 19264 bytes 2908867 (2.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.1 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80:XXXX:XXXX:XXXX:XXXX:XXXX prefixlen 64 scopeid 0x20<link>
ether 90:de:01:d8:03:c9 txqueuelen 1000 (Ethernet)
RX packets 330 bytes 35482 (35.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 250 bytes 28578 (28.5 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
DMZ サーバーのパブリックIPの無効化
DMZ サーバーのパブリック IP をダウンさせます。
ifconfig eth0 down
この作業をするとパブリックIPの通信は遮断されます。実行後は VLAN にあるサーバーからしか ssh
でログインできなくなります。
DMZ サーバーの ifconfig
eth0 は UP されていません。eth1 に 10.0.0.2 が割り当てられています。
root@linode-ap-south-02-dmz:~# ifconfig -a
eth0: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether f2:3c:93:d8:03:31 txqueuelen 1000 (Ethernet)
RX packets 1201 bytes 81703 (81.7 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1281 bytes 96372 (96.3 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.2 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80:XXXX:XXXX:XXXX:XXXX:XXXX prefixlen 64 scopeid 0x20<link>
ether 90:de:01:d8:03:31 txqueuelen 1000 (Ethernet)
RX packets 1015 bytes 96518 (96.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 847 bytes 133734 (133.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
DMZ サーバーの Public IP の無効化の確認
パブリック IP が無効化されています。
% ping 172.XXX.XXX.XXX
PING 172.XXX.XXX.XXX (172.XXX.XXX.XXX): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
^C
--- 172.XXX.XXX.XXX ping statistics ---
5 packets transmitted, 0 packets received, 100.0% packet loss
VLAN 内での疎通確認
DMZ からフロントサーバー (10.0.0.1) への ping の結果です。
root@linode-ap-south-02-dmz:~# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.402 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.468 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.398 ms
^C
フロントサーバーからの DMZ サーバー(10.0.0.2) への ping の結果です。
root@linode-ap-south-01-front:~# ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.526 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.537 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.501 ms
^C
DMZ サーバーの eth0 に VLAN をアサインする
ifconfig eth0 down
にて、eth0 を無効化しましたが、リブートの度に無効化が必要になります。Linode の Cloud Manager では eth0 に VLAN を割り当てられます。
リブートすると次のように eth0 に VLAN が割り当てられています。
root@linode-ap-south-02-dmz:~# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.2 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80:XXXX:XXXX:XXXX:XXXX:XXXX prefixlen 64 scopeid 0x20<link>
ether 90:de:00:d8:03:31 txqueuelen 1000 (Ethernet)
RX packets 1 bytes 130 (130.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 94 bytes 4324 (4.3 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
フロントサーバーから DMZ のサーバーに疎通できます。
root@linode-ap-south-01-front:~# ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.606 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.411 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.412 ms
^C
フロントサーバーから DMZ のサーバーにログインできます。
root@linode-ap-south-01-front:~# ssh 10.0.0.2
root@10.0.0.2's password:
Welcome to Ubuntu 22.10 (GNU/Linux 5.19.0-29-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Fri Jan 20 02:13:45 PM UTC 2023
Last login: Fri Jan 20 14:12:37 2023 from 10.0.0.1
root@linode-ap-south-02-dmz
DMZ サーバーからフロントサーバーにも疎通できます。
root@linode-ap-south-02-dmz:~# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.369 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.367 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.328 ms
^C
--- 10.0.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4052ms
rtt min/avg/max/mdev = 0.328/0.360/0.387/0.019 ms
まとめ
VLAN の設定は簡単です。VLAN を使うとプライベートネットワークを構成できるので、セキュアな環境を提供できます。VLAN は Linode を使っている方には無償で利用できる機能です。VLAN 内のネットワークの転送は課金されません。また、高速なネットワーク通信も可能となります。