.\" $KAME: faithd.8,v 1.37 2002/05/09 14:21:23 itojun Exp $ .\" .\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. Neither the name of the project nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/usr.sbin/faithd/faithd.8,v 1.18 2004/06/04 19:24:35 ru Exp % .\" .\" $FreeBSD: doc/ja_JP.eucJP/man/man8/faithd.8,v 1.16 2004/10/11 08:23:01 metal Exp $ .Dd May 17, 1998 .Dt FAITHD 8 .Os .Sh 名称 .Nm faithd .Nd FAITH IPv6/v4 変換デーモン .Sh 書式 .Nm .Op Fl dp .Op Fl f Ar configfile .Ar service .Op Ar serverpath Op Ar serverargs .Sh 解説 .Nm ユーティリティは IPv6 から IPv4 への TCP リレー機能を提供します。 .Nm は IPv4/v6 デュアルスタックルータ上で起動しなければなりません。 .Pp .Tn TCPv6 トラフィックが見つかると、 .Nm はその .Tn TCPv6 トラフィックを .Tn TCPv4 にリレーします。 リレーする .Tn TCPv4 コネクションの終点は、元の .Tn IPv6 終点の末尾 4 オクテットから決定されます。 例えば、 .Nm 用に .Li 3ffe:0501:4819:ffff:: が予約されていて、 .Tn TCPv6 終点アドレスが .Li 3ffe:0501:4819:ffff::0a01:0101 なら、このトラフィックは IPv4 の終点 .Li 10.1.1.1 に向けてリレーされます。 .Pp .Nm による変換サービスを用いるには、 IPv4 アドレスをマップするための IPv6 アドレスプレフィックスを 予約しておく必要があります。 カーネルは、そこで予約した IPv6 アドレスプレフィックスへの すべての TCP コネクションを、 .Xr route 8 を用いて疑似インタフェース .Xr faith 4 にルーティングするように、適切に構築されていなければなりません。 また、 .Xr sysctl 8 を用いて .Dv net.inet6.ip6.keepfaith を .Dv 1 に設定しておくべきです。 .Pp ルータは、予約された .Tn IPv6 アドレスプレフィックス行きのすべての TCP トラフィックを捕まえるように 設定しなければなりません。このためには .Xr route 8 と .Xr sysctl 8 のコマンドを使用します。 .Pp .Nm ユーティリティは、名前からアドレスへの特別な変換機構を必要とし、 ホスト名から特別な .Tn IPv6 アドレスプレフィックスへ解決します。 小規模なインストールでは、 .Xr hosts 5 を使用してください。 大規模なインストールでは、 特別なアドレス変換をサポートする DNS サーバが有用でしょう。 .Nm totd と呼ばれる実装が .Pa http://www.vermicelli.pasta.cs.uit.no/ipv6/software.html で入手可能です。 変換された DNS レコードが一般の DNS 群に伝播されないよう、注意してください。 非常に有害です。 .Ss デーモンモード .Nm がスタンドアロンプログラムとして起動されると、 .Nm は自分自身をデーモン化します。 .Nm ユーティリティは .Tn TCPv6 のポート .Ar service を listen します。 ポート .Ar service への .Tn TCPv6 トラフィックを見付けると、コネクションをリレーします。 .Pp .Nm が TCP ポート .Ar service を listen するので、 .Xr inetd 8 や他の標準的な仕組みを用いて、そのルータ上で .Ar service ポートを使うローカルな TCP デーモンを動作させることはできません。 .Nm に対して .Ar serverpath を指定することで、 ルータ上でローカルデーモンを走らせることができます。 終点アドレスがローカルのインターネットアドレスであれば、 .Nm ユーティリティは .Ar serverpath においてローカルデーモンを起動します。 それ以外の場合、 .Nm は IPv4 TCP への変換を行います。 ローカルデーモンの引数は .Ar serverargs を用いて指定することができます。 .Pp 次のオプションが使用可能です: .Bl -tag -width indent .It Fl d .Xr syslog 3 を用いてデバッグ情報を出力します。 .It Fl f Ar configfile アクセス制御用の設定ファイルを指定します。 後述を参照してください。 .It Fl p IPv4 TCP コネクションを最終の終点向けにリレーする際、 .Nm はソースポートとして特権 TCP ポートを使用します。 .Xr ftp 1 をリレーする際は 本オプションは不要です。 そのための特別なプログラムコードが含まれています。 .El .Pp .Nm ユーティリティは通常の TCP データも帯域外 TCP データもリレーします。 TCP half close をエミュレートすることも可能です。 .Nm ユーティリティは .Xr ftp 1 で用いられるプロトコルに対して、特別なサポートを行います。 FTP プロトコルを転送する際は、 .Nm は、 .Li PORT/LPRT/EPRT コマンドおよび .Li PASV/LPSV/EPSV コマンドにおけるネットワークレベルアドレスも変換します。 .Pp アクティブでないセッションは 30 分で切断します。 これは、使わなくなったセッションのせいでリソースが消費されるのを 防ぐためです。 サービスによってはこの機能は適切でないかもしれません。 (この機能をコンフィギュレーション可能にすべきでしょうか?) .Ss inetd モード .Nm が .Xr inetd 8 から起動されると、 .Nm ユーティリティは標準入力から渡されるコネクションを扱います。 コネクションの終点が、予約した IPv6 アドレスプレフィックスの範囲内の場合、 .Nm はコネクションをリレーします。 それ以外の場合、 .Nm はサービスに対応する .Xr telnetd 8 のようなデーモンを起動し、 .Xr inetd 8 から渡されるコマンド引数を使用します。 .Pp .Nm は、ローカルな TCP ポート番号を元に動作モードを決定し、 必要な時/可能な時には特別なプロトコル処理を有効にします。 例えば、 .Nm が FTP ポート上で .Xr inetd 8 から起動されると、これは FTP リレーとして動作します。 .Pp この動作モードでは、 .Xr inetd 8 中に .Nm 用の特別なサポートを必要とします。 .Ss アクセス制御 悪意あるアクセスを防ぐため、 .Nm は単純なアドレスベースのアクセス制御を実装しています。 .Pa /etc/faithd.conf (または .Fl f で指定した .Ar configfile ) で、 .Nm は望まないトラフィックの中継を防ぎます。 .Pa faithd.conf は、次の書式のディレクティブを含みます: .Bl -bullet .It .Ar src Ns / Ns Ar slen Cm deny Ar dst Ns / Ns Ar dlen .Pp 問い合わせの始点アドレスが .Ar src Ns / Ns Ar slen に合致する場合で、変換後の終点アドレスが .Ar dst Ns / Ns Ar dlen に合致する場合、接続を拒否します。 .It .Ar src Ns / Ns Ar slen Cm permit Ar dst Ns / Ns Ar dlen .Pp 問い合わせの始点アドレスが .Ar src Ns / Ns Ar slen に合致する場合で、変換後の終点アドレスが .Ar dst Ns / Ns Ar dlen に合致する場合、接続を許可します。 .El .Pp これらのディレクティブは順番に評価され、 最初に合致するエントリが効果を持ちます。 合致しないと (これがルールセットの最後である場合) トラフィックは拒否されます。 .Pp inetd モードでは、 .Xr inetd 8 のアクセス制御機能でトラフィックをフィルタ可能です。 .Sh 診断 成功すると .Nm ユーティリティは .Dv EXIT_SUCCESS .Pq 0 で終了し、エラーがある場合は .Dv EXIT_FAILURE .Pq 1 で終了します。 .Sh 使用例 .Nm を起動する前に、 .Xr faith 4 インタフェースを適切に設定しておく必要があります。 .Bd -literal -offset # sysctl net.inet6.ip6.accept_rtadv=0 # sysctl net.inet6.ip6.forwarding=1 # sysctl net.inet6.ip6.keepfaith=1 # ifconfig faith0 up # route add -inet6 3ffe:501:4819:ffff:: -prefixlen 96 ::1 # route change -inet6 3ffe:501:4819:ffff:: -prefixlen 96 -ifp faith0 .Ed .Ss デーモンモードのサンプル .Li telnet サービスを変換し、そしてローカルな telnet サービスを提供しない場合は、 次のように .Nm を起動します: .Bd -literal -offset # faithd telnet .Ed .Pp もし .Pa /usr/libexec/telnetd にある .Xr telnetd 8 によるローカル telnet サービスを提供したい場合は、 次のコマンドラインを使用します: .Bd -literal -offset # faithd telnet /usr/libexec/telnetd telnetd .Ed .Pp ローカルデーモンに追加の引数を渡したい場合は: .Bd -literal -offset # faithd ftp /usr/libexec/ftpd ftpd -l .Ed .Pp 他の使用例です。 サービスが始点ポート範囲をチェックする場合には .Fl p が必要かもしれません。 .Bd -literal -offset # faithd ssh # faithd telnet /usr/libexec/telnetd telnetd .Ed .Ss inetd モードのサンプル .Xr inetd.conf 5 に次の行を追加します。 構文はオペレーティングシステムによって様々でしょう。 .Bd -literal -offset telnet stream tcp6/faith nowait root faithd telnetd ftp stream tcp6/faith nowait root faithd ftpd -l ssh stream tcp6/faith nowait root faithd /usr/sbin/sshd -i .Ed .Pp .Xr inetd 8 は、listen するソケットをオープンし、 カーネルの TCP リレーサポートを有効化します。 コネクションが到着すると、 .Nm が .Xr inetd 8 から起動されます。 コネクションの終点が、予約した IPv6 アドレスプレフィックスの範囲内の場合、 .Nm はコネクションをリレーします。 それ以外の場合、 .Nm ユーティリティはサービスに対応する .Xr telnetd 8 のようなデーモンを起動します。 .Ss アクセス制御の例 以下に単純な .Pa faithd.conf 設定を示します。 .Bd -literal -offset # 3ffe:501:ffff::/48 からのすべてに変換器の使用を許し、 # 次の IPv4 の終点へ接続させます: # - 10.0.0.0/8 と 127.0.0.0/8 以外のすべて # 他の接続は許しません。 # 3ffe:501:ffff::/48 deny 10.0.0.0/8 3ffe:501:ffff::/48 deny 127.0.0.0/8 3ffe:501:ffff::/48 permit 0.0.0.0/0 .Ed .Sh 関連項目 .Xr faith 4 , .Xr route 8 , .Xr sysctl 8 .Rs .%A Jun-ichiro itojun Hagino .%A Kazu Yamamoto .%T "An IPv6-to-IPv4 transport relay translator" .%B RFC3142 .%O ftp://ftp.isi.edu/in-notes/rfc3142.txt .%D June 2001 .Re .\" .Sh 歴史 .Nm ユーティリティは WIDE Hydrangea IPv6 プロトコルスタックキットで 初めて登場しました。 .\" .Pp KAME プロジェクト (http://www.kame.net/) スタックに 基づく IPv6, IPsec サポートは、 .Fx 4.0 で初めて統合されました。 .Sh セキュリティの考察 .Nm および他の TCP リレーサービス でリレーされたコネクションに対し、 IP アドレスベースの認証を用いるのは大変危険です。 .Pp .Pa faithd.conf もしくは IPv6 パケットフィルタを使用し、 .Nm へのアクセス制限を行うことを、管理者へお勧めします。 これは .Nm を悪意ある者達から防御することであり、 サービス/バンド幅を盗まれないようにすることを意味します。 IPv6 の終点アドレスについては、 .Xr route 8 を用いて、 .Xr faith 4 を指す経路エントリを注意深く設定することで、制限可能です。 IPv6 の始点アドレスについては、 パケットフィルタでフィルタする必要があります。 .Sx 関連項目 に列挙した文書に、本件に関する更なる議論が記述されています。