SEIL/x86 FujiによるNAT設定例(その1:NAPT/IPマスカレード)


はじめに

NAPTは主にプライベートネットワークとグローバルネットワークをつなぐ際のアドレス変換に使用される技術です。
身近な例では、自宅のLANとインターネットを接続するブロードバンドルータの主な役割がこれにあたります。
IPマスカレードと言った方が、分かる方もいらっしゃると思います。

環境

下図は本稿の前提環境です。
SEIL/x86を挟んで左側(192.168.10.0/24)がプライベート側(LAN側)。
右側(10.1.0.0/16)がグローバル側(WAN側)を想定しています。

LAN側、WAN側の各ノード(PC)のネットワーク設定は以下の通りとします。

PC IPアドレス サブネット ゲートウェイ
LAN側 192.168.10.10 /24 192.168.10.254
WAN側 10.1.1.10 /16 10.1.1.1

設定

最初に、上記通りにSEILのインタフェイス設定を行います。

interface lan0 add 192.168.10.254/24
interface lan1 add 10.1.1.1/16

LAN側(192.168.10.0/24)からWAN側へ通信する際に、相手先にインタフェイスLAN1のグローバルアドレス(10.1.1.1)からのアドレスであるようにアドレス変換します。

nat napt add private 192.168.10.0-192.168.10.255 interface lan1

以上で設定は完了です。

検証

LAN側のノードからWAN側のノードにPINGを実行して、その結果をパケットキャプチャ等を交えて検証します。
パケットキャプチャはSEILのtcpdumpコマンドを使用します。

PING実行結果

LAN側ノード(192.168.10.10)からPINGを3回実行。WAN側のノード(10.1.1.10)と通信できているのが分かります。

[root@LAN1 Desktop]# ping -c 3 10.1.1.10
PING 10.1.1.10 (10.1.1.10) 56(84) bytes of data.
64 bytes from 10.1.1.10: icmp_seq=1 ttl=63 time=1.96 ms
64 bytes from 10.1.1.10: icmp_seq=2 ttl=63 time=0.533 ms
64 bytes from 10.1.1.10: icmp_seq=3 ttl=63 time=0.543 ms

--- 10.1.1.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.533/1.013/1.965/0.673 ms
[root@LAN1 Desktop]#

SEIL/x86パケットキャプチャ結果(LAN側)

別セグメントとの通信なので、最初にゲートウェイ(192.168.10.254)のARPリクエストが飛び、その後PINGを3回実行しているのでICMPパケットが3往復しています。
宛先が別セグメント(10.1.1.10)のため、ゲートウェイのMACアドレスを確認するために最初にARPリクエストが発生しています。

SEILx86_02# tcpdump interface lan0
################################################################
tcpdump: when you want to exit this program, please type Ctrl-C.
################################################################
21:42:18.553204 ARP, Request who-has 192.168.10.254 tell 192.168.10.10, length 46
21:42:18.553297 ARP, Reply 192.168.10.254 is-at 00:0c:29:dd:ec:b3, length 28
21:42:18.553446 IP 192.168.10.10 > 10.1.1.10: ICMP echo request, id 30474, seq 1, length 64
21:42:18.553974 IP 10.1.1.10 > 192.168.10.10: ICMP echo reply, id 30474, seq 1, length 64
21:42:19.554172 IP 192.168.10.10 > 10.1.1.10: ICMP echo request, id 30474, seq 2, length 64
21:42:19.554518 IP 10.1.1.10 > 192.168.10.10: ICMP echo reply, id 30474, seq 2, length 64
21:42:20.554937 IP 192.168.10.10 > 10.1.1.10: ICMP echo request, id 30474, seq 3, length 64
21:42:20.555245 IP 10.1.1.10 > 192.168.10.10: ICMP echo reply, id 30474, seq 3, length 64

SEIL/x86パケットキャプチャ結果(WAN側)

LAN側のキャプチャ結果と比較して、ICMPパケットの発信元アドレスが10.1.1.1に変換されています
これによりNAPTが動作している事が分かります。

SEILx86_02# tcpdump interface lan1
################################################################
tcpdump: when you want to exit this program, please type Ctrl-C.
################################################################
21:42:18.553503 ARP, Request who-has 10.1.1.10 tell 10.1.1.1, length 28
21:42:18.553713 ARP, Reply 10.1.1.10 is-at 00:0c:29:b5:77:65, length 46
21:42:18.553748 IP 10.1.1.1 > 10.1.1.10: ICMP echo request, id 30474, seq 1, length 64
21:42:18.553934 IP 10.1.1.10 > 10.1.1.1: ICMP echo reply, id 30474, seq 1, length 64
21:42:19.554263 IP 10.1.1.1 > 10.1.1.10: ICMP echo request, id 30474, seq 2, length 64
21:42:19.554454 IP 10.1.1.10 > 10.1.1.1: ICMP echo reply, id 30474, seq 2, length 64
21:42:20.555045 IP 10.1.1.1 > 10.1.1.10: ICMP echo request, id 30474, seq 3, length 64
21:42:20.555211 IP 10.1.1.10 > 10.1.1.1: ICMP echo reply, id 30474, seq 3, length 64

NAT動作状況の確認

SEILではshow status natコマンドでNATの動作状況を確認できます。
以下のように、NAPTで192.168.10.10が10.1.1.1にアドレス変換され、10.1.1.10と通信している事が分かります。

SEILx86_02# show status nat
upnp is currently unavailable

List of active IP mapping:

List of active sessions:
   1:napt  lan1     icmp    192.168.10.10       =        10.1.1.1       <->       10.1.1.10       [00:00:00]
SEILx86_02#

さいごに

NAPTはNAT環境を構築する際に、最も基本となる事が多い設定です。
これをベースに必要な設定を追加する事で、ルータの設定の幅を増やしていくのが良いでしょう。