strongSwan vips: IKEv2 に仮想アドレスを要求する
vips は内部 IKEv2 アドレスを要求し、ゲートウェイが何を付与するかを決めます。要求を設定して読み込み、応答側が実際に割り当てたものを確認します。
あなたの IKEv2 クライアントはゲートウェイに内部アドレスを要求でき、何を返すかはゲートウェイが決めます。strongSwan ではその要求が vips 設定であり、特定のアドレスを書き込んでも要求のままです。以下の手順は要求を設定し、読み込み、返ってきたものを読むものです。この三つの手順はそれぞれ違う形で失敗するからです。どれも、強く入力すれば短くなるわけではありません。
vips が要求するもの、約束できないもの
vips は接続定義の中に属し、応答側に仮想アドレスを要求します。strongSwan の仮想アドレスガイドは、応答が別のアドレスになることも、まったく何もないこともあると明言しています。人が値を書いて、それが現れると期待するときに飛ばしてしまうのが、まさにこの一文です。要求する価値は依然としてあります。確認するのは応答だからです。この設定は結果の構成ではなく、尋ねるための指示として扱ってください。
0.0.0.0 を要求すると、利用可能な任意の IPv4 仮想アドレスを要求することになり、正確な値が問題にならないときは通常これで正しいです。特定のアドレスを要求するのはゲートウェイへのヒントであり、要求ではありません。
swanctl の断片とその置き場所
設定は接続ブロックの内側にあり、専用ファイルでも OS プロファイルでもありません。この切り離された断片が形を示しています:
connections {
net {
local_addrs = 192.0.2.10
remote_addrs = 203.0.113.5
vips = 10.77.0.31
children {
net { local_ts = dynamic remote_ts = 10.77.0.0/24 }
}
}
}
接続を所有するファイルで読み込み、次に接続を開始して結果を読みます。間違ったセクションに貼り付けた断片は、解析エラーを出すか、さらに悪いことに、意図した要求なしで読み込まれる接続を作ります。三つのコマンドを順に実行し、出力を保存してください。
swanctl --load-all --file /etc/swanctl/swanctl.conf
swanctl --initiate --child net
swanctl --list-sas
local_ts はトラフィックを選び、アドレスを作らない
local_ts は子 SA が保護するトラフィックの集合を指定します。インターフェースにアドレスを置くものではありません。仮想 IP がネゴシエートされると、strongSwan は既定の動的セレクターを使わず、付与されたアドレスを使います。セレクターを文字どおりのアドレスに固定すると、ゲートウェイが付与していないかもしれないものを主張することになり、そのため障害は、トラフィックがどこにも行かないのに SA は動作しているように見えます。セレクターはトラフィックを記述し、割り当てはもう一方の交換から来ます。
安定した内部アドレスを得るもう一つの方法は、それをローカルで所有することです。トンネルが上がる前にアドレスをインターフェースに置き、セレクターを既存のものに向け、ピアとルートをその周りに整えます。
その設計では何もネゴシエートされないので何も再割り当てできず、取引はアドレス付けの作業を自分でする代わりに決定性を得ることです。これは vips の変種ではなく別の仕組みであり、だからこそ二つを一つの接続で混ぜるべきではありません。ネゴシエートされたアドレスの隣に固定したセレクターを置くと、ゲートウェイが別のものを配るまで動く接続になります。
応答側が実際に割り当てたものを確認する
ゲートウェイが付与したアドレスについて SA の一覧を読み、そのアドレスがインターフェース上に存在することを確認します。二つが食い違うなら、トンネルは上がっているのにトラフィックは思った場所へ行っていません。インターフェースに決して届かない付与アドレスは、この手順で最も混乱する障害です。どちらの半分も単独では正しく見えるからです。
メモには四つのアドレスを分けて残してください。要求した内部アドレス、付与されたアドレス、マシンの LAN アドレス、そしてウェブサイトが報告する公開出口です。これらは別の層に属し、別の場所に現れます。四つとも記録した手順書なら、他の人がどのアドレスを指したのか尋ねずに追えます。再読み込みのたびに読み直してください。付与された値だけが、生きているトンネルを説明するからです。
静的設計は別に保つ
固定の内部アドレスが必要なら、ゲートウェイ側で予約を整え、クライアントの要求は要求のままにしておきます。固定したセレクターとネゴシエートされたアドレスを混ぜると、ゲートウェイが別のものを割り当てるまで動く接続になります。予約のルールは接続の隣に書き留めてください。同僚が設定ファイルから推測できない部分だからです。そうすれば新しいクライアントはルールを再発見せずに受け継ぎます。
内蔵の Mac クライアントには、これらのオプション名はどれも存在しません。ゲートウェイが提供する割り当てや予約と、運営者が公開するプロファイルを使い、割り当てを読み返すまではクライアント側の値をヒントとして扱ってください。ロールバックは vips の行を削除して再読み込みすることで、ゲートウェイが既定で割り当てる状態に戻ります。