VPN がポートで何も返さないとき、考えられる二つの原因は正反対の修復を必要とします。プロセスがソケットを開いていないのか、ソケットは存在して機械の間の何かがパケットを止めているのか。この問いの前半はコマンド一つで決着するので、ファイアウォールの規則に触る前に置きます。以下の順序は、推測を増やすのではなく、手順ごとに説明を一つ消していきます。二つの間で当て推量をすることが、十分で終わる診断を一晩の作業に変えます。

サーバーにログインでき、クライアントがスキャナーではなく本物のプロファイルであると仮定します。どちらの前提も重要です。汎用のプローブでは、プロトコル固有の問いには答えられないからです。

ソケットはそもそも存在するか

まずサービス自身の証言から始めます。起動したかどうか、そしてもっと有用なのは最初の起動エラーが何だったかです。パース失敗、鍵の欠落、バインドエラーは、リスナーが存在すること自体を妨げます。しかもプロセスは十分に静かに終了しうるので、ステータス行の読み方は曖昧になります。active と報告するユニットは、それだけでは証拠になりません。メインプロセスが生きていても、ポートをバインドすべきコンポーネントがすでに諦めていることがあるからです。

systemctl status openvpn-server@server --no-pager
journalctl -u openvpn-server@server -n 30 --no-pager
ss -lunp

ソケットの一覧が、残りの診断が立脚する事実です。ポートだけでなくローカルアドレスの列を読んでください。ループバックへのバインドや誤ったインターフェースへのバインドは、その列に現れます。127.0.0.1 に存在するリスナーは完璧に動いており、それでもあなたのノート PC からは見えません。

ソケットはどのアドレスとアドレスファミリーで応答するか

二つの誤りはクライアント側からは同じに見え、多くの「到達できない」報告を説明します。ループバックアドレスにバインドされたサーバーは他の機械からの通信を決して受け付けず、IPv4 アドレスだけにバインドされたサーバーは同じホストの IPv6 アドレスにかけるクライアントに決して応答しません。ポリシーについて何かを仮定する前に、ソケット表のアドレスとクライアントが実際にかけているアドレスを一文字ずつ比べてください。

一覧を一つのポートに絞ると、ホストが複数のサービスを動かしているときも読みやすく保てます。sport フィルターは、試しているトランスポートとともにポートを取ります。

ss -lun 'sport = :51820'
ss -ltnp 'sport = :1194'

プロトコルの列が答えを丸ごと変える

ソケット表はポートだけでなくプロトコルでも引かれ、両者は独立した項目です。1194 番で TCP に応答するサービスは、UDP の 1194 番で何かが待ち受けているかについては何も語りません。クライアントは常にどちらか一方しか使いません。サーバー設定がどのトランスポートを選び、クライアントプロファイルがどちらを送るのかを確かめてから、その行を探してください。

UDP にはもう一つの癖があります。認証されていないプローブは、サービスが答える義務のあるエラーではありません。ポートを無応答と報告するスキャンは、サービスの可用性ではなく節度を測っただけなので、本物のクライアントとプロファイルで試してください。

試行は一度、見る場所は三つ

承認済みのクライアントから試行をちょうど一度だけ行い、時刻を秒まで書き留めます。そのうえで同じ時間帯について三つの情報源を読みます。プロバイダーのネットワーク規則かコンソール、ホストのファイアウォールのカウンターかログ、サービス自身のログです。一度だけ行うことが三つの証言を比較可能にし、誰も時刻を記録していない試行を繰り返すより安く済みます。

二つの結果は逆方向を指します。パケットがホストに届いていないなら、経路がそれを落としており、リスナーは無関係です。パケットがソケットに届いてサービスが拒否したなら、経路は正常で、答えはプロトコル、暗号、資格情報の側にあります。すでに接続を受け付けたサービスのためにポートを開けると、次の診断は易しくならず難しくなります。

規則を変える前に段階を名づける

交渉が始まり認証が失敗するのは一つの障害であり、転送が滞ったままトンネルが確立するのはまったく別の障害です。先に段階を名づけることで、修復は狭く保たれます。資格情報の問題はファイアウォールの規則では直らず、データ経路の問題は再起動では直りません。

問いに答える最も狭い診断を使ってください。管理者の管理下で一つのポートのパケットを一時的に観察するのは妥当な手段です。ファイアウォール全体を止めるのはそうではありません。結果を何に帰すのかが不可能になるからです。ss のドキュメントは上で使ったフィルターを扱っており、どんなキャプチャより安い最初の一歩です。二つの枝のどちらを証明したかを記録すれば、次の発生は既知の答えから始まります。

関連記事