日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
INET6(4) FreeBSD カーネルインタフェースマニュアル INET6(4) 名称 inet6 -- インターネットプロトコルバージョン 6 ファミリ 書式 #include <sys/types.h> #include <netinet/in.h> 解説 inet6 ファミリは、inet(4) ファミリのアップデートされたバージョンです。 inet(4) は、インターネットプロトコルバージョン 4 を実装していますが、 inet6 は、インターネットプロトコルバージョン 6 を実装しています。 inet6 は、インターネットプロトコルバージョン 6 (IPv6) トランスポートレイ ヤ (層) と、IPv6 アドレス形式を利用するプロトコルを集めたものです。inet6 ファミリは、SOCK_STREAM, SOCK_DGRAM と SOCK_RAW ソケットタイプのためのプ ロトコルのサポートを行ないます。SOCK_RAW インタフェースは、IPv6 プロトコ ルへのアクセスを提供します。 アドレッシング IPv6 アドレスは、ネットワーク標準のバイト順で格納された 16 バイトの大きさ です。インクルードファイル <netinet/in.h> は、このアドレスを区別された共 用体 (ユニオン) として定義しています。 inet6 ファミリにバインド (結合) されたソケットは、次のアドレス構造体を利 用します: struct sockaddr_in6 { uint8_t sin6_len; sa_family_t sin6_family; in_port_t sin6_port; uint32_t sin6_flowinfo; struct in6_addr sin6_addr; uint32_t sin6_scope_id; }; ソケットは、着信メッセージで ``ワイルドカード'' マッチングに影響するよう にローカルアドレス (IPv6 アドレス 0:0:0:0:0:0:0:0 と等しい) ``::'' で作成 されます。 IPv6 仕様は、リンクローカルまたはサイトローカルのアドレスのような、スコー プアドレスを定義します。スコープアドレスは、それがスコープ識別子なしで指 定されるなら、カーネルには、あいまいです。ユーザランドからスコープアドレ スを適切に操作するためには、プログラムは、RFC2292 で定義された高度な API を使用しなければなりません。高度な API のコンパクトな記述は、ip6(4) で利 用可能です。スコープアドレスが明白なスコープなしで指定されるなら、カーネ ルは、エラーを引き起こします。仕様と実装観点の両方からスコープアドレスが この時点で日常使用されないことに注意してください。 KAME 実装は、``fe80::1%de0'' が ``fe80::1 on de0 interface'' を指定するよ うに、リンクローカルのアドレスのための拡張数値 IPv6 アドレス記法をサポー トします。この記法は、getaddrinfo(3) と getnameinfo(3) でサポートされま す。telnet(1) や ftp(1) のようないくつかの普通のユーザランドプログラムが この記法を使用することができます。ping6(8) のような特別なプログラムでは、 利用者は、スコープアドレスのあいまいさを取り除くために特別なコマンドライ ンオプションで、発信インタフェースを指定することができます。 スコープアドレスは、特にカーネルで取り扱われます。ルーティングテーブルま たはインタフェース構造体のようなカーネル構造体では、スコープアドレスのイ ンタフェース指標 (インデックス) をアドレスに埋め込みます。したがって、い くつかのカーネル構造体のアドレスは、固定のものとは、同じではありません。 組み込まれた指標は、PF_ROUTE ソケットを介して、kvm(3) を通したカーネルメ モリアクセスを介して、およびある別の方法で目に見えるようになります。しか しながら、ユーザは、組み込まれたフォーム (形式) を決して使用すべきではあ りません。詳細に関しては、KAME キットで供給されている IMPLEMENTATION (実 装) を調べてください。 プロトコル inet6 ファミリは、IPv6 ネットワークプロトコル、インターネットコントロール メッセージプロトコルバージョン 6 (ICMPv6)、トランスミッション (送信) コン トロールプロトコル (TCP)、とユーザデータグラムプロトコル (UDP) から成って います。TCP は、UDP が SOCK_DGRAM アブストラクションをサポートするために 使用されている間に、SOCK_STREAM アブストラクションをサポートするのに使用 されます。TCP と UDP が inet(4) と inet6 で共通であることに注意してくださ い。IPv6 のための生の (raw) インタフェースは、タイプ SOCK_RAW のインター ネットソケットを作成することによって利用可能です。ICMPv6 メッセージプロト コルは、生の (raw) ソケットからアクセス可能です。 MIB 変数 多くの変数は、sysctl(3) MIB の net.inet6 ブランチで実装されます。(それぞ れのマニュアルページで参照される) 転送プロトコルによってサポートされた変 数に加えて、次の一般的な変数が定義されています: IPV6CTL_FORWARDING (ip6.forwarding) ブール値: IPv6 パケットの転送を 有効/無効にする。また、ノードがルータとして機能し ているかどうかを識別します。デフォルトは、オフで す。 IPV6CTL_SENDREDIRECTS (ip6.redirect) ブール値: 転送されない IPv6 パケッ トの応答において、ICMPv6 リダイレクトの送信を有 効/無効にする。このオプションは、ノードがルーティ ング IPv6 パケットでないなら無視され、通常、すべ てのシステムで有効にされるはずです。デフォルト は、オンです。 IPV6CTL_DEFHLIM (ip6.hlim) 整数: 発信 IPv6 パケットに使用するデ フォルトの中継限界数 (hop limit) です。この値は、 IPv6 上ですべての転送プロトコルに適用されます。値 を上書きするための API があります。 IPV6CTL_MAXFRAGS (ip6.maxfrags) 整数: ホストが、すべての VNET で、 すべての再構築するキューに渡って受け付けて同時に 保持するフラグメントの最大数。0 に設定されるな ら、フラグメントの再構築は、無効にされます。-1 に 設定されるなら、この制限は、適用されません。この 制限は、mbuf クラスタの数が変更されるとき、再計算 されます。これは、グローバルな制限です。 IPV6CTL_MAXFRAGPACKETS (ip6.maxfragpackets) 整数: ホストが特定の VNET の ために再構築するキューを受け付けて、同時に保存す るフラグメント化されたパケットの最大数。0 は、 ノードがその VNET のためにあらゆるのフラグメント 化されたパケットを受け付けないことを意味します。 -1 は、その VNET のために、この制限を適用しないこ とを意味します。この制限は、mbuf クラスタの数が変 更されるとき、再計算されます。これは、VNET ごとの 制限です。 IPV6CTL_MAXFRAGBUCKETSIZE (ip6.maxfragbucketsize) 整数: バケットごとに再構 築されるキューの最大数。フラグメント化されたパ ケットは、バケットにハッシュされます。各バケット には、再構築されるキューのリストがあります。シス テムは、一致している再構築されるキューを見つける ために、バケットの既存の再構築されキューに着信し てくるパケットと比較しなければなりません。システ ムリソースを保存するために、システムは、各バケッ トで許可された再構築されるキューの数を制限しま す。この制限は、mbuf クラスタの数が変更されると き、または ip6.maxfragpackets の値が変わるとき、 再計算されます。これは、VNET ごとの制限です。 IPV6CTL_MAXFRAGSPERPACKET (ip6.maxfragsperpacket) 整数: ホストがパケットの ための再構築するキューを受け付けて保持するフラグ メントの最大数。これは、VNET ごとの制限です。 IPV6CTL_ACCEPT_RTADV (ip6.accept_rtadv) ブール値: ICMPv6 ルータ通知パ ケットの受信とアドレスプレフィックス (接頭辞) と デフォルトルータの自動設定を有効/無効にするための インタフェースフラグ毎のデフォルト値。ノードは、 オプションが意味があるためには (ルータではなく) ホストでなければなりません。デフォルトは、オフで す。 IPV6CTL_AUTO_LINKLOCAL (ip6.auto_linklocal) ブール値: 自動的なリンクロー カルアドレス設定を実行することを有効/無効にするた めのインタフェースフラグ毎のデフォルト値。デフォ ルトでオン。 IPV6CTL_LOG_INTERVAL (ip6.log_interval) 整数: IPv6 パケット転送エンジ ンのログ出力のデフォルトの間隔 (秒単位) です。 IPV6CTL_HDRNESTLIMIT (ip6.hdrnestlimit) 整数: 着信 IPv6 パケット上で許 された最大の IPv6 拡張ヘッダのデフォルト数です。0 に設定されると、ノードは、できるだけ多くの拡張 ヘッダを受け付けます。 IPV6CTL_DAD_COUNT (ip6.dad_count) 整数: IPv6 DAD (複製されたアドレ ス検出 (duplicated address detection)) プローブパ ケットのデフォルト数です。IPv6 インタフェースアド レスが設定されるとき、パケットは、生成されます。 IPV6CTL_AUTO_FLOWLABEL (ip6.auto_flowlabel) ブール値: 未解決の接続転送プ ロトコルパケットのために IPv6 フローラベルフィー ルドの自動充てんを有効/無効にする。このフィールド は、中間ルータによってパケットのフローを識別する ために使用されます。デフォルトは、オンです。 IPV6CTL_DEFMCASTHLIM (ip6.defmcasthlim) 整数: ノードを始点とする IPv6 マルチキャストパケットのためのデフォルトの中継限 界数 (hop limit) 値です。この値は、IPv6 上ですべ ての転送プロトコルに適用されます。ip6(4) に文書化 されるように値を上書きする API があります。 IPV6CTL_GIF_HLIM (ip6.gifhlim) 整数: gif(4) トンネルインタフェース によって生成された IPv6 パケットのためのデフォル トの最大の中継限界数 (hop limit) 値です。 IPV6CTL_KAME_VERSION (ip6.kame_version) 文字列: カーネルで実装された KAME IPv6 スタックのバージョンを識別します。 IPV6CTL_USE_DEPRECATED (ip6.use_deprecated) ブール値: RFC2462 5.5.4 で明 記された推奨されないアドレスの使用を有効/無効にす る。デフォルトは、オンです。 IPV6CTL_RR_PRUNE (ip6.rr_prune) 整数: IPv6 ルータのリナンバリング プレフィックス (接頭辞) ベビーシッタのデフォルト の間隔 (秒単位) です。 IPV6CTL_V6ONLY (ip6.v6only) ブール値: AF_INET6 ソケットにおける IPv4 マップアドレスの禁止を有効/無効にする。デ フォルトは、オンです。 IPv4/v6 ソケット間の相互関係 デフォルトで、FreeBSD は、IPv4 トラフィックを AF_INET6 ソケットに経路制御 しません。デフォルトの振る舞いは、セキュリティのために故意に RFC2553 に違 反します。利用者が IPv4 と IPv6 トラフィックの両方を受け付けたいなら、2 つのソケットを listen (接続を受け付け) してください。IPv4 トラフィック は、あるソケット毎/ノード毎 (per-socket/per-node) 設定で経路制御されるか もしれません、しかしながら、そうするのは、勧められません。詳細について は、ip6(4) を調べてください。 AF_INET6 TCP/UDP ソケットの振る舞いは、RFC2553 に文書化されています。基本 的なものを次に示します: • AF_INET6 ソケット (アドレスが指定されている bind(2)) での特定のバイン ドは、そのアドレスのためだけに IPv6 トラフィックを受け付けるべきで す。 • 利用者が AF_INET6 ソケット (IPv6 アドレス :: にバインド bind(2) する) でワイルドカードバインドを実行して、その TCP/UDP ポートでワイルドカー ドバインド AF_INET ソケットがなければ、IPv4 トラフィックと同様に IPv6 トラフィックは、その AF_INET6 ソケットにルートされるべきです。IPv4 ト ラフィックは、::ffff:10.1.1.1 のような IPv6 アドレスから来るかのよう に見えるはずです。これは、IPv4 マップアドレスと呼ばれます。 • 1 つの TCP/UDP ポート上にワイルドカードバインド AF_INET ソケットとワ イルドカードバインド AF_INET6 ソケットの両方があれば、それらは、別々 に振る舞うべきです。IPv4 トラフィックは、AF_INET ソケットにルートされ るべきで、IPv6 は、AF_INET6 ソケットにルートされるべきです。 しかしながら、RFC2553 は、bind(2) の呼び出しの間の順序付けの制限も IPv4 TCP/UDP ポート番号と IPv6 TCP/UDP ポート番号がおたがいにどのように関連し ているか (それらが統合されているか、または分離されているか) も定義してい ません。実装された振る舞いは、カーネルによってたいへん異なっています。し たがって、AF_INET6 ワイルドカードバインドソケットの振る舞いに頼り過ぎるの は、賢明ではありません。利用者が IPv4 と IPv6 トラフィックの両方を受け付 けたいとき、2 つのソケット、1 つは、AF_INET と他は、AF_INET6 を listen (接続を受け付ける) することをお勧めします。 また、ターゲットノードが IPv4 トラフィックを AF_INET6 ソケットにルートす るなら、悪意がある者が上に提示された複雑さをうまく利用することができて、 アクセス制御を迂回させることができることに注意するべきです。ユーザは、 IPv4 マップアドレスから AF_INET6 ソケットに接続する操作に注意したほうがよ いでしょう。 関連項目 ioctl(2), socket(2), sysctl(3), icmp6(4), intro(4), ip6(4), tcp(4), udp(4) 規格 Tatsuya Jinmei and Atsushi Onoe, An Extension of Format for IPv6 Scoped Addresses, インターネットドラフト, draft-ietf-ipngwg-scopedaddr format-02.txt, June 2000, 作業中の資料. 歴史 inet6 プロトコルインタフェースは、RFC2553 と RFC2292 で定義されています。 ここで説明された実装は、WIDE/KAME プロジェクトで登場しました。 バグ IPv6 のサポートは、インターネットプロトコルが発展するときの変更の影響を受 けやすいです。ユーザは、現在の実装の詳細に依存するべきではありませんが、 むしろエクスポートされたサービスに依存すべきです。 利用者が inet(4) と inet6 の両方をサポートする必要があるとき、ユーザは、 できる限り ``バージョン独立'' コードを実装ように勧められます。 FreeBSD 12.2 August 14, 2018 FreeBSD 12.2