ToraNoAna

NAT/NAPT

SEILシリーズは、限られたIP アドレスを有効活用するため、あるいはネットワーク構造を隠してセキュリティを向上させるため、異なるアドレス空間を持つネットワーク間接続が可能となるNAT/NAPT変換機能を提供しています。

NAT/NAPT機能の概要

NAT/NAPTでは、いわゆるグローバルアドレスとプライベートアドレスを関連付け、LAN内プライベートアドレスのホストからインターネットへアクセスしたり、特定のホストのみをインターネットに公開したりすることができます。

SEILシリーズのNAT/NAPTでは、NAT/NAPT処理を行うインタフェースを指定可能です。「LAN側からWAN側へ出る通信」といった拘束は無く、PPPoEやVLANといった仮想インタフェース上でも処理可能ですので、環境に合わせて柔軟な運用が可能です。

NAT/NAPTの設定
NATセッション保持数上限
(動的に生成されるセッション)
2048 [128] [T1] [2FE]
4096 [Plus]
16384 [Turbo],[X1]
32768 [X2]
※上限に達していると新たなセッションを張ることはできません。
NAT:設定数上限 8 (対象のアドレスを範囲指定可能)
静的NAT:設定数上限 8 [128] [T1] [2FE]
32 [Plus] [Turbo]
対象のアドレスを範囲指定可能
NAPT:設定数上限 8 (対象のアドレスを範囲指定可能)
静的NAPT:設定数上限 256 ([128] [T1] [2FE] のver.1系ファームウェアでは 64 )
NAPT Global Address:設定数上限 1
Reflect NAT:設定数上限 8
その他機能 loggingのON/OFF
NATテーブルの有効期間設定
複数のPPTPクライアントに対応(静的NAT)

NAT(Dynamic NAT)

NATでは割り当てられたグローバルアドレスのいくつかを、プライベートネットワークからパブリックネットワーク側へ通信しようとするホストへ先着順で1対1のペアとして変換し、グローバルアドレスと同数のホストを同時にパブリックネットワークと通信可能にします。
使用可能なグローバルアドレスよりパブリックネットワーク側へ通信しようとするホストのほうが多いとき、グローバルアドレスがすべて使用されていると新たな対応付けはできず、セッションが終了すると、また先着順で空いたグローバルアドレスとペアとして変換します。

NAT設定例

設定情報
NATで使用するグローバルアドレス 10.0.0.2 - 10.0.0.6 (5個)
NAT対象とするプライベートアドレス 192.168.0.10 - 192.168.0.19 (10個)
NATを行うインタフェース pppoe0

# nat dynamic add global 10.0.0.2-10.0.0.6 interface pppoe0
# nat dynamic add private 192.168.0.10-192.168.0.19 interface pppoe0

グローバルアドレスの範囲とプライベートアドレスの範囲は分けて設定します。
この設定で、192.168.0.10-192.168.0.19のホストは同時に5台まで、先着順でグローバルアドレスと1対1で対応付けられてパブリックネットワークと通信可能になります。

静的NAT(Static NAT)

静的NATでは、グローバルアドレスとプライベートアドレスを1対1の固定ペアとして変換します。通常のNATと異なり変換されるグローバルアドレスとプライベートアドレスのペアは常に固定であるため、静的NATの対象となるホストは、プライベートアドレスでありながら常にパブリックネットワークから参照可能になります。

静的NAT設定例

静的NAT-1(1:1の場合)
プライベートアドレス 192.168.0.1
グローバルアドレス 10.0.0.1
NATを行うインタフェース pppoe0
静的NAT-2(n:nの場合)
プライベートアドレス 192.168.0.10 - 192.168.0.19 (10個)
グローバルアドレス 10.0.0.100 - 10.0.0.109 (10個)
NATを行うインタフェース pppoe0

 1| # nat static add 192.168.0.1 10.0.0.1 interface pppoe0
 2| # nat static add 192.168.0.10-192.168.0.19 10.0.0.100-10.0.0.109 interface pppoe0

