Reviewed by: Japanese Online Manual Project <man-jp@jp.FreeBSD.ORG> Submitted by: Kazuo Horikawa <k-horik@yk.rim.or.jp>
462 lines
12 KiB
Groff
462 lines
12 KiB
Groff
.\" manual page [] for natd 1.4
|
|
.\" %Id: natd.8,v 1.16.2.2 1999/05/04 12:12:01 kris Exp %
|
|
.\" jpman %Id%
|
|
.Dd 15 April 1997
|
|
.Os FreeBSD
|
|
.Dt NATD 8
|
|
.Sh 名称
|
|
.Nm natd
|
|
.Nd
|
|
ネットワークアドレス変換デーモン
|
|
.Sh 書式
|
|
.Nm
|
|
.Op Fl ldsmvu
|
|
.Op Fl dynamic
|
|
.Op Fl i Ar inport
|
|
.Op Fl o Ar outport
|
|
.Op Fl p Ar port
|
|
.Op Fl a Ar address
|
|
.Op Fl n Ar interface
|
|
.Op Fl f Ar configfile
|
|
|
|
.Nm
|
|
.Op Fl log
|
|
.Op Fl deny_incoming
|
|
.Op Fl log_denied
|
|
.Op Fl use_sockets
|
|
.Op Fl same_ports
|
|
.Op Fl verbose
|
|
.Op Fl log_facility Ar facility_name
|
|
.Op Fl unregistered_only
|
|
.Op Fl dynamic
|
|
.Op Fl inport Ar inport
|
|
.Op Fl outport Ar outport
|
|
.Op Fl port Ar port
|
|
.Op Fl alias_address Ar address
|
|
.Op Fl interface Ar interface
|
|
.Op Fl config Ar configfile
|
|
.Op Fl redirect_port Ar linkspec
|
|
.Op Fl redirect_address Ar localIP publicIP
|
|
.Op Fl reverse
|
|
.Op Fl proxy_only
|
|
.Op Fl proxy_rule Ar proxyspec
|
|
.Op Fl pptpalias Ar localIP
|
|
|
|
.Sh 解説
|
|
このプログラムは、FreeBSD における
|
|
.Xr divert 4
|
|
ソケットと共に用いることによって、ネットワークアドレスの変換を
|
|
行います。
|
|
このプログラムは、複数の NIC とともに使用することを意図しています -
|
|
PPP リンク上で NAT を行いたい場合、
|
|
.Xr ppp 8
|
|
の -alias スイッチを使用してください。
|
|
|
|
.Pp
|
|
.Nm natd
|
|
は通常、デーモンとしてバックグラウンドで実行します。
|
|
.Nm
|
|
はマシンに入ってくるパケット、またはマシンから出て行くパケットを
|
|
生 (raw) のまま扱い、場合により IP パケットストリームに
|
|
再び送り出す前に手を加えます。
|
|
|
|
.Pp
|
|
.Nm natd
|
|
は他のホストへ向かうすべてのパケットについて、発信元 IP アドレスを
|
|
現在のマシンのものにする、という変換を行います。
|
|
このように変換された各パケットについて、変換内容を記録するために
|
|
内部テーブルエントリが作成されます。
|
|
発信元ポート番号も、パケットに適用したテーブルエントリを示すように
|
|
変更されます。
|
|
現在のホストの、対象となる IP アドレスを使ったパケットが受信されると、
|
|
この内部テーブルがチェックされます。
|
|
エントリが見つかると、パケットに正しい対象 IP アドレスとポート番号を
|
|
入れるのに利用されます。
|
|
|
|
.Pp
|
|
以下のコマンドラインオプションが利用できます。
|
|
.Bl -tag -width Fl
|
|
|
|
.It Fl log | l
|
|
様々な alias の統計や情報をファイル
|
|
.Pa /var/log/alias.log
|
|
に記録します。このファイルは natd が起動されるたびに切りつめられます。
|
|
|
|
.It Fl deny_incoming | d
|
|
現在の IP アドレスへ向かうパケットのうち、内部変換テーブルに
|
|
エントリの無いものを拒否します。
|
|
|
|
.It Fl log_denied
|
|
拒否した入力パケットを syslog を介してログします
|
|
(log_facility を参照してください)。
|
|
|
|
.It Fl log_facility Ar facility_name
|
|
syslog を介して情報をログするときに、指定したログファシリティを使用します。
|
|
ファシリティ名は
|
|
.Xr syslog.conf 5
|
|
にある通りです。
|
|
|
|
.It Fl use_sockets | s
|
|
FTP data コネクションや IRC DCC send コネクションを確立するのに
|
|
.Xr socket 2
|
|
を割り当てます。このオプションはよりシステムリソースを消費しますが、
|
|
ポート番号が衝突する場合でもコネクションが成功することを保証します。
|
|
|
|
.It Fl same_ports | m
|
|
出て行くパケットを変換する時に、できるだけポート番号を同じまま
|
|
保つようにします。このオプションにより、RPC のようなプロトコルが
|
|
うまく働く可能性があがります。ポート番号を維持することができない時には、
|
|
暗黙のうちに通常と同じ方法で変換されます。
|
|
|
|
.It Fl verbose | v
|
|
起動時に
|
|
.Xr fork 2
|
|
や
|
|
.Xr daemon 3
|
|
を呼び出しません。よって、制御端末から切り離されずに、標準出力に
|
|
すべてのパケット変換を表示します。このオプションはデバッグの目的に
|
|
のみ用いるべきです。
|
|
|
|
.It Fl unregistered_only | u
|
|
登録されていない発信元アドレスを伴う出て行くパケットのみを変換します。
|
|
rfc 1918 によれば、登録されていない発信元アドレスは 10.0.0.0/8 と
|
|
172.16.0.0/12 と 192.168.0.0/16 となっています。
|
|
|
|
.It Fl redirect_port Ar proto targetIP:targetPORT [aliasIP:]aliasPORT [remoteIP[:remotePORT]]
|
|
指定されたポートに入ってくるコネクションを別のホストとポートに
|
|
リダイレクトします。
|
|
proto は tcp または udp、
|
|
targetPORT は希望する対象ポート番号、
|
|
aliasPORT は (クライアントが) 要求するポート番号、
|
|
aliasIP は alias を行うアドレスです。
|
|
remoteIP と remotePORT は、必要な場合により正確なコネクションを
|
|
指定するのに利用できます。
|
|
例えば、
|
|
|
|
.Ar tcp inside1:telnet 6666
|
|
|
|
という引数は、このマシンのポート 6666 に向けられた tcp パケットが
|
|
マシン inside1 の telnet ポートに送られることを示しています。
|
|
|
|
.It Fl redirect_address Ar localIP publicIP
|
|
公式な IP アドレスへのパケットの流れを、ローカルネットワーク内の
|
|
マシンにリダイレクトします。この機能は "静的 NAT (static NAT)" と
|
|
呼ばれています。
|
|
静的 NAT はあなたの ISP が IP アドレスの小さなブロックをあなたに
|
|
割り当てた時に、単一のアドレスとして用いるのにも利用できます:
|
|
|
|
redirect_address 10.0.0.8 0.0.0.0
|
|
|
|
上記のコマンドは入ってくすべてのパケットをマシン 10.0.0.8 に
|
|
リダイレクトします。
|
|
|
|
下記のように、いくつかのアドレス alias が同一の公式アドレスを
|
|
示すように指定すると、
|
|
|
|
redirect_address 192.168.0.2 public_addr
|
|
redirect_address 192.168.0.3 public_addr
|
|
redirect_address 192.168.0.4 public_addr
|
|
|
|
入ってくるパケットの流れは最後に変換されたローカルアドレス
|
|
(192.168.0.4) に向けられますが、最初の二つのアドレスの出て行く
|
|
パケットの流れは指定された公式アドレスへの alias のままになります。
|
|
|
|
.It Fl dynamic
|
|
.Fl n
|
|
オプションや
|
|
.Fl interface
|
|
オプションが用いられると、
|
|
.Nm
|
|
は
|
|
指定された
|
|
.Ar interface
|
|
へルーティングする変換ソケットを監視します。
|
|
.\" (訳注) kuriyama@opt.phys.waseda.ac.jp (Nov 29 1997)
|
|
.\" 上の訳はどうも意味が通らない。原文は以下の通り。誰か直して。
|
|
.\" .Nm
|
|
.\" will monitor the routing socket for alterations to the
|
|
.\" .Ar interface
|
|
.\" passed.
|
|
.\" (訳注2) kuriyama@opt.phys.waseda.ac.jp (Jan 4 1998)
|
|
.\" ちょっと直してみたけどまだ不満。
|
|
インタフェースの IP アドレスが変化すると、
|
|
.Nm
|
|
は alias アドレスを動的に変更します。
|
|
|
|
.It Fl i | inport Ar inport
|
|
すべてのパケットをマシンに入ってくるものとして扱い、
|
|
.Ar inport
|
|
から読み込み、
|
|
.Ar inport
|
|
へ書き出します。
|
|
|
|
.It Fl o | outport Ar outport
|
|
すべてのパケットをマシンから出て行くものとして扱い、
|
|
.Ar outport
|
|
から読み込み、
|
|
.Ar outport
|
|
へ書き出します。
|
|
|
|
.It Fl p | port Ar port
|
|
.Xr divert 4
|
|
によって指定されたルールを用いてパケットを識別し、入ってくるパケットを
|
|
.Ar port
|
|
から読み、出て行くパケットを
|
|
.Ar port
|
|
へ書き出します。
|
|
.Ar port
|
|
が数字でない場合、関数
|
|
.Xr getservbyname 3
|
|
を用いて
|
|
.Pa /etc/services
|
|
データベースが検索されます。
|
|
このフラグが指定されない時には、デフォルトとして natd という名前の
|
|
divert ポートが用いられます。
|
|
.Pa /etc/services
|
|
データベースのエントリの例としては以下のようになります:
|
|
|
|
natd 8668/divert # Network Address Translation socket
|
|
|
|
より詳しい説明は、
|
|
.Xr services 5
|
|
を参照してください。
|
|
|
|
.It Fl a | alias_address Ar address
|
|
alias アドレスとして
|
|
.Ar address
|
|
を用います。このオプションが指定されない場合は、
|
|
.Fl n
|
|
オプションか
|
|
.Fl interface
|
|
オプションが指定されなければなりません。
|
|
指定されたアドレスは、
|
|
公開されたネットワークインタフェースに割当てられたアドレスである
|
|
必要があります。
|
|
.Pp
|
|
このアドレスのインタフェースを通って出る全データのソースアドレスは
|
|
.Ar address
|
|
に書換えられます。
|
|
外部からこのインタフェースに到着する全データは、
|
|
既に alias された外向け接続にマッチするかどうかチェックされます。
|
|
マッチする場合、パケットはそれぞれ変換されます。
|
|
マッチしない場合、
|
|
.Fl redirect_port
|
|
と
|
|
.Fl redirect_address
|
|
の割り当てをチェックしそれぞれの動作を行います。
|
|
他の動作が行えない場合かつ
|
|
.Fl deny_incoming
|
|
が指定されていない場合、
|
|
パケットに指定された通りに
|
|
パケットはローカルのマシンのポートに配送されます。
|
|
.It Fl n | interface Ar interface
|
|
alias アドレスを決めるのに、
|
|
.Ar interface
|
|
を用います。
|
|
.Ar interface
|
|
に関連づけられた IP アドレスが変化する可能性がある場合には、
|
|
.Fl dynamic
|
|
フラグも指定されるべきです。
|
|
.Pp
|
|
指定された
|
|
.Ar interface
|
|
は公開されたネットワークインタフェースである必要があります。
|
|
|
|
.It Fl f | config Ar configfile
|
|
.Ar configfile
|
|
から設定を読み込みます。
|
|
.Ar configfile
|
|
はオプションのリストを含み、上記のコマンドラインフラグの長い表記と
|
|
同じ物が 1 行ずつ入ります。例えば、
|
|
|
|
alias_address 158.152.17.1
|
|
|
|
という行は alias アドレスに 158.152.17.1 を指定します。
|
|
設定ファイル内では、引数を持たないオプションは
|
|
.Ar yes
|
|
か
|
|
.Ar no
|
|
を伴って指定されます。例えば、
|
|
|
|
log yes
|
|
|
|
は
|
|
.Fl log
|
|
と同じ意味になります。空行と '#' で始まる行は無視されます。
|
|
|
|
.It Fl reverse
|
|
natd の逆操作です。
|
|
出力トラフィックがローカルマシンにリダイレクトされ、
|
|
natd が入力インタフェースで走行している (通常は出力インタフェースで走行します)
|
|
といった、透過プロキシを実行している状況で有用な場合があります。
|
|
|
|
.It Fl proxy_only
|
|
natd が透過プロキシのみを実行するよう強制します。
|
|
通常のアドレス変換は実行されません。
|
|
|
|
.It Fl proxy_rule Ar [type encode_ip_hdr|encode_tcp_stream] port xxxx server a.b.c.d:yyyy
|
|
透過プロキシを有効にします。
|
|
指定したポートのパケットでこのホストから他のホストへ向かうものは、
|
|
指定したサーバのポートへリダイレクトされます。
|
|
オプションとして、元の宛先アドレスがパケットにエンコードされます。
|
|
.Dq encode_ip_hdr
|
|
は、この情報を IP オプションフィールドに置きます。
|
|
.Dq encode_tcp_stream
|
|
は、このデータを TCP ストリームの先頭に挿入します。
|
|
|
|
.It Fl pptpalias Ar localIP
|
|
PPTP パケットが指定した localIP アドレスに行くことを許可します。
|
|
PPTP は、VPN または安全な IP トンネル技術であり、
|
|
最初に Microsoft が開発しました。
|
|
暗号化したトラフィック用に、
|
|
GRE (47) と呼ばれる古い IP カプセル化プロトコルを使用します。
|
|
この natd オプションは、
|
|
このプロトコルのすべてのトラフィックを単一の指定した IP アドレスに変換します。
|
|
これにより、
|
|
単一のクライアントまたは単一のサーバに対するサービスを natd が許可します。
|
|
サーバを設定する場合、
|
|
PPTP 設定の TCP トラフィックを許すことを忘れないでください。
|
|
ファイアウォールリストが有効ならば、
|
|
クライアントまたはサーバのために GRE (protocol 47) を許可する必要があります。
|
|
|
|
.El
|
|
|
|
.Sh NATD の実行
|
|
.Nm natd
|
|
を走らせようとする前には以下の手順が必要となります:
|
|
|
|
.Bl -enum
|
|
.It
|
|
バージョン 2.2 かそれ以上の FreeBSD を手に入れる。これより前の
|
|
バージョンは
|
|
.Xr divert 4
|
|
ソケットをサポートしていません。
|
|
|
|
.It
|
|
自分のカーネルを以下のオプションを付けて構築します:
|
|
|
|
options IPFIREWALL
|
|
options IPDIVERT
|
|
|
|
自分のカーネルを構築する方法については、ハンドブックに詳しい説明が
|
|
あるのでそちらを参照してください。
|
|
|
|
.It
|
|
あなたのマシンがゲートウェイとして働くようにします。これは
|
|
.Pa /etc/rc.conf
|
|
に
|
|
|
|
gateway_enable=YES
|
|
|
|
と指定するか、
|
|
|
|
sysctl -w net.inet.ip.forwarding=1
|
|
|
|
というコマンドを用いることで機能するようになります。
|
|
|
|
.It
|
|
.Fl n
|
|
フラグや
|
|
.Fl interface
|
|
フラグを使いたい場合は、そのインタフェースがすでに設定済みとなるように
|
|
します。例えば、
|
|
.Ar interface
|
|
として tun0 を指定しようとし、そのインタフェースで
|
|
.Xr ppp 8
|
|
を使っている場合には、
|
|
.Nm natd
|
|
を起動する前に
|
|
.Nm ppp
|
|
を起動するようにしなければなりません。
|
|
|
|
.It
|
|
.Pa /etc/services
|
|
にエントリ:
|
|
|
|
natd 8668/divert # Network Address Translation socket
|
|
|
|
を作成します。これは
|
|
.Fl p
|
|
フラグや
|
|
.Fl port
|
|
フラグのデフォルトの値となります。
|
|
|
|
.El
|
|
.Pp
|
|
.Nm
|
|
の実行は至って簡単です。
|
|
|
|
natd -interface ed0
|
|
|
|
という行でほとんどの場合充分です (正しいインタフェース名に置き換えて
|
|
ください)。
|
|
.Nm
|
|
が起動されたら、パケットの流れの方向が natd の方に変わる
|
|
(divert される) ようにしなければなりません:
|
|
|
|
.Bl -enum
|
|
.It
|
|
.Pa /etc/rc.firewall
|
|
スクリプトをうまく調整する必要があります。防火壁 (firewall) に
|
|
興味が無ければ、以下のようにすれば良いでしょう:
|
|
|
|
/sbin/ipfw -f flush
|
|
/sbin/ipfw add divert natd all from any to any via ed0
|
|
/sbin/ipfw add pass all from any to any
|
|
|
|
2 番目の行はあなたのインタフェースに依ります (ed0 を適切に
|
|
変更してください)。
|
|
また、前項のように
|
|
.Pa /etc/services
|
|
に natd のエントリが入るように更新されていると仮定します。
|
|
本物の防火壁ルールを指定する場合、スクリプトの先頭で上記の 2 行目を
|
|
指定すると良いでしょう。
|
|
そうすることによって、防火壁により排除されてしまう前に、
|
|
.Nm
|
|
がすべてのパケットを見ることができるようになります。
|
|
すべての divert ルールを除き、
|
|
.Nm
|
|
により変換された各パケットには再び防火壁のルールが適用されます。
|
|
|
|
.It
|
|
.Pa /etc/rc.conf
|
|
で
|
|
|
|
firewall_enable=YES
|
|
|
|
と設定し、防火壁を作動させます。これはシステムの起動時のスクリプトに
|
|
.Pa /etc/rc.firewall
|
|
スクリプトを実行するように伝えます。
|
|
今すぐ再起動したくない場合には、コンソールから手で実行してください。
|
|
バックグラウンドで実行させるのでない限り、これは決して仮想セッションから
|
|
行ってはいけません。もし実行させてしまうと、flush が行われた後に
|
|
あなたは締め出されてしまい、すべてのアクセスを永久に遮断するために
|
|
この地点で
|
|
.Pa /etc/rc.firewall
|
|
の実行は止まってしまいます。スクリプトをバックグラウンドで実行すれば、
|
|
この災害を避けることができます。
|
|
|
|
.El
|
|
|
|
.Sh 関連項目
|
|
.Xr getservbyname 2 ,
|
|
.Xr socket 2 ,
|
|
.Xr divert 4 ,
|
|
.Xr services 5 ,
|
|
.Xr ipfw 8
|
|
|
|
.Sh 作者
|
|
このプログラムは、多くの人々の細切れの努力の結果です:
|
|
|
|
.An Archie Cobbs Aq archie@whistle.com
|
|
(divert ソケット)
|
|
.An Charles Mott Aq cmott@srv.net
|
|
(パケットエイリアス)
|
|
.An Eivind Eklund Aq perhaps@yes.no
|
|
(IRC サポートとその他の追加)
|
|
.An Ari Suutari Aq suutari@iki.fi
|
|
(natd)
|
|
.An Dru Nelson Aq dnelson@redwoodsoft.com
|
|
(PPTP サポート)
|
|
.An Brian Somers Aq brian@awfulhak.org
|
|
(まとめ役)
|