20051103 (2005/11/03)
Ver. 1.0
2005年11月25日
栗野 俊一
目次
NAT の周辺
NAT の原理
- Private Addressを持つHostと、Global Addressを持つHost間のIP通信を実現するための仕組
- NAT Routerとよばれる、特別なRouterが、Packet中のAddress ( IP Address ), Port番号を、書き換えることによって、Global Network空間( The Internet )でのPrivate Addressを隠す仕組
NAT の種類
NAT を区別する特徴
- 動的( Dynamic )か静的( Static )か
- 静的:書換えの対応関係が、予めきまっている。
- 動的:書換えの対応関係が、必要に応じて付けられる。
- Network層(NAT:Network Address Translation)だけか、Transport層も含む(NAPT :Network Address/Port Translation)か
- Network Addressのみを書換え: IP Addressのみを書き換える。
- Socket対を書換え: IP Addressだけでなく、Transport層のPort番号も同時に書き換える。
- 実装の差(NAPTのみ):
- 送信時、Source Socket対が同じであれば、内部のテーブルを共有する
- Full Cone NAT :対応テーブルは、書換えたSource Socketのみを記録しているだけで、Destinationに関しては、きにしない。
- Restricted Cone NAT : DestinationのIP Addressを記録しており、そのIP Addressからの戻りしか、逆変換をおこなわない。
- Port-Restricted Cone NAT : DestinationのSocket対( IP Address/ Port Number )を記録しており、そのIP Address/ Port Numberからの戻りしか、逆変換をおこなわない。
- Symmetric NAT :送信時、Source Socket対が同じでも、Destinationが異れば、異るtable entryを持つもの。
様々な NAT
- (pure) NAT : IP Addressのみを書き換える
- Static NAT :書換えのAddressの対応表(Table)は、あらかじめきまっており、常に同じ書換えを行う。
- Dynamic NAT :予めpoolされているGlobal Addressから空いているAddressを割当ている。
- IP masquerade : Socket対を書き換える(1)
- 書き換えた結果のGlobal AddressがNAT RouterのIP Addressに固定されている。
- 書換えはDynamicに行われる。
- NAPT(2)(3): Socket対を書き換える
- Static ( Port Forwarding /逆NAT ) :対応関係が固定されている。
- 関係がstaticと固定されているので、外から内へのパケットを書き換えることができる。
- Dymamic :対応関係が自由
NAT の運用上の問題
NATによって、通常の意味でのIP接続と異る運用になる。この結果として、通常の場合とは異る対応が必要になる可能性がある。
- 複数のIP Addressを利用する場合:異るIP Addressをもったパケットを、同じRouterを通して返す必要があるので、Routingを考える必要がある。
- Routingで処理する:特定なNetwork全体をNATの対象として、そのNetworkへのRoutingをアナウンスする。
- Proxy ARPを利用する: NATの対象となるIP AddressへのARP要求があったら、そのARP要求に対して、代理( Proxy )で、応答する。
- Dynamicな対応を行う場合: Private Network上にServerを設置することが困難になる。
- 原則: Dynamic NATでは、Serverは設置できないと考えてよい。
- UDP上のServer : UDP hole punchingを利用する( P2Pとの関係が深い)。
NAT の応用例
- Security : GlobalからPrivateへの通信ができない。
- Private Addressの有効利用( Global Addressの無駄な使用の制限)
- IP Addressの有効利用( IP Address枯渇への直接的な対応)
- IP masqueradeはこの目的に便利
- 逆NAT (Port Forwarding) : staticなNAPTを利用することによって、Private Network内に、Serverを設置できる。
参考 Link