日本語 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.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
SETKEY(8) FreeBSD システム管理者マニュアル SETKEY(8) 名称 setkey -- IPsec SA/SP データベースを手動で操作する 書式 setkey [-v] -c setkey [-v] -f filename setkey [-Pgltv] -D setkey [-Pv] -F setkey [-h] -x 解説 setkey ユーティリティは、カーネルのセキュリティポリシデータベース (Secu rity Policy Database; SPD) エントリと同様にセキュリティ関連のデータベース (Security Association Database; SAD) エントリを追加するか、更新するか、ダ ンプするか、またはフラッシュします。 setkey ユーティリティは、(-c を付けて呼び出されるなら) 標準入力から、また は (-f filename を付けて呼び出されるなら) 指定されたファイル filename か ら一連の操作を行います。 -D SAD エントリをダンプします。-P が付けられるなら、SPD エントリがダ ンプされます。 -F SAD エントリをフラッシュします。-P が付けられるなら、SPD エントリ がフラッシュされます。 -g グローバルな範囲がある SPD エントリだけが -D と -P フラグでダンプ されます。 -t ifnet 範囲がある SPD エントリだけが、-D と -P フラグでダンプされ ます。そのような SPD エントリは、対応する if_ipsec(4) 仮想トンネ ル化インタフェースにリンクされます。 -h -x モードで、16 進数のダンプを追加します。 -l -D によって短い出力で永久にループします。 -v 冗長にします。プログラムは、他のプロセスからカーネルに送られた メッセージを含んで、PF_KEY ソケットで交換されたメッセージをダンプ します。 -x 永久にループして、PF_KEY ソケットに送られたすべてのメッセージをダ ンプします。-xx は、各タイムスタンプを書式化しないようにします。 設定構文 コマンド行に -c または -f を付けると、setkey は、次の設定構文を受けつけま す。ハッシュ記号 (`#') で始まる行は、コメント行として扱われます。 add [-46n] src dst protocol spi [extensions] algorithm ... ; SAD エントリを追加します。add は、鍵の長さが、指定されたアルゴリ ズムと一致しないときを含んで、複数の理由で失敗します。 get [-46n] src dst protocol spi ; SAD エントリを表示します。 delete [-46n] src dst protocol spi ; SAD エントリを削除します。 deleteall [-46n] src dst protocol ; 指定と一致するすべての SAD エントリを削除します。 flush [protocol] ; オプションによって一致しているすべての SAD エントリをクリアしま す。コマンド行の -F は、同じ機能を達成します。 dump [protocol] ; オプションと一致しているすべての SAD エントリをダンプします。コマ ンド行の -D は、同じ機能を達成します。 spdadd [-46n] src_range dst_range upperspec policy ; SPD エントリを追加します。 spddelete [-46n] src_range dst_range upperspec -P direction ; SPD エントリを削除します。 spdflush ; すべての SPD エントリをクリアします。コマンド行の -FP は、同じ機 能を達成します。 spddump ; すべての SPD エントリをダンプします。コマンド行の -DP は、同じ機 能を達成します。 メタ引数は、次の通りです: src dst 安全な通信の発信元/宛先は、IPv4/v6 アドレスとして指定されます。 setkey ユーティリティは、FQDN を数値アドレスに分解することができ ます。FQDN が複数のアドレスに分解するなら、setkey は、すべての指 定できる組み合わせを試みることによって、カーネルへの複数の SAD/SPD エントリをインストールします。-4, -6 と -n は、特定の方法 で FQDN のアドレス解決を制限します。-4 と -6 は、それぞれ、結果を IPv4/v6 アドレスのみに制限します。-n は、FQDN 解決を回避して、数 値アドレスとなるアドレスを必要とします。 protocol protocol は、次の 1 つです: esp rfc2406 に基づく ESP esp-old rfc1827 に基づく ESP ah rfc2402 に基づく AH ah-old rfc1826 に基づく AH ipcomp IPComp tcp rfc2385 に基づく TCP-MD5 spi SAD と SPD のためのセキュリティパラメータインデックス (SPI)。spi は、10 進の数、または `0x' 接頭辞がある 16 進数でなければなりませ ん。0 から 255 までの SPI 値は、IANA によって将来の使用のために予 約され、それらは、使用することができません。 extensions 次のいくつかを解釈します: -m mode 使用のためのセキュリティプロトコルモードを指定しま す。mode は、次の 1 つです: transport, tunnel または any。デフォルト値は、any です。 -r size 繰り返ししないウィンドウのオクテットのビットマップサ イズを指定します。size は、32 ビット符号なし整数であ り、その値は、パケットの繰り返ししないウィンドウのサ イズの 1/8 です。size が 0 であるか、または指定されな いなら、繰り返ししないチェックは、行われません。 -u id SPD のポリシエントリの識別子を指定します。policy を参 照してください。 -f pad_option ESP パディングの内容を定義します。pad_option は、次の 1 つです: zero-pad パディングのすべては、0 です。 random-pad 一連のランダム化された値が、設定されま す。 seq-pad 1 から始まる一連のシーケンシャルに増加す る数が、設定されます。 -f nocyclic-seq 周期的なシーケンス番号を許可しません。 -lh time -ls time SA のハード/ソフトの存続期間を指定します。 algorithm -E ealgo key ESP のための暗号化アルゴリズム ealgo を指定します。 -E ealgo key -A aalgo key ESP のためのペイロード認証アルゴリズム aalgo と同様に 暗号化アルゴリズム ealgo を指定します。 -A aalgo key AH のための認証アルゴリズムを指定します。 -C calgo [-R] IPComp のための圧縮アルゴリズムを指定します。-R が指 定されるなら、spi フィールド値は、そのままワイヤ (wire) で IPComp CPI (圧縮パラメータインデックス) と して使用されます。-R が指定されないなら、カーネルは、 ワイヤで良く知られた CPI を使用し、spi フィールドは、 カーネル内部の利用のためのインデックスとしてのみ使用 されます。 key は、ダブルクォートで囲まれた文字列、または `0x' に先導される 一連の 16 進数でなければなりません。 ealgo, aalgo と calgo のために指定できる値は、個別のセクションで 指定されます。 src_range dst_range これらは、IPv4/v6 アドレスまたは IPv4/v6 アドレス範囲として指定さ れる安全な通信の選択であり、それは、TCP/UDP ポート指定に付随しま す。これは、次の形式を解釈します: address address/prefixlen address[port] address/prefixlen[port] prefixlen と port は、10 進の数でなければなりません。port のまわ りの角括弧は、必要で、マニュアルページのメタ文字ではありません。 FQDN の解決について、src と dst に適用可能な規則は、同様に、ここ で適用します。 upperspec 使用される上位層プロトコル。利用者は、icmp6, ip4 または any と同 様に、upperspec として、/etc/protocols の単語の 1 つを使用するこ とができます。単語 any は、``あらゆるプロトコル'' を表します。ま た、プロトコル番号は、upperspec を指定するために使用されます。ま た、ICMPv6 に関連するタイプとコードは、upperspec として指定されま す。タイプは、最初に指定され、コンマが続いて、次に、関連するコー ドが指定されます。仕様は、icmp6 の後に置かれなければなりません。 カーネルは、ワイルドカードを 0 と見なしますが、ワイルドカードと 0 の ICMPv6 タイプを区別することができません。次の例は、IPSec が着 信 Neighbor Solicitation (近隣要請) に対して必要でないポリシを示 します: spdadd ::/0 ::/0 icmp6 135,0 -P in none; 注: upperspec は、現時点では、実装されていない転送ノードで、特別 の再構築を必要とするので、この時点での転送の場合に動作しません。 /etc/protocols には、多くのプロトコルがありますが、TCP 以外のプロ トコル、UDP と ICMP は、IPsec と共に使用することは、適切ではあり ません。 policy policy は、次の 3 つの形式の 1 つで表されます: -P direction discard -P direction none -P direction ipsec protocol/mode/src-dst/level [...] ポリシの指示は、次の 1 つで指定されなければなりません: out, in, discard, none または ipsec です。discard 指示は、供給されたイン デックスにマッチするパケットが捨てられることを意味し、一方 none は、IPsec 操作がパケットで行われないことを意味し、ipsec は、IPsec 操作がパケットで行われることを意味します。protocol/mode/src- dst/level 文は、パケットを処理するための規則を与えます。protocol は、ah, esp または ipcomp として指定されます。mode は、transport または tunnel のいずれかです。mode が tunnel であるなら、利用者 は、アドレスの間にダッシュ `-' を付けて、src と dst として SA の エンドポイントアドレスを指定しなければなりません。mode が transport であるなら、src と dst の両方は、省略することができま す。level は、次の 1 つです: default, use, require または unique。 SA がすべてのレベルで利用可能でないなら、カーネルは、鍵 交換デーモンから SA を要求します。default の値は、システム全体の デフォルトプロトコルを使用するようにカーネルに伝えます、例えば、 カーネルがパケットを処理するとき、esp_trans_deflev sysctl 変数か らのものです。use の値は、それが利用可能であるなら、カーネルが SA を使用することを意味し、そうでなければ、カーネルは、通常のように パケットを通過します。require の値は、カーネルがポリシにマッチす るマッチされたパケットを送信するときは、いつも、SA が必要とされる ことを意味します。unique レベルは、require と同じですが、さらに、 ポリシは、ユニークな外向きの SA とバインドできます。例えば、利用 者がポリシレベル unique, を指定するなら、racoon(8) は、ポリシのた めに SA を設定します。そのポリシのために手動のキュー入力によって SA を設定するなら、次の例のように、コロン `:' によって区切られた unique の後のポリシ識別子として 10 進数を置くことができます: unique:number。 SA に、このポリシをバインドするために、number は、手動の SA 設定の extensions -u 対応する、1 と 32767 の間でな ければなりません。 SA バンドルを使用したいとき、利用者は、複数の規則を定義することが できます。例えば、IP ヘッダに、AH ヘッダ、ESP ヘッダ、上位層のプ ロトコルヘッダが続くなら、規則は、次のようになるでしょう: esp/transport//require ah/transport//require; 規則の順序は、非常に重要です。 ``discard'' と ``none'' は、ipsec_set_policy(3) に説明された構文 ではないことに注意してください。構文に小さいけれども、重要な違い があります。詳細については、ipsec_set_policy(3) を参照してくださ い。 アルゴリズム 次のリストは、サポートされたアルゴリズムを示しています。protocol と algorithm は、ほとんど完全に直交しています。protocol パラメータの -A aalgo の aalgo として認証アルゴリズムの次のリストを使用することができま す: アルゴリズム 鍵の長 (ビット) コメント hmac-md5 128 ah: rfc2403 128 ah-old: rfc2085 hmac-sha1 160 ah: rfc2404 160 ah-old: 128bit ICV (文書なし) keyed-md5 128 ah: 96bit ICV (文書なし) 128 ah-old: rfc1828 keyed-sha1 160 ah: 96bit ICV (文書なし) 160 ah-old: 128bit ICV (文書なし) null 0 から 2048 デバッグのため hmac-sha2-256 256 ah: 128bit ICV (RFC4868) 256 ah-old: 128bit ICV (文書なし) hmac-sha2-384 384 ah: 192bit ICV (RFC4868) 384 ah-old: 128bit ICV (文書なし) hmac-sha2-512 512 ah: 256bit ICV (RFC4868) 512 ah-old: 128bit ICV (文書なし) hmac-ripemd160 160 ah: 96bit ICV (RFC2857) ah-old: 128bit ICV (文書なし) aes-xcbc-mac 128 ah: 96bit ICV (RFC3566) 128 ah-old: 128bit ICV (文書なし) tcp-md5 8 to 640 tcp: rfc2385 次は、protocol パラメータの -E ealgo の ealgo として使用することができる 暗号化アルゴリズムのリストです: アルゴリズム 鍵の長 (ビット) コメント des-cbc 64 esp-old: rfc1829, esp: rfc2405 3des-cbc 192 rfc2451 null 0 to 2048 rfc2410 blowfish-cbc 40 to 448 rfc2451 cast128-cbc 40 to 128 rfc2451 des-deriv 64 ipsec-ciph-des-derived-01 rijndael-cbc 128/192/256 rfc3602 aes-ctr 160/224/288 draft-ietf-ipsec-ciph-aes-ctr-03 aes-gcm-16 160/224/288 rfc4106 camellia-cbc 128/192/256 rfc4312 aes-ctr または aes-gcm-16 のための鍵の最初の 128/192/256 ビットは、AES 鍵 として使用され、残りの 32 ビットは、nonce (使い捨て乱数データ) として使用 されることに注意してください。 次は、protocol パラメータの -C calgo の calgo として使用することができる 暗号化アルゴリズムのリストです: アルゴリズム コメント deflate rfc2394 終了ステータス ユーティリティ setkey は、成功すると 0 で、エラーがあった場合は >0 で終了 します。 使用例 des-cbc 暗号化アルゴリズムを使用して、2 つの IPv6 アドレスの間の ESP SA を追加します。 add 3ffe:501:4819::1 3ffe:501:481d::1 esp 123457 -E des-cbc 0x3ffe05014819ffff ; 指定された 2 つの FQDN のホストの間の認証 SA を追加します: add -6 myhost.example.com yourhost.example.com ah 123456 -A hmac-sha1 "AH SA configuration!" ; 指定された 2 つの数値のホストの間の ESP と AH の両方を使用します: add 10.0.11.41 10.0.11.33 esp 0x10001 -E des-cbc 0x3ffe05014819ffff -A hmac-md5 "authentication!!" ; 上記の最初の例に関連している SA 情報を取得します。 get 3ffe:501:4819::1 3ffe:501:481d::1 ah 123456 ; データベースからすべてのエントリをフラッシュします: flush ; データベースから ESP エントリをダンプします: dump esp ; トンネルモードの ESP を使用する 2 つのネットワークの間のセキュリティポリ シを追加します: spdadd 10.0.11.41/32[21] 10.0.11.33/32[any] any -P out ipsec esp/tunnel/192.168.0.1-192.168.1.2/require ; 指定された 2 つの数値ホストの間の TCP MD5 を使用します: add 10.1.10.34 10.1.10.36 tcp 0x1000 -A tcp-md5 "TCP-MD5 BGP secret" ; add 10.1.10.36 10.1.10.34 tcp 0x1001 -A tcp-md5 "TCP-MD5 BGP secret" ; 関連項目 ipsec_set_policy(3), if_ipsec(4), racoon(8), sysctl(8) Changed manual key configuration for IPsec, October 1999, http://www.kame.net/newsletter/19991007/. 歴史 setkey ユーティリティは、WIDE Hydrangea IPv6 プロトコルスタックキットでは じめて登場しました。ユーティリティは、1998 年 6 月に、完全に再設計されま した。それは、FreeBSD 4.0 ではじめて登場しました。 バグ setkey ユーティリティは、構文エラーをよりよく報告し、処理するべきです。 IPsec ゲートウェイ設定について、TCP/UDP ポート番号がある src_range と dst_range は、ゲートウェイが (上位層のヘッダを検査できない) パケットを再 構築しないので、動作しません。 FreeBSD 11.4 April 9, 2017 FreeBSD 11.4