ipnat(5) FreeBSD 一般コマンドマニュアル

ipnat

前のページ 上に戻る 次のページ

ipnat



解説

       ipnat が受け付けるファイルの形式は、以下の文法で記述される
       ものです。

       ipmap :: = mapblock | redir | map .

       map ::= mapit ifname ipmask "->" ipmask [ mapport ] .
       map ::= mapit ifname fromto "->" ipmask [ mapport ] .
       mapblock ::= "map-block" ifname ipmask "->" ipmask [ ports ] .
       redir ::= "rdr" ifname ipmask dport "->" ip [ "," ip ] [ ports ] options .

       dport ::= "port" portnum [ "-" portnum ] .
       ports ::= "ports" numports | "auto" .
       mapit ::= "map" | "bimap" .
       fromto ::= "from" object "to" object .
       ipmask ::= ip "/" bits | ip "/" mask | ip "netmask" mask .
       mapport ::= "portmap" tcpudp portnumber ":" portnumber .
       options ::= [ tcpudp ] [ rr ] .

       object  = addr [ port-comp | port-range ] .
       addr    = "any" | nummask | host-name [ "mask" ipaddr | "mask" hexnumber ] .
       port-comp = "port" compare port-num .
       port-range = "port" port-num range port-num .

       rr ::= "round-robin" .
       tcpudp ::= "tcp" | "udp" | "tcp/udp" .
       portnumber ::= number { numbers } | "auto" .
       ifname ::= 'A' - 'Z' { 'A' - 'Z' } numbers .

       numbers ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' .

       標準的な NAT 機能では、ひとつのルールは map で始まり、その
       後にインタフェースの指定が続きます。そのインタフェースから
       パケットが出て行く際にソースアドレスが書き換えられます。

       書き換えられるパケットの選択は、もとのソースアドレスとの照
       合 のみで行なわれます。IP アドレスの指定にはネットマスクを
       指定する必要があります。

       もとのアドレスと置き換えられるアドレスは、IP番号/ネット マ
       ス クの組から選ばれます。すべて 1 のネットマスクは、ホスト
       名が正しいことを表します。 1 が 31 個からなるネットマス ク
       (255.255.255.254) は、ブロードキャストアドレスとネットワー
       クアドレスを取ったあとでホスト IP 番号を割り当てる余裕がな
       いため、正しくないと見なされます。

       TCP  パケットと UDP パケットの再マップの際には、ソースポー
       ト番号の変更も可能です。TCP, UDP パケットともども、それ ぞ
       れの規則で選択が可能です。これらは、規則のうしろに再マップ
       先のポート番号の範囲を、 port-number:port-number の形式 で
       指定します。

              IP アドレスに基づく静的な変換を設定します。アドレス
              を 絞り込み、目的の範囲に収まるように変換するアルゴ
              リズムに基づくものです。


照合処理

       基本的な NAT 機能とパケットのリダイレクトにおいては、プ ロ
       トコルとともに変更可能性のあるアドレスを用いて、あるパケッ
       トを変更せねばならないかどうかをチェックします。それぞれの
       規則の "->" の左辺は、その規則のパケット照合処理部分です。

       パケットの照合処理は、より複雑な比較が可能なように拡張され
       ました。変換されるアドレス部分においては、 IP アドレスとポ
       ート番号の比較は、ipf で使用可能な式を使用可能です。単純な
       NAT ルールは次のように記述可能です:

       map de0 10.1.0.0/16 -> 201.2.3.4/32

       または

       map de0 from 10.1.0.0/16 to any -> 201.2.3.4/32

       IP  アドレスとポート番号のみ、比較対象にできます。これは、
       すべての NAT ルールで使用可能です。


