ノートPCはTLSハンドシェイクの失敗を報告します。これは証明書の問題のように聞こえますが、実際にはそうでないことがほとんどです。Ethernetポートが二つあるNASでは、もっとも多い原因はパッケージが待ち受けていないアドレスを指したルーターの転送であり、クライアントのメッセージはどちらの場合も同じです。ケーブルが二本挿さっているというだけで、パッケージが二番目のポートで応答するわけではありません。誰かが証明書を再発行する前に、パケットがそもそもNASに届くことを証明してください。

クライアントが報告する内容と実際に起きたこと

OpenVPNクライアントのハンドシェイク失敗は包括的な表現です。証明書の不一致、トランスポートの不一致、別のポートで待ち受けているもの、何も届けなかった転送のすべてを含みます。だからこのメッセージは出発点としては役に立たず、確認としてだけ役に立ちます。セッションが確立しなかったという記述として扱い、それ以上に具体的な意味は持たせないでください。

ポートとバインド先アドレスという二つの事実が、パケットが届くかどうかを決めます。

何かを変える前に両方を書き留めてください。もっともらしい修正を誤った層に適用すると、十五分の問題が丸々半日になるからです。インターフェース、その上のアドレス、ポート、トランスポートを記録します。この四つの値が受信経路のすべてであり、次の節ではそれぞれがどこにあるかを説明します。

パッケージが待ち受けているアドレスを見つける

DSMはEthernetポートに番号を付け、それぞれが独自のアドレスを持ちます。VPN Serverの画面はOpenVPNサービスが使うインターフェースを示し、ネットワークパネルはそのインターフェースに設定されたアドレスを表示します。サービスの側から外へ向かってこの順に読み取ることで、使うべきだと想定したものではなく、実際に待ち受けているものを記述できます。

サービスは一つのアドレスにバインドします。両方のポートが接続され有効であることは、二番目のポートで応答する理由になりません。片方のインターフェースに固定アドレス、もう片方にDHCPアドレスがあると、似た二つの値ができ、一目で取り違えやすくなります。特に最後のオクテットだけが違う場合は顕著です。アドレスは記憶から打ち込まず、パネルからコピーしてください。そのうえでNAS側で、実際に何がポートにバインドされているかを確認します。

sudo ss -lunp | grep 1194

その出力が想定外のアドレスを示しているなら、転送は誤ったインターフェースを指しており、ここでの残りはすべて事務作業です。先へ進む前にルールを直してください。そうしないと、ルーターから一度も出なかったパケットのために証明書を調べることになります。

転送を直し、次にカウンターを見る

同じ外部ポートに対して二つ目を追加するのではなく、既存の転送ルールを編集します。ルーターの表では二つのルールが共存でき、勝つのは常に片方だけです。そのためデバッグの時間が、どちらが本物かという議論に変わります。内部アドレスをNASから読み取った値に合わせ、内部ポートはサービスが待ち受けているものに一致させてください。

DSMがそのアドレスをDHCPで受け取る場合は、先に予約を作成してください。リースの変更は、昨日まで動いていた転送を静かに壊します。

sudo tcpdump -i any -n udp port 1194

クライアントが接続を試みる前にキャプチャを開始し、現れたものの送信元アドレスを読んでください。何も現れない場合は、途中の何かが捨てています。転送、DSMのファイアウォール、宛先のインターフェースのいずれかであり、その状態が続く限り証明書が原因にはなりません。クライアントの公開アドレスから応答なしで何かが届く場合は、NASが要求を受け取り、応答しないことを選んだという意味です。これは別の所見であり、二番目の場合だけがパッケージ自身の設定へ戻します。

そのとき初めて証明書とトランスポートを見る

パケットが届くようになったら、証明書を変更するたびにプロファイルを再エクスポートしてください。古いファイルは作成時の認証局をまだ保持しているからです。別のトランスポートを使うために手で編集したプロファイルは、存在しない待ち受け先でクライアントを待たせ、他のすべてと同じ一般的な失敗を報告します。プロファイル内のトランスポートと、パッケージが提供するよう設定されたトランスポートを比較してください。二つのトランスポートに二つのプロファイルは正当な設計ですが、両方のために一つを編集するのはそうではありません。

最後の手順として、自分のネットワークの外から試してください。LANの内側からの接続は、転送をまったく通らない経路で成功することがあるからです。

エクスポートしたプロファイル、インターフェースのアドレス、転送ルールを一つのメモにまとめてください。アドレスが変わったとき、そのメモが修正と再演の違いになります。この経路ではパッケージの再インストールは一度も必要ありませんでした。次の再起動のせいにされる前に、それを覚えておく価値があります。

関連記事