総合手引 | セクション 8 | English | オプション |
(PPP リンク上で NAT が必要な場合、ほとんどの
natd
機能を提供し、同じ
libalias(3)
ライブラリを使用する、
ppp(8)
の
natd ユーティリティは通常、デーモンとしてバックグラウンドで実行します。 natd はマシンに入ってくるパケット、またはマシンから出て行くパケットを 生 (raw) のまま扱い、場合により IP パケットストリームに 再び送り出す前に手を加えます。
natd は他のホストへ向かうすべてのパケットについて、発信元 IP アドレスを 現在のマシンのものにする、という変換を行います。 このように変換された各パケットについて、変換内容を記録するために 内部テーブルエントリが作成されます。 発信元ポート番号も、パケットに適用したテーブルエントリを示すように 変更されます。 現在のホストの、対象となる IP アドレスを使ったパケットが受信されると、 この内部テーブルがチェックされます。 エントリが見つかると、パケットに正しい対象 IP アドレスとポート番号を 入れるのに利用されます。
以下のコマンドラインオプションが利用できます。
| |
様々なエイリアスの統計や情報をファイル /var/log/alias.log に記録します。このファイルは natd が起動されるたびに切りつめられます。 | |
| |
入力パケットのうち、内部変換テーブルに
エントリの無いものを渡しません。
本オプションを使用しないと、このようなパケットは下記の
| |
| |
拒否した入力パケットを
syslog(3)
を介してログします (
| |
| |
syslog(3) を介して情報をログするときに、指定したログファシリティを使用します。 引数 facility_name は syslog.conf(5) に記述されているキーワードのうちのひとつです。 | |
| |
FTP data コネクションや IRC DCC send コネクションを確立するのに socket(2) を割り当てます。このオプションはよりシステムリソースを消費しますが、 ポート番号が衝突する場合でもコネクションが成功することを保証します。 | |
| |
出て行くパケットを変換する時に、できるだけポート番号を同じまま 保つようにします。このオプションにより、RPC のようなプロトコルが うまく働く可能性があがります。ポート番号を維持することができない時には、 暗黙のうちに通常と同じ方法で変換されます。 | |
| |
起動時に daemon(3) を呼び出しません。よって、制御端末から切り離されずに、標準出力に すべてのパケット変換を表示します。このオプションはデバッグの目的に のみ用いるべきです。 | |
| |
登録されていない 発信元アドレスを伴う出て行くパケットのみを変換します。 RFC 1918 によれば、登録されていない発信元アドレスは 10.0.0.0/8 と 172.16.0.0/12 と 192.168.0.0/16 となっています。 | |
| |
targetIP:
targetPORT[-targetPORT]
[aliasIP:]
aliasPORT[-aliasPORT]
[remoteIP[:
remotePORT[-remotePORT]
]]
指定されたポートに入ってくるコネクションを別のホストとポートに
リダイレクトします。
引数
proto
には
tcp
または
udp
を指定します。
targetIP
は転送先の IP アドレス、
targetPORT
は同じく転送先ポート番号 (範囲指定可能)、
aliasPORT
は接続を受け付けるポート番号 (範囲指定可能)、
aliasIP
は同じく接続を受け付けるアドレスです。
必要に応じて
remoteIP
と
remotePORT
を指定し、接続元を限定することができます。
remotePORT
の指定を省略した場合、全ポート番号が指定されたものとされます。
引数 targetIP , aliasIP, remoteIP は、IP アドレスまたはホスト名で与えられます。 targetPORT , aliasPORT, remotePORT の範囲は、番号は異なっていても構いませんが、大きさは同じである必要があります。 targetPORT , aliasPORT, remotePORT が単一の値 (範囲ではない) を指定する場合、 services(5) データベース中で検索されるサービス名で指定可能です。 例えば、
tcp inside1:telnet 6666
という引数は、このマシンのポート 6666 に向けられた tcp パケットが マシン inside1 の telnet ポートに送られることを示しています。
tcp inside2:2300-2399 3300-3399
は、 ポート 3300-3399 に向けられた入力コネクションを ホスト inside2 のポート 2300-2399 へリダイレクトします。 マッピングは、ポート 3300 は 2300 に 3301 は 2301 にというように 1対1で行われます。 | |
| |
publicIP [remoteIP]
]
publicIP
に向けられたプロトコル
proto
(
protocols(5)
を参照)
の入力 IP パケットを、
localIP
アドレスへリダイレクトし、その逆も行います。
publicIP が指定されないと、デフォルトのエイリアスアドレスが使用されます。 remoteIP が指定されると、 remoteIP から/へ向けて到着したパケットのみがルールにマッチします。 | |
| |
公式な IP アドレスへのパケットの流れを、ローカルネットワーク内の
マシンにリダイレクトします。この機能は
静的 NAT (static NAT)
と
呼ばれています。
静的 NAT はあなたの ISP が IP アドレスの小さなブロックをあなたに
割り当てた時に、単一のアドレスとして用いるのにも利用できます:
redirect_address 10.0.0.8 0.0.0.0 上記のコマンドは入ってくすべてのパケットをマシン 10.0.0.8 に リダイレクトします。 下記のように、いくつかのアドレスエイリアスが同一の公式アドレスを 示すように指定すると、
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) に向けられますが、最初の二つのアドレスへの出力 パケットの流れは、指定された public_addr からのエイリアスのままになります。 | |
| |
targetIP: targetPORT[, targetIP: targetPORT[, ...amp; ]] [aliasIP:] aliasPORT [remoteIP [:remotePORT] ] | |
| |
localIP[,
localIP[,
...amp;
]]
publicIP
書式
tcp www1:http,www2:http,www3:http www:http
は、ホスト www への入力 HTTP 要求を、 www1, www2, www3 のいずれかへ、透過的にリダイレクトします。 ここで、ホストの選択は、ネットの負荷にかかわらず、 単純にラウンドロビンで行われます。 | |
| |
| |
| |
すべてのパケットを "入力" として扱い、 divert(4) ポート port から読み込み port へ書き出します。 | |
| |
すべてのパケットを "出力" として扱い、 divert(4) ポート port から読み込み、 port へ書き出します。 | |
| |
divert(4) によって指定されたルールを用いてパケットを識別し、 "入力" パケットを divert(4) ポート port から読み、 "出力" パケットを port へ書き出します。 port が数字でない場合、 データベースが検索されます。 このフラグが指定されない時には、デフォルトとして natd という名前の divert ポートが用いられます。 | |
| |
エイリアスアドレスとして
address
を用います。
出力される
全データのソースアドレスは
address
に書換えられます。
到着する
全データは、
既にエイリアスされた外向け接続にマッチするかどうかチェックされます。
マッチする場合、パケットはそれぞれ変換されます。
マッチしない場合、
| |
| |
対象アドレスを設定します。
既存のリンクとは関連付けられていない入力パケットがホストマシンに到着した時、
そのパケットは指定された
address
へ送られます。
対象アドレスは
255.255.255.255
に設定可能です。
この場合、すべての新規入力パケットは、
このオプションを使用しない場合、または引数 0.0.0.0 で呼ばれた場合、 すべての新規入力パケットはパケット中で指定されるアドレスへ行きます。 これにより、パケットの経路が可能な場合には、 外部のマシンが内部のマシンと直接通信可能になります。 | |
| |
エイリアスアドレスを決めるのに、
interface
を用います。
interface
に関連づけられた IP アドレスが変化する可能性がある場合には、
指定された interface は、通常、 "公開された" (または "外部" の) ネットワークインタフェースです。 | |
| |
file
から設定を読み込みます。
file
はオプションのリストを含み、上記のコマンドラインフラグの長い表記と
同じ物が 1 行ずつ入ります。例えば、
alias_address 158.152.17.1
という行はエイリアスアドレスに 158.152.17.1 を指定します。 設定ファイル内では、引数を持たないオプションは yes か no を伴って指定されます。例えば、
log yes
は
後続する空白と空行は無視されます。 ‘amp;#’ 記号は、行の残りがコメントである印です。 | |
| |
このオプションを指定すると
natd
は
"入力"
パケットと
"出力"
パケットを逆に扱い、
"外部"
インタフェースの代りに
"内部"
インタフェース上で動作します。
出力トラフィックがローカルマシンにリダイレクトされ、 natd が入力インタフェースで走行している (通常は出力インタフェースで走行します) といった、透過プロキシを実行している状況で有用な場合があります。 | |
| |
natd が透過プロキシのみを実行するよう強制します。 通常のアドレス変換は実行されません。 | |
| |
[type encode_ip_hdr | encode_tcp_stream] port xxxx server a.b.c.d:yyyy 透過プロキシを有効にします。 指定したポートのパケットでこのホストから他のホストへ向かう出力 TCP パケットは、 指定したサーバのポートへリダイレクトされます。 オプションとして、元の宛先アドレスがパケットにエンコードされます。 encode_ip_hdr は、この情報を IP オプションフィールドに置きます。 encode_tcp_stream は、このデータを TCP ストリームの先頭に挿入します。 | |
| |
basenumber:count
このオプションは、FTP/IRC DCC コネクション用に、
ipfirewall(4)
ベースのファイアウォールに穴を開けるよう、
natd
に指示します。
これは、
特定のコネクション (このコネクションのみ) の
ファイアウォールの通り抜けを許すという、
一時的なファイアウォールルールを、動的にインストールすることで実現されます。
このルールは、対応するコネクションが終了すると、自動的に削除されます。
basenumber から開始する最大 count 個のルールが使用され、ファイアウォールに穴を開けます。 すべてのルールに対する範囲は、起動時にクリアされます。 | |
| |
このオプションで、Skinny Station プロトコルに使用する TCP ポートを 指定可能です。 Cisco Call Managers と通信してボイスオーバ IP コールを設定するために、 Cisco IP 電話が Skinny を使用します。 デフォルトでは、Skinny エイリアスは実行されません。 Skinny 用の典型的なポート番号は 2000 です。 | |
| |
ipfw(8)
ルールがブロックしたことにより、パケットが再挿入できなかったときに、
ログします。
| |
| |
プロセス ID を格納するための別のファイルを指定します。 デフォルトは /var/run/natd.pid です。 | |
options IPFIREWALL options IPDIVERT
自分のカーネルを構築する方法については、ハンドブックに詳しい説明が あるのでそちらを参照してください。
gateway_enable=YES
と指定するか、
sysctl net.inet.ip.forwarding=1
というコマンドを用いることで機能するようになります。
natd の実行は至って簡単です。
natd -interface ed0
という行でほとんどの場合充分です (正しいインタフェース名に置き換えて ください)。 ブート時に自動的に開始するように設定する方法については rc.conf(5) を参照してください。 natd が起動されたら、パケットの流れの方向が natd の方に変わる (divert される) ようにしなければなりません:
/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’ を適切に変更してください)。
このファイアウォールの設定では、 ローカルネットワーク上の誰もがソースアドレスをあなたのホストに 偽装可能であることを認識してください。 ローカルネットワーク上に他にホストがある場合、 信頼するホストへ/からのトラフィックのみを許可する ファイアウォールルールを作成することを 強く勧めます。
本物のファイアウォールルールを指定する場合、スクリプトの先頭で上記の 2 行目を 指定すると良いでしょう。 そうすることによって、ファイアウォールにより排除されてしまう前に、 natd がすべてのパケットを見ることができるようになります。
natd の変換後、転換を生じさせたルール番号の次のルール番号から、 パケットはファイアウォールに再入します (同じ番号に複数のルールがある場合には、次のルールからにはなりません)。
firewall_enable=YES
と設定し、ファイアウォールを作動させます。これはシステムの起動時のスクリプトに /etc/rc.firewall スクリプトを実行するように伝えます。 今すぐ再起動したくない場合には、コンソールから手で実行してください。 バックグラウンドで実行させるのでない限り、これは決して仮想セッションから 行ってはいけません。もし実行させてしまうと、flush が行われた後に あなたは締め出されてしまい、すべてのアクセスを永久に遮断するために この地点で /etc/rc.firewall の実行は止まってしまいます。スクリプトをバックグラウンドで実行すれば、 この災害を避けることができます。
Archie Cobbs <archie@FreeBSD.org> (divert ソケット) Charles Mott <cm@linktel.net> (パケットエイリアス) Eivind Eklund <perhaps@yes.no> (IRC サポートとその他の追加) Ari Suutari <suutari@iki.fi> (natd) Dru Nelson <dnelson@redwoodsoft.com> (初期の PPTP サポート) Brian Somers <brian@awfulhak.org> (まとめ役) Ruslan Ermilov <ru@FreeBSD.org> (natd とパケットエイリアシングと糊)
NATD (8) | February 28, 2003 |
総合手引 | セクション 8 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Unix is the answer, but only if you phrase the question very carefully. | ” |
— Belinda Asbell |