tail head cat sleep
QR code linking to this page

manページ  — FAITHD

名称

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
  IPv4 TCP コネクションを最終の終点向けにリレーする際、 faithd はソースポートとして特権 TCP ポートを使用します。 ftp(1) をリレーする際は 本オプションは不要です。 そのための特別なプログラムコードが含まれています。

faithd ユーティリティは通常の TCP データも帯域外 TCP データもリレーします。 TCP half close をエミュレートすることも可能です。 faithd ユーティリティは ftp(1) で用いられるプロトコルに対して、特別なサポートを行います。 FTP プロトコルを転送する際は、 faithd は、 PORT/LPRT/EPRT コマンドおよび PASV/LPSV/EPSV コマンドにおけるネットワークレベルアドレスも変換します。

アクティブでないセッションは 30 分で切断します。 これは、使わなくなったセッションのせいでリソースが消費されるのを 防ぐためです。 サービスによってはこの機能は適切でないかもしれません。 (この機能をコンフィギュレーション可能にすべきでしょうか?)

inetd モード

faithdinetd(8) から起動されると、 faithd ユーティリティは標準入力から渡されるコネクションを扱います。 コネクションの終点が、予約した IPv6 アドレスプレフィックスの範囲内の場合、 faithd はコネクションをリレーします。 それ以外の場合、 faithd はサービスに対応する telnetd(8) のようなデーモンを起動し、 inetd(8) から渡されるコマンド引数を使用します。

faithd は、ローカルな TCP ポート番号を元に動作モードを決定し、 必要な時/可能な時には特別なプロトコル処理を有効にします。 例えば、 faithd が FTP ポート上で inetd(8) から起動されると、これは FTP リレーとして動作します。

この動作モードでは、 inetd(8) 中に faithd 用の特別なサポートを必要とします。

アクセス制御

悪意あるアクセスを防ぐため、 faithd は単純なアドレスベースのアクセス制御を実装しています。 /etc/faithd.conf (または -f で指定した configfile) で、 faithd は望まないトラフィックの中継を防ぎます。 faithd.conf は、次の書式のディレクティブを含みます:

これらのディレクティブは順番に評価され、 最初に合致するエントリが効果を持ちます。 合致しないと (これがルールセットの最後である場合) トラフィックは拒否されます。

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 リレーサポートを有効化します。 コネクションが到着すると、 faithdinetd(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

関連項目

faith(4), route(8), sysctl(8)

Jun-ichiro itojun Hagino, Kazu Yamamoto, RFC3142, ftp://ftp.isi.edu/in-notes/rfc3142.txt, An IPv6-to-IPv4 transport relay translator, June 2001.

歴史

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 の始点アドレスについては、 パケットフィルタでフィルタする必要があります。 関連項目 に列挙した文書に、本件に関する更なる議論が記述されています。


FAITHD (8) May 17, 1998

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

UNIX is a four-letter word!