EN JA
STF(4)
STF(4) FreeBSD Kernel Interfaces Manual STF(4)

名称

stf6to4 トンネルインタフェース

書式

device stf

解説

stf インタフェースは“6to4” IPv4 カプセル化における IPv6 をサポートします。それは RFC3056 で明記されるように IPv6 トラフィックオーバ IPv4 でトンネル化することができます。

6to4 サイトの普通のノードのためには、利用者は stf インタフェースを必要としません。 stf インタフェースは (仕様で“6to4 ルータ”と呼ばれる) サイト境界ルータに必要です。

それぞれの stf インタフェースは実行時にインタフェースクローニングを使用して作成されます。これは ifconfig(8) create コマンドか rc.conf(5)cloned_interfaces 変数を使用して最も簡単に行なえます。

6to4 プロトコルが指定される方法のためには、 stf インタフェースが適切に働くために特定の設定を必要とします。ただ 1 つ (たった 1) の有効な 6to4 アドレスは、インタフェースまで設定される必要があります。“有効な 6to4 アドレス”は次の特性があるアドレスです。以下の特性のいずれも満たされていないなら、 stf はパケット送信でランタイムエラーを起こします。その他の詳細については仕様書を読んでください。

  • 2002:xxyy:zzuu::/48 に一致、ここで xxyy:zzuu はノードのための IPv4 アドレスの 16 進記法です。利用者のノードにあるインタフェースのいずれからも IPv4 アドレスを取ることができます。仕様書が IPv4 プライベートアドレスの使用を禁じているので、アドレスは、グローバル IPv4 アドレスである必要があります。
  • サブネット識別子部分 (48 番目から 63 番目のビット) とインタフェース識別子部分 (下位 64 ビット) は、アドレス衝突を避けるために適切に詰められます。

利用者がノードにリレールータとして振る舞って欲しいなら、 IPv6 インタフェースアドレスのための接頭語の長さはノードが任意の 6to4 宛先を“オンリンク”とみなすために、 16 である必要があります。特定の IPv4 接頭語の内部となるように 6to4 ピアを制限したいなら、利用者は IPv6 接頭語の長さを“16 + IPv4 接頭語の長さ”と設定したいかもしれません。 IPv6 接頭語の長さが 16 より大きいなら、 stf インタフェースはパケットで IPv4 ソースアドレスをチェックします。

stf は ECN フレンドリになるように設定することができます。これは IFF_LINK1 によって設定することができます。詳細に関しては gif(4) を参照してください。

6to4 仕様は“あらゆる人からトンネル化されたパケットを受け付ける”トンネルデバイスとして書かれていることに注意してください。 stf デバイスを有効にすることによって、悪意がある者が利用者のノードに偽造された IPv6 パケットを注入することをより簡単にします。また、利用者のノードに不適当なトンネル化されたパケットを生成させるように、悪意がある者は IPv6 パケットに偽造されたソースアドレスを注入することができます。インタフェースを有効にするとき、管理者は警告を行なわなければなりません。起こり得る攻撃を防ぐために、 stf インタフェースは続くパケットをフィルタで除去します。チェックは決して完全でないことに注意してください:

  • 外側の IPv4 ソース/宛先 ( 0.0.0.0/8) として IPv4 の明記されたいないアドレスのパケットです。
  • 外側の IPv4 ソース/宛先 ( 127.0.0.0/8) としてループバックアドレスのパケットです。
  • 外側の IPv4 ソース/宛先 ( 224.0.0.0/4) としてマルチキャストアドレスのパケットです。
  • 外側の IPv4 ソース/宛先 ( 255.0.0.0/8) として制限されたブロードキャストアドレスのパケットです。
  • 外側の IPv4 ソース/宛先 ( 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) としてプライベートアドレスがあるパケットです。
  • 外側の IPv4 ソース/宛先としてサブネットブロードキャストアドレスのパケットです。直接接続されたすべてのサブネットのためにサブネットブロードキャストアドレスに対してチェックをします。
  • 入口フィルタリングを通過しなしパケットです。外側の IPv4 ソースアドレスはルーティングテーブルで IPv4 トポロジに対処しなければなりません。 IFF_LINK2 ビットによって入口フィルタをオフにすることができます。
  • IPv6 アドレスが 6to4 接頭語にマッチするなら、同じセットの規則は内側の IPv6 アドレスに埋め込まれた IPv4 アドレスに対して適用されます。

