LinuxでNATルーター


概要

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 をアドレス変換なくアクセスできるようにします。

設定手順

  1. CentOS 8 をインストールし、VLAN1とVLAN2に接続します。VLAN1をeth1とし、VLAN2をeth2とします。
  2. いろいろと面倒なので、SELinuxは無効化しておきます。/etc/selinux/configSELINUX=disabledにすればよいです。
  3. また、firewalldも無効化しておきます。systemctl disable firewalld
  4. ルーティング機能を有効化します。/etc/sysctl.confnet.ipv4.ip_forward=1を追加してください。
  5. 有効化するため、再起動します。
  6. 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を指定することで、宛先アドレスを変換した後にルーティングされるようにします。
この設定は再起動すると消えてしまうので、起動毎に実行してください。(永続化の方法がわかりませんでした)