変換処理

       "->" の右辺は、それ以前の制約条件との照合が既に成功して い
       る場合に、そのパケットに書き込まれるアドレスとポートを指定
       する部分です。リダイレクトの場合 (rdr) が最も単純です。 新
       し い デスティネーションアドレスをその中で指定します。 map
       規則に対しては、デスティネーションアドレスは、新しいアドレ
       スの組 (ソースとデスティネーション) が一意的であると知られ
       ているアドレスになります。パケットが TCP か UDP パケットの
       場合、デスティネーションポートとソースポートもこの等式に含
       めます。アドレスの組が既に存在する場合、IP フィルタは、 ま
       ず portmap で指定した有効範囲内でポート番号を 1 つ増やしま
       す。そうしても一意的なアドレスの組が得られない場合、指定さ
       れ た ネッ トマスクの範囲内でソースアドレスを 1 つ増やしま
       す。一意的なアドレスの組が決して得られない場合、パケットは
       変換されません。map-block では、新規アドレスの組、フリーな
       アドレスの組、一意的なアドレスの組を検索するやりかたがより
       限定されます。ここでは、ポートの有効範囲に加えて、新しいソ
       ースアドレスを何にするかを決定するアルゴリズムを使用 し ま
       す。IP  アドレスは決して変更されませんし、ポート番号も割り
       当てられた範囲を越えるものは変更されません。


カーネルプロキシ

       IP フィルタには、カーネルにロードされるコードの中に組み 込
       まれた単純なプロキシがいくつか付いてきます。これにより、パ
       ケットをユーザプログラムを通させずに 2 番目のチャネルを 開
       けておくことが可能となります。


透過型プロキシ

       これにより、203.1.2.3 と 203.1.2.4 へ交互に接続を 送 り ま
       す。より多くのサーバに負荷を分散したい場合には、次のように
       します:

       rdr le0 203.1.2.3/32 port 80 -> 203.1.2.3,203.1.2.4 port 80 tcp round-robin
       rdr le0 203.1.2.3/32 port 80 -> 203.1.2.5 port 80 tcp round-robin

       この場合、接続は 203.1.2.3 にまず向けられ、次に  203.1.2.4
       に 向けられ、そして 203.1.2.5 に向けられ、最後に 203.1.2.3
       に戻ります。これを実現する際、必要に応じて自動的に、ルール
       が リ ス ト の先頭から取り除かれて最後に追加されます。これ
       は、"ipnat -l" を使用したルール表示には影響せず、内部的 な
       適用順序にのみ影響します。


使用例

       本セクションでは、map コマンドとその変形を扱います。

       ppp0  インタフェース経由で、内部で使用する IP 番号がネット
       ワーク 10 のパケットを、ISP (インターネットサービスプロ バ
       イダ) が提供してくれた 209.1.2.0 (8 ビットサブネット) に変
       更する場合、以下の規則を使います。

       map ppp0 10.0.0.0/8 -> 209.1.2.0/24

       ここで、16,000,000 個以上の IP アドレスを 254 個に絞り込も
       うとすることが問題なのは明らかでしょう。スコープを広げるた
       めに、TCP と UDP についてはポート再マップを使うこともで き
       ます。

       map ppp0 10.0.0.0/8 -> 209.1.2.0/24 portmap tcp/udp 1025:65000

       こ れ で、ネットワーク 10 で利用可能な空間のうち、不足分は
       ``アドレス'' 527,566 個分だけになります。これらの規則を 結
       合させるとすると、以下のような指定が必要となります。

       map ppp0 10.0.0.0/8 -> 209.1.2.0/24 portmap tcp/udp 1025:65000
       map ppp0 10.0.0.0/8 -> 209.1.2.0/24

       こ れ で、TCP/UDP   パケットのすべてはポートマップが行なわ
       れ、IP アドレスのみが変更されるのは ICMP など他のプロト コ
       ルだけとなります。


関連ファイル

       /dev/ipnat
       /etc/services
       /etc/hosts


関連項目

       ipnat(4), hosts(5), ipf(5), services(5), ipf(8), ipnat(8)




ABELNET VPSサービス