必要に応じて IP プロトコル番号 41 で着信 IPv4 パケットをフィルタまたは検査することはお勧めです。カプセル化された IPv6 パケットも同様にフィルタまたは検査することもお勧めです。また、あなたは、内側の IPv6 アドレスに対してなりすましを避けるために正常な入口フィルタを動かしたいかもしれません。

stf インタフェースで IFF_LINK0 フラグを設定することによって、有り得ない外部からの直接攻撃を行なう、入力パスを無効にすることは可能です。しかしながら、他のセキュリティリスクがあることに注意してください。その設定を使用したいなら、利用者は他の人に 6to4 アドレスを公表してはいけません。

SYSCTL 変数

次の sysctl(8) 変数を stf の振る舞いを制御するために使用することができます。デフォルト値は、各変数の隣りに表示されます。
net.link.stf.permit_rfc1918: 0
RFC3056 は、グローバルでユニークな 32 ビットの IPv4 アドレスの使用を要求します。この sysctl 変数は、この要求の振る舞いを制御します。それが 0 以外に設定されるとき、 stf は、RFC1918 に記述されているプライベートの IPv4 アドレスの使用を許可します。これは、イントラネット (Intranet) 環境またはネットワークアドレス変換 (NAT) のいくつかのメカニズムが使用されるとき、役に立ちます。

使用例

16 進数で書かれた 8504:0506133.4.5.6 と等しいことに注意してください。

# ifconfig ne0 inet 133.4.5.6 netmask 0xffffff00 
# ifconfig stf0 inet6 2002:8504:0506:0000:a00:5aff:fe38:6f86 \ 
 prefixlen 16 alias

次の設定は IPv4 ソース 9.1.0.0/16 だけからパケットを受け付けます。それは IPv6 宛先 2002:0901::/32 (IPv4 宛先は 9.1.0.0/16 にマッチします) だけのため 6to4 パケットを発信します。

# ifconfig ne0 inet 9.1.2.3 netmask 0xffff0000 
# ifconfig stf0 inet6 2002:0901:0203:0000:a00:5aff:fe38:6f86 \ 
 prefixlen 32 alias

次の設定は出力のみのデバイスとして stf インタフェースを使用します。利用者は、この設定を使用するための (6to4 以外の) 代替の IPv6 の接続性を持つ必要があります。発信トラフィックのために、利用者は stf を通して効率的に他の 6to4 ネットワークに到達することができます。着信トラフィックのために、利用者は (セキュリティの欠点を少なくする) どんな 6to4 トンネル化されたパケットも受信しません。他の ( 2002:8504:0506::/48) のための利用者の 6to4 プレフィックスを公表しない、そしてソースとして利用者の 6to4 プレフィックスを使用しないことに注意してください。

# ifconfig ne0 inet 133.4.5.6 netmask 0xffffff00 
# ifconfig stf0 inet6 2002:8504:0506:0000:a00:5aff:fe38:6f86 \ 
 prefixlen 16 alias deprecated link0 
# route add -inet6 2002:: -prefixlen 16 ::1 
# route change -inet6 2002:: -prefixlen 16 ::1 -ifp stf0

関連項目

gif(4), inet(4), inet6(4)

http://www.ipv6day.org/action.php?n=En.IPv6day Brian Carpenter and Keith Moore, Connection of IPv6 Domains via IPv4 Clouds, RFC, 3056, February 2001. Jun-ichiro itojun Hagino, Possible abuse against IPv6 transition technologies, draft-itojun-ipv6-transition-abuse-01.txt, July 2000, work in progress.

歴史

stf デバイスは、WIDE/KAME IPv6 スタックではじめて登場しました。

バグ

1 つのノードのために、1 つ以上の stf インタフェースは認められません。そして、1 つの stf インタフェースのために、1 つ以上の IPv6 インタフェースアドレスは認められません。それは、IPv6 レイヤと IPv4 レイヤの間のソースアドレス選択のコンフリクト (競合) を避けるためと、反対側で入口フィルタ規則で対処するためです。これは stf にすべての出来事に適して働かせる特徴です。
December 28, 2012 FreeBSD