1行目 静的NAT-1の設定です。
プライベートアドレスとグローバルアドレスを1つづつ指定し、固定のペアでNATが行われます。
2行目 静的NAT-2 の設定です。
"-"で繋げてアドレスの範囲を指定することで、複数の連続したアドレスを静的NAT対象とすることができます。
プライベートアドレスの範囲とグローバルアドレスの範囲は同数である必要があり、双方の先頭アドレスから順に固定のペアとなります。
指定範囲の制限はありませんが、同時にセッションを張ることができる最大数は機種ごとのセッション数上限に依存します。

NAPT(IPマスカレード)

NAPT機能を使用すると、1つのグローバルIPアドレスでTCP/UDPのポート単位でセッション管理を行い、プライベートネットワークの複数の端末から同時にパブリックネットワークと通信することができます。接続時にグローバルアドレスを1個払い出すPPPoE接続サービスやダイアルアップIP接続サービスなどで利用されます。NAPTは基本的にTCP/UDP通信に対してのみ有効ですが、SEILシリーズではICMPについても独自にセッション管理を行っており、プライベートネットワーク内の複数のホストからパブリックネットワーク側へのpingコマンド等の利用が可能です。

NAPT設定例

設定情報
プライベートネットワークのアドレス
NAPT対象とするアドレスの範囲)
192.168.0.0 - 192.168.255.255
NAPTを行うインタフェース pppoe0

# nat napt add private 192.168.0.0-192.168.255.255 interface pppoe0

指定したプライベートネットワークのホストからの通信がpppoe0インタフェースを通過しようとするとき、Sourceアドレスはpppoe0インタフェースのアドレスに変換し、Sourceポート番号も書き換えてNATセッションエントリに登録します。
パブリックネットワークからの通信がNATセッションエントリにマッチした場合(戻りパケット等)は、DestinationアドレスとDestinationポート番号を書き換え(元に戻し)、プライベートネットワークへ転送します。

使用するグローバルアドレスの指定

グローバルアドレスを複数使用できる場合は、NAPTで使用するグローバルアドレスを指定することができます。

# nat napt add global 10.0.0.5 interface pppoe0

pppoe0インタフェースでnaptが適用されるとき、グローバルアドレスは10.0.0.5になります。

静的NAPT(Static NAPT)

静的NAPT機能を使用すると、TCP/UDPの特定ポート宛ての通信を、指定したホストへ転送することができます。

プライベートネットワーク内のホストに対して、特定ポートに限りグローバルネットワークからのアクセスを可能にする場合等に使用します。

静的NAPT設定例

設定情報
転送対象のプロトコル
転送対象のポート番号
TCP
80 (http)
転送先のアドレス
転送先のポート番号
192.168.0.8
80 (http)
静的NAPTを行うインタフェース pppoe0

# nat snapt add protocol tcp listen 80 forward 192.168.0.8 80 enable interface pppoe0

pppoe0インタフェースのアドレスに対してTCP 80番ポートへのアクセスがあった場合、192.168.0.8の80番ポートへフォワードします。その際NATセッション情報も追加し、転送先のホストからNATセッション情報にマッチする通信(戻りパケット等)があった場合はアドレスとポートを変換してアクセス元へ送信します。

使用するグローバルアドレスの指定

グローバルアドレスを複数使用できる場合は、NAPTで使用するグローバルアドレスを指定することができます。(NAPTと静的NAPTで共用します)

# nat napt add global 10.0.0.5 interface pppoe0

静的NAPT指定の無いポートへのアクセス

"nat snapt"コマンドでlistenする指定の無いポートに対するアクセスを、すべて特定のアドレスへフォワードすることができます。(静的NATと異なりTCP/UDPでのアクセスのみが対象になります)

# nat snapt add default 192.168.0.254 interface pppoe0


pppoe0インタフェースのアドレスに対するアクセスで、listenする指定の無いポートへのアクセスを192.168.0.245へフォワードします。

Reflect NAT

静的NATや静的NAPTを使用してプライベートネットワーク内のサーバをパブリックネットワークに公開した場合、そのサーバはパブリックネットワークからは関連付けられたグローバルアドレスでアクセスでき、プライベートネットワーク内からはサーバの持つプライベートアドレスでアクセス可能です。しかし、プライベートネットワーク内のホスト(公開サーバと同一セグメントのホスト)からこの公開サーバにグローバルアドレスでアクセスすると、行きのパケットはSEILを通過し(宛先が変換され)サーバへ到達しますが、戻りのパケットはSEILを経由しない経路を通るためアドレスの食い違いが生じてしまい通信が成立しません。
Reflect NAT機能を使用すると、行きのパケットの通過時に、戻りのパケットもSEILを通過するようにNAT変換し、アクセス元ホスト上で送受信したパケットのアドレスの食い違いが起きないようにすることができます。


