VirtualBoxを用いた仮想ネットワークの構築! ~ VLANによるネットワークの分割 ~

Debian

はじめに

前回の記事では、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

コメント

タイトルとURLをコピーしました