FAITHD(8) FreeBSD システム管理者マニュアル FAITHD(8)
名称
faithd − FAITH IPv6/v4 変換デーモン |
書式
faithd [−dp] [−f configfile] service [serverpath [serverargs]] |
解説 |
faithd ユーティリティは IPv6 から IPv4 への TCP リレー機能を提供します。 faithd は IPv4/v6 デュアルスタックルータ上で起動しなければなりません。 TCPv6 トラフィックが見つかると、 faithd はその TCPv6 トラフィックを TCPv4 にリレーします。リレーする TCPv4 コネクションの終点は、元の IPv6 終点の末 尾 4 オクテットから決定されます。例えば、 faithd 用に 3ffe:0501:4819:ffff:: が予約されていて、 TCPv6 終点アドレスが 3ffe:0501:4819:ffff::0a01:0101 なら、このトラフィックは IPv4 の終点 10.1.1.1 に向けてリレーされます。 faithd による変換サービスを用いるには、 IPv4 アドレスをマップするための IPv6 アドレスプレフィックスを予約しておく必要があります。カーネルは、そこ で予約した IPv6 アドレスプレフィックスへのすべての TCP コネクションを、 route(8) を用いて疑似インタフェース faith(4) にルーティングするように、適 切に構築されていなければなりません。また、 sysctl(8) を用いて net.inet6.ip6.keepfaith を 1 に設定しておくべきです。 ルータは、予約された IPv6 アドレスプレフィックス行きのすべての TCP トラ フィックを捕まえるように設定しなければなりません。このためには route(8) と sysctl(8) のコマンドを使用します。 faithd ユーティリティは、名前からアドレスへの特別な変換機構を必要とし、ホ スト名から特別な IPv6 アドレスプレフィックスへ解決します。小規模なインス トールでは、 hosts(5) を使用してください。大規模なインストールでは、特別 なアドレス変換をサポートする DNS サーバが有用でしょう。 totd と呼ばれる実 装が http://www.vermicelli.pasta.cs.uit.no/ipv6/software.html で入手可能 です。変換された DNS レコードが一般の DNS 群に伝播されないよう、注意して ください。非常に有害です。 |
デーモンモード |
faithd がスタンドアロンプログラムとして起動されると、 faithd は自分自身を デーモン化します。 faithd ユーティリティは TCPv6 のポート service を listen します。ポート service への TCPv6 トラフィックを見付けると、コネク ションをリレーします。 faithd が TCP ポート service を listen するので、 inetd(8) や他の標準的な 仕組みを用いて、そのルータ上で service ポートを使うローカルな TCP デーモ ンを動作させることはできません。 faithd に対して serverpath を指定するこ とで、ルータ上でローカルデーモンを走らせることができます。終点アドレスが ローカルのインターネットアドレスであれば、 faithd ユーティリティは serverpath においてローカルデーモンを起動します。それ以外の場合、 faithd は IPv4 TCP への変換を行います。ローカルデーモンの引数は serverargs を用 いて指定することができます。 次のオプションが使用可能です: |
−d
syslog(3) を用いてデバッグ情報を出力します。 −f configfile −p faithd ユーティリティは通常の TCP データも帯域外 TCP データもリレーしま す。 TCP half close をエミュレートすることも可能です。 faithd ユーティリ ティは ftp(1) で用いられるプロトコルに対して、特別なサポートを行います。 FTP プロトコルを転送する際は、 faithd は、 PORT/LPRT/EPRT コマンドおよび PASV/LPSV/EPSV コマンドにおけるネットワークレベルアドレスも変換します。 アクティブでないセッションは 30 分で切断します。これは、使わなくなった セッションのせいでリソースが消費されるのを防ぐためです。サービスによって はこの機能は適切でないかもしれません。 (この機能をコンフィギュレーション 可能にすべきでしょうか?) inetd モード faithd は、ローカルな TCP ポート番号を元に動作モードを決定し、必要な時/可 能な時には特別なプロトコル処理を有効にします。例えば、 faithd が FTP ポー ト上で inetd(8) から起動されると、これは FTP リレーとして動作します。 この動作モードでは、 inetd(8) 中に faithd 用の特別なサポートを必要としま す。 アクセス制御 • src/slen deny dst/dlen 問い合わせの始点アドレスが src/slen に合致する場合で、変換後の終点ア ドレスが dst/dlen に合致する場合、接続を拒否します。 • src/slen permit dst/dlen 問い合わせの始点アドレスが src/slen に合致する場合で、変換後の終点ア ドレスが dst/dlen に合致する場合、接続を許可します。 これらのディレクティブは順番に評価され、最初に合致するエントリが効果を持 ちます。合致しないと (これがルールセットの最後である場合) トラフィックは 拒否されます。 inetd モードでは、 inetd(8) のアクセス制御機能でトラフィックをフィルタ可 能です。 診断 |
成功すると faithd ユーティリティは EXIT_SUCCESS (0) で終了し、エラーがあ る場合は EXIT_FAILURE (1) で終了します。 |
使用例
faithd を起動する前に、 faith(4) インタフェースを適切に設定しておく必要が あります。 # 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 |
デーモンモードのサンプル |
telnet サービスを変換し、そしてローカルな telnet サービスを提供しない場合 は、次のように faithd を起動します: # faithd telnet もし /usr/libexec/telnetd にある telnetd(8) によるローカル telnet サービ スを提供したい場合は、次のコマンドラインを使用します: # faithd telnet /usr/libexec/telnetd telnetd ローカルデーモンに追加の引数を渡したい場合は: # faithd ftp /usr/libexec/ftpd ftpd -l 他の使用例です。サービスが始点ポート範囲をチェックする場合には −p が必要 かもしれません。 # faithd ssh # faithd telnet /usr/libexec/telnetd telnetd |
inetd モードのサンプル |
inetd.conf(5) に次の行を追加します。構文はオペレーティングシステムによっ て様々でしょう。 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 inetd(8) は、listen するソケットをオープンし、カーネルの TCP リレーサポー トを有効化します。コネクションが到着すると、 faithd が inetd(8) から起動 されます。コネクションの終点が、予約した IPv6 アドレスプレフィックスの範 囲内の場合、 faithd はコネクションをリレーします。それ以外の場合、 faithd ユーティリティはサービスに対応する telnetd(8) のようなデーモンを起動しま す。 |
アクセス制御の例 |
以下に単純な faithd.conf 設定を示します。 # 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 |
関連項目
Jun-ichiro itojun Hagino and Kazu Yamamoto, " An IPv6-to-IPv4transport relay translator", RFC3142, June 2001, ftp://ftp.isi.edu/in-notes/rfc3142.txt.
歴史
faithd ユーティリティは WIDE Hydrangea IPv6 プロトコルスタックキットで初 めて登場しました。 KAME プロジェクト (http://www.kame.net/) スタックに基づく IPv6, IPsec サ ポートは、 FreeBSD 4.0 で初めて統合されました。 |
セキュリティの考察
faithd および他の TCP リレーサービスでリレーされたコネクションに対し、 IP アドレスベースの認証を用いるのは大変危険です。 faithd.conf もしくは IPv6 パケットフィルタを使用し、 faithd へのアクセス 制限を行うことを、管理者へお勧めします。これは faithd を悪意ある者達から 防御することであり、サービス/バンド幅を盗まれないようにすることを意味しま す。 IPv6 の終点アドレスについては、 route(8) を用いて、 faith(4) を指す 経路エントリを注意深く設定することで、制限可能です。 IPv6 の始点アドレス については、パケットフィルタでフィルタする必要があります。 関連項目に列挙 した文書に、本件に関する更なる議論が記述されています。 FreeBSD 10.0 May 17, 1998 FreeBSD 10.0 |