概要
LinuxでNATルーターを構成し、2つのVLANの一方のアドレスをNATし通信させる方法です。
内容は検証目的のため、セキュリティ等一切考慮しておりません。本番運用の際にはご注意ください。
想定シナリオ
以下の2つの組織が運用するVLANが存在するとします。
VLAN1: 192.168.1.0/24
VLAN2: 10.0.0.0/24
ここで VLAN1 の 192.168.1.100 から VLAN2 の 10.0.0.100 にアクセスしたいとします。
VLAN1 側組織は10.0.0.0/24のアドレスが他の用途に利用されているとし、VLAN1側では10.0.0.100のアドレスは192.168.2.100に見えるようにします。
一方VLAN2側では、192.168.1.100 をアドレス変換なくアクセスできるようにします。
設定手順
- CentOS 8 をインストールし、VLAN1とVLAN2に接続します。VLAN1をeth1とし、VLAN2をeth2とします。
- いろいろと面倒なので、SELinuxは無効化しておきます。
/etc/selinux/config
でSELINUX=disabled
にすればよいです。 - また、firewalldも無効化しておきます。
systemctl disable firewalld
- ルーティング機能を有効化します。
/etc/sysctl.conf
にnet.ipv4.ip_forward=1
を追加してください。 - 有効化するため、再起動します。
-
iptables
でNAT設定を行います。
# iptables -t nat -A POSTROUTING -d 192.168.1.100 -j SNAT --to-source 192.168.2.100
# iptables -t nat -A PREROUTING -d 192.168.2.100 -j DNAT --to-destination 10.0.0.100
1行目は、宛先が192.168.1.100のパケットを受信した場合に、ソースアドレスを192.168.2.100に変換。
2行目は、宛先が192.168.2.100のパケットを受信した場合に、宛先アドレスを10.0.0.100に変換。PREROUTINGを指定することで、宛先アドレスを変換した後にルーティングされるようにします。
この設定は再起動すると消えてしまうので、起動毎に実行してください。(永続化の方法がわかりませんでした)