はじめに
前回の記事では、iptablesによるNATとIPマスカレードについて解説しました。
ここではネットワークセグメントを「enp0s8」と「enp0s9」の2つのインターフェイスを用いて物理的に分割していました。
enp0s8 | 172.16.1.254/24 |
enp0s9 | 172.16.2.254/24 |
今回の記事では、1つのインターフェイスでVLANを用いて論理的にセグメントを分割していきたいと思います。
(仮想環境で物理的・論理的と言うのは多少違和感がありますがこのまま進めたいと思います。)
動作環境
VirtualBoxを使用して、以下のように「debrt01」、「debsv01」、「debsv02」の3台のゲストOSを使用します。使用するネットワークアダプターは「ブリッジアダプター」と「内部ネットワーク」となっています。
この記事では目標として、VLANにより1つのインターフェイス上でネットワークを論理的に分割し、VLAN間で通信出来るようにしたいと思います。
「debsv01」はVLANIDを1、「desv02」はVLANIDを2と設定し、ネットワークを分割します。
参考までに3台とも以下のような構成となっています。
OS | Debian 10.2 Buster |
デスクトップ環境 | 未インストール |
プロセッサー数 | 1 |
メモリ | 1GB |
ストレージ | 8GB |
debrt01
「debrt01」はルータとして設定します。「debsv01」、「debsv02」間の通信や外部ネットワークとの通信等、パケットの処理を行います。
enp0s3 | アダプター1 | ブリッジアダプター |
IPアドレス | 192.168.0.21/24 192.168.0.22/24 192.168.0.23/24 |
|
デフォルトゲートウェイ | 192.168.0.254 | |
enp0s8 | アダプター2 | 内部ネットワーク(名前:net01) |
enp0s8.1 | IPアドレス | 172.16.1.254/24 |
デフォルトゲートウェイ | 設定無し | |
enp0s8.2 | IPアドレス | 172.16.2.254/24 |
デフォルトゲートウェイ | 設定無し |
debsv01
「debsv01」はサーバとして使用します。サーバ間の通信や外部ネットワークとの通信の確認を行います。
enp0s3 | アダプター1 | 内部ネットワーク(名前:net01) |
enp0s3.1 | IPアドレス | 172.16.1.1/24 |
デフォルトゲートウェイ | 172.16.1.254 |
debsv02
「debsv02」はサーバとして使用します。サーバ間の通信や外部ネットワークとの通信の確認を行います。
enp0s3 | アダプター1 | 内部ネットワーク(名前:net01) |
enp0s3.2 | IPアドレス | 172.16.2.1/24 |
デフォルトゲートウェイ | 172.16.2.254 |
設定
共通設定
全てのホストにおいて「vlan」パッケージをインストールし、VLANを有効にします。
パッケージのインストール
# apt -y install vlan
VLANの有効化
# echo 8021q >> /etc/modules
debrt01
「debsv01(VLANID:1)」と「debsv02(VLANID:2)」のVLANトラフィックを処理するために、「debrt01」にはVLANID 1と2を設定しています。
インターフェイスの設定
# vi /etc/network/interfaces
auto lo
iface lo inet loopback
auto enp0s3
iface enp0s3 inet static
address 192.168.0.21/24
gateway 192.168.0.254
auto enp0s3:1
iface enp0s3:1 inet static
address 192.168.0.22/24
auto enp0s3:2
iface enp0s3:2 inet static
address 192.168.0.23/24
auto enp0s8.1
iface enp0s8.1 inet static
address 172.16.1.254/24
vlan-raw-device enp0s8
auto enp0s8.2
iface enp0s8.2 inet static
address 172.16.2.254/24
vlan-raw-device enp0s8
# systemctl restart networking.service
インターフェイスにVLANを設定する場合は、「インターフェイス名.VLANID」というようにインターフェイスを作成しIPアドレス等を設定します。
パケット転送を有効にする
# vi /etc/sysctl.conf
# 28行目のコメントを解除
net.ipv4.ip_forward=1
# sysctl -p
net.ipv4.ip_forward = 1
debsv01
「debsv01」ではVLANIDを1に設定します。
インターフェイスの設定
# vi /etc/network/interfaces
auto lo
iface lo inet loopback
auto enp0s3.1
iface enp0s3.1 inet static
address 172.16.1.1/24
gateway 172.16.1.254
vlan-raw-device enp0s3
# systemctl restart networking.service
debsv02
「debsv02」ではVLANIDを2に設定します。
インターフェイスの設定
# vi /etc/network/interfaces
auto lo
iface lo inet loopback
auto enp0s3.2
iface enp0s3.2 inet static
address 172.16.2.1/24
gateway 172.16.2.254
vlan-raw-device enp0s3
# systemctl restart networking.service
最後に
これで目標としていた「VLANにより1つのインターフェイス上でネットワークを論理的に分割し、VLAN間で通信」することが出来るようになりました。
PINGコマンド等で通信の確認が出来ると思います。
また、前回の記事で紹介した以下のiptablesの設定を行うことで、外部ネットワークとの通信も可能となります。
debsv01(NAT)
# iptables -t nat -A PREROUTING -i enp0s3 -d 192.168.0.22 -j DNAT --to 172.16.1.1
# iptables -t nat -A POSTROUTING -o enp0s3 -s 172.16.1.1 -j SNAT --to 192.168.0.22
debsv02(IPマスカレード)
# iptables -t nat -A POSTROUTING -o enp0s3 -s 172.16.2.0/24 -j SNAT --to 192.168.0.23
コメント