※ 公開サーバと同一セグメント内のホストから公開サーバのホスト名でアクセスするために、外部公開用に設置されたDNSで名前解決を行う環境等で有効です。
※ SEILがNAT処理する通信が増加するため、Reflect NATを設定しない場合に比べてNATセッション数が増加します。

Reflect NAT設定の追加例

# nat reflect add interface lan0

lan0インタフェースからの通信にNAT/NAPTが適用され、かつlan0インタフェースから出力される場合に、Destinationアドレスの変換に加えSourceアドレスをlan0インタフェースのアドレスに変換します。Reflect NAT設定が無い場合はDestinationアドレスのみ書き換えるため、公開サーバからの戻りパケットは、SEILを経由せず、Sourceアドレスが公開サーバのプライベートアドレスのままになるため、アクセス元ホストでは送受信したパケットのアドレスの食い違いで通信が成立しません。

その他のNAT設定

NATタイマー(Timeout)

NAT/NAPTの対象となる通信により動的に生成されたNATエントリは有効期間が設定され、設定された期間使用されないNATエントリは消去されます。

有効期間設定例

# nat timeout 180

NATセッションの有効期間を180秒とします。

有効期間の例外

NATテーブル溢れを防ぐため、UDP53番ポートの通信(DNS問い合わせ)についてはタイムアウトが15秒になります。また、ICMP Echo replyの通過したICMPセッション及びTCPのFINが双方向に通過したセッションについては短時間で消去されます。

NATセッション情報の参照

動的に生成されたNATセッションの情報を参照するには次のコマンドを使用します。

# show status nat
List of active IP mapping:

List of active sessions:
snapt pppoe0  udp   192.168.0.193:137 = 172.16.0.193:137   <-> 200.21.100.12:1027   [00:06:57]
snapt lan0    udp   202.32.45.9:123   = 202.32.45.9:123    <-> 218.219.153.198:123  [00:14:15]
snapt pppoe0  tcp   202.32.45.9:139   = 202.32.45.10:139   <-> 212.247.77.130:4945  [00:09:53]
napt  lan0    icmp  202.32.45.9       = 202.32.45.9        <-> 202.32.45.12         [00:09:46]
napt  lan0    icmp  202.32.45.9       = 202.32.45.9        <-> 202.32.45.12         [00:00:29]
#

NATセッションのクリア

動的に生成されたNATセッションを消去するには次のコマンドを実行します。

# clear nat-session
clear all active NAT mappings?[y/N] y
7 entries flushed from NAT table
#

実行すると確認メッセージが表示されます。 [y]を入力すると消去されたNATテーブル数が表示されます。

NAT/NAPTの評価(優先)順位

NAT/NAPTが設定されていると、通信内容をNATテーブルに照らし合わせて定められた順にNAT/NAPT設定にマッチするか評価します。

NATとNAPTは、設定によっては変換対象となるIPアドレスが重複することがありますが、次の評価順で処理されます。

静的NAT > 動的NAT > NAPT/静的NAPT

NATログ出力の制御

NAT/NAPT処理時のログ出力を制御(ON/OFF)することができます。

工場出荷時はOFFが設定されておりNATログは出力されませんので、必要に応じて設定を変更してください。

NATのログを出力する

# nat logging on

onを指定すると、それ以降のNAT/NAPT処理についてログが出力されます。

NATのログ出力を停止する

# nat logging off

off を指定するとNAT/NAPT処理を行ってもログは出力されません。

透過Proxy機能

SEILのNAT/NAPT機能では、NAT/NAPT変換によりプロトコルメッセージの書き換えが必要となるプロトコルについて、透過Proxy機能を提供します。

FTP Proxy機能

NAT変換を介したFTP通信を可能とする、FTP透過Proxy機能を提供しています。PORTコマンド、PASVコマンドが使用される場合にIPアドレス部の書き換えを行います。この機能について設定コマンドは必要無く、常に有効です。

PPTP Proxy機能

NAT変換を介したPPTP通信を可能とする、PPTP透過Proxy機能を提供しています。

プライベート側ネットワーク内のPPTP クライアントから、グローバル側ネットワークのPPTP サーバへの接続を可能とします。PPTPセッション1個につき2個のNAT セッションを消費します。また、NAT最大セッション保持数による制限を除き、同時接続可能なPPTPセッション数に上限はありません。
この機能について設定コマンドは必要無く、常に有効です。

SIP Proxy機能

NAT変換を介したSIP通信を可能とする、SIP透過Proxy機能を提供しています。

1個のSIP端末につき、3個のNATセッションを消費します。

工場出荷時のSIP Proxy設定

# show config nat
nat timeout 900
nat logging off
nat upnp off
nat upnp interface lan1
nat napt add private 192.168.0.0-192.168.255.255 interface pppoe0
nat proxy sip add port 5060 protocol tcpudp

nat proxy sip
工場出荷状態で、TCP及びUDP、ポート番号5060の通信についてSIP Proxy機能が働きます。 設定を追加・変更する場合、SIPに利用するトランスポートプロトコルとポート番号の組を4つまで設定できます。

※ SEILをSIP端末より後に起動した場合、もしくは本装置を再起動した場合は、一定時間着信ができません。

NAT連動Proxy ARP機能

NAT/NAPTのグローバルIPアドレスとして設定されたアドレスに対するARPリクエストについて、SEILのMACアドレスを返す(該当アドレス宛てのパケットをSEILへ送信するよう促す)機能を提供しています。

LANインタフェース(ブロードキャストインタフェース)でNATを有効にし、かつ外部からの接続要求を受け付ける場合(静的NAT/静的NAPTでサーバを公開するなど)に使用します。

【参考】ブロードキャストインタフェースでNAT/NAPTを使用する場合

NAT連動Proxy ARP機能を有効にする

# arp reply-nat on
arp reply-nat
"on"を指定すると有効となります。 "off"を指定すると無効となります。無効である場合、Configには表示(保存)されません。

NAT設定の留意事項

パブリックネットワークへのゲートウェイとなるインタフェースが複数の場合

NAT/NAPTは、"nat ~ interface "コマンドで指定されたインタフェースを通過する通信が、変換対象のアドレスであるときに処理されます。パブリックネットワークへのゲートウェイとなるインタフェースが複数ある場合は、それぞれのインタフェースにおいて、プライベートアドレスをグローバルアドレスに変換するようNAT/NAPTを設定する必要があります。

設定例:デフォルト経路をMultiPath設定している場合

  • PPPoE接続を2セッション張り、デフォルト経路をMultiPath設定する
  • PCはNAPTを使用して、pppoe0あるいはpppoe1からパブリックネットワーク側(インターネット等)へアクセスする
  • 公開サーバは静的NATを使用し、パブリックネットワークから10.0.0.3でアクセス可能にする

 1| # route add default pppoe0
 2| # route add default pppoe1
 3| 
 4| # nat napt add private 192.168.0.0-192.168.255.255 interface pppoe0
 5| # nat napt add private 192.168.0.0-192.168.255.255 interface pppoe1
 6| 
 7| # nat static add 192.168.0.80 10.0.0.3 interface pppoe0
 8| # nat static add 192.168.0.80 10.0.0.3 interface pppoe1

1行目
~2行目
デフォルト経路をpppoe0とpppoe1へのMultiPath設定としています。
4行目
~5行目
PCの所属するプライベートネットワークからパブリックネットワークへの通信が、MultiPathによりpppoe0とpppoe1のどちらから送信されてもNAPT対象となるよう、両方のインタフェースでNAPTを設定しています。
7行目
~8行目
公開サーバからパブリックネットワークへの通信が、MultiPathによりpppoe0とpppoe1どちらから送信されてもSourceが10.0.0.3となるよう、両方のインタフェースで静的NATを設定しています。


※パブリックネットワークから公開サーバへのアクセスはpppoe0からの入力となりますが、公開サーバからパブリックネットワークへのアクセスはMultiPathによりpppoe0又はpppoe1いずれかから出力されます。

ブロードキャストインタフェースでNAT/NAPTを使用する場合

Ethernet(LAN,VLANインタフェース等)で構成するネットワークで、SEILでNAT/NAPTを設定してLAN内からのゲートウェイとし、さらにLAN内のホストを静的NAT/静的NAPTによりWAN側へ公開しようとするとき、構成や機器の設定によってはWAN側から公開ホストへのアクセスができない場合があります。
LANインタフェースやVLANインタフェースといったブロードキャストインタフェースでは、同一リンク上のアドレスへパケットを送信する際にARPによる近隣探索を行います。
SEILは通常、インタフェースに付加されているアドレス以外に対するARPリクエストには応答しません。このため、ブロードキャストインタフェース側ネットワークの、インタフェースに付加されていないアドレス(空きアドレス)をNATやNAPTのグローバルアドレスとして使用すると、NAT/NAPTのグローバルアドレスに対して同一リンク上の機器からSEILへの送信が行われない構成となってしまう場合があります。(ARPリクエストに対してリプライが無いため送信されない)

このような場合には次のような回避手段が考えられます。

  • SEILのNAT連動Proxy ARP機能を使用する 【参考】NAT連動Proxy ARP機能
  • Proxy ARP装置を設置する
  • 該当アドレスについてのGatewayをSEILへ向けるよう同一リンク上の機器で経路設定を行う
  • SEILのインタフェースに該当アドレスをエイリアスとして設定する

UPnP機能

SEILは一部の機種でUPnP(Universal Plug and Play)に対応しており、UPnPに対応したアプリケーションや機器の利用が可能です。


対応機種: [2FE], [Plus], [Turbo], [X1], [X2]

準拠する規格 Universal Plug and Play Architecture 1.0
InternetGatewayDevice 1.0

UPnP機能概要

Windows Messeger等、SIP(Session Initiation Protocol)を利用するアプリケーションや機器は、自身に割り当てられたIPアドレスをパケットのデータグラム部分に埋め込んで通信します。これは、通信相手同士で双方ともグローバルアドレスを持つ場合には問題となりませんが、端末がプライベートアドレスを持ち、接続相手との通信にNAT/NAPTを経由する場合に問題となる場合があります。送信されたパケットのヘッダに書かれている送信元アドレスはNAT/NAPTにより書き換えられますが、接続相手はデータグラム部分に埋め込まれたプライベートアドレスを送信元として認識するため、正しい送信元と通信することができない場合があります。
UPnPに対応するアプリケーションや機器は、ネットワーク機能を備えたデバイスを相互に検索したり情報提供を行い、適切な通信相手と接続可能になるよう自動的に制御されます。SEILのUPnP機能では、PCやVoIPアダプタ等の端末からネットワーク経由でSEILを検出し、自動的に静的NAPTエントリの生成や端末へのグローバルアドレスの通知等を行い、プライベートネットワークからSIPを利用する通信等を可能にします。

確認済みの機器 / アプリケーション
  • NTT東日本 VoIPアダプタ
  • Windows Messenger / MSN Messenger

※MSN Messenger 6.2 では、ビデオチャット及び音声チャット使用時に正しく動作しない可能性があります。

複数端末の同時接続

複数の端末から同時に接続する場合、PCアプリケーションの場合には端末数としての制限はありませんが、 UPnP として生成可能な静的SNAPTエントリは最大64個となっています。 これを超えるエントリを作成しようとした場合、エントリが作成されてから1時間以上経過したもののうち、最も古いエントリが削除されます。 1時間以上経過したものが1個も無い場合は、新たなエントリを作成することはできません。

VoIP アダプタの場合は、転送元/転送先のポートが固定となっているため、複数の VoIP アダプタを接続した場合には最後に接続した1台のみ使用できることになります。
複数の VoIP アダプタを同時に使用したい場合には、SIP Proxy 機能を用いることで実現可能です。

自動生成された静的NAPTエントリ

UPnP機能の動作によりSEILが生成した静的NAPTエントリは、SEILとしての有効期間は定めず 基本的に維持し続けます。

エントリが削除される条件、またはエントリを削除する手段としては、以下の例が挙げられます。

  • コントロールポイント(Windowsなど)が明示的にエントリの削除を要求してきた場合、 要求に従い該当のエントリを削除します
  • エントリ生成時に有効期間を指定されていた場合、有効期間に達すると該当のエントリを削除します
  • SEILのコマンドラインで、"nat upnp on" を実行した場合、UPnP機能が再起動するためUPnP機能により 生成された、すべてのエントリが削除されます
  • SEILが再起動した場合、エントリが全く無い状態で起動します
  • 最大エントリ数(64個)に達した状態でリクエストによりエントリを生成しようとすると、生成から1時間以上経過したものがある場合に、そのうち最も古いエントリを削除します

セキュリティ上の留意点

UPnP機能はLAN側の端末の要求により、SEILの静的NAPTエントリを自動的に生成して WAN側からのアクセスをLAN側へ中継可能にします。

WAN側(lan1, pppoe0-3)からのUPnPによる新規の接続要求は受け付け無いため、リモートからの不正アクセスをLAN側の端末へ中継することはありませんが、LAN側に接続されているクライアントマシンのウィルス感染等には充分に注意した上で運用してください。

UPnP機能の設定

UPnP機能は、クライアント端末が行うSIP等を用いた通信が、SEILを通過する際にNAT/NAPT対象となる場合に、NAT/NAPT処理を行うインタフェースで有効にします。

※UPnP機能は1つのインタフェースでのみ使用可能です。

工場出荷状態のUPnP (NAT) 設定

 1|# show config nat
 2| nat timeout 900
 3| nat logging off
 4|nat upnp off
 5|nat upnp interface lan1
 6| nat napt add private 192.168.0.0-192.168.255.255 interface pppoe0
 7| nat proxy sip add port 5060 protocol tcpudp
4行目
~5行目
UPnP機能自体は無効になっています。
また、UPnP機能を使用するインタフェースはlan1となっています。
PPPoE接続サービスでNAT越しにSIPアプリケーション等を使用するためにUPnP機能を有効にするには、次のように設定します。

UPnP機能の有効化

 1| nat upnp interface pppoe0
 2| nat upnp on
1行目 UPnP機能を使用するインタフェースをpppoe0に変更します。
(既存のインタフェース指定を上書きします)
2行目 UPnP機能を有効にします。
"off"を指定するとUPnP機能は無効になります。

UPnP機能が有効になると、UPnP対応アプリケーション/機器と相互に検知/制御し、pppoe0インタフェースでNAT越しのSIP通信が可能となるよう静的NAPTエントリを自動生成します。

ステータスの確認

UPnPによる静的NAPTエントリがある場合のステータス


# show status nat
UPNP STAT:
    Total 3 entries
    External     Internal              LifeTime   CreateTime         Flag
    UDP 5060  -> 10.1.2.50:5060        Infinite   11/09/04 17:15:12  On
    UDP 5090  -> 10.1.2.50:5090        Infinite   11/09/04 17:15:14  On
    UDP 5091  -> 10.1.2.50:5091        Infinite   11/09/04 17:15:17  On
List of active IP mapping:

List of active sessions:
napt  lan0     udp     10.1.2.2:1900  =       10.1.2.2:1900  <->       10.1.2.50:1358  [00:05:16]
napt  lan0     udp     10.1.2.2:1900  =       10.1.2.2:1900  <-> 239.255.255.250:1900  [00:14:10]
napt  lan0     udp     10.1.2.2:65534 =       10.1.2.2:65534 <->        10.1.2.1:514   [00:14:59]
napt  pppoe0   udp     10.1.2.1:65534 = 172.16.109.140:65534 <->    172.24.4.139:53    [00:00:08]
snapt pppoe0   tcp     10.1.2.1:22    = 172.16.109.140:22    <->   172.20.30.196:15407 [00:15:00]
napt  pppoe0   udp     10.1.2.1:123   = 172.16.109.140:123   <->   172.22.160.27:123   [00:07:27]
napt  lan0     tcp     10.1.2.2:23    =       10.1.2.2:23    <->        10.1.2.1:65010 [00:15:00]
snapt pppoe0   tcp     10.1.2.1:80    = 172.16.109.140:80    <->   172.18.208.67:54752 [00:00:01]
snapt pppoe0   tcp     10.1.2.1:80    = 172.16.109.140:80    <->   172.18.208.67:54617 [00:00:01]

接続するアプリケーションや機器により、それぞれが使用するポート・ポート数は異なります。

Page Top