OpenVPN のログ行は同じ言葉で始まりますが、問題を報告するのはそのうちの一方だけです。Could not determine IPv4/IPv6 protocol. Using AF_INET はフォールバックの通知です。プロファイルがアドレスファミリを未指定のままにしたため、デーモンが一方を選んで続行しました。失敗側の分岐は、ソケットが作成されなかったと報告し、再起動を求めます。共通の前置きより後ろの内容が両者を分けます。何かを変える前に、その先を読んでください。

フォールバックの通知が示すもの

OpenVPN は proto udp4 や proto udp6 で明示的なファミリを受け付け、起動時にファミリを導出する場合は proto udp も受け付けます。後者の場合、デーモンはローカルのバインド情報を調べて選択します。

その導出が機能すると、警告はどちらに進んだかを示し、プロセスはソケットの作成へ進みます。デュアルスタックのホストで proto udp を使うサーバーは、この方法で IPv4 になることがよくあります。その経路にエラーはなく、攻撃やウェブサーバーの欠落やアカウントの拒否を示すものでもありません。この行が役立つのは、後続の確認をここで示されたファミリと比較すべきだからです。

これは一つの問いへの答えとして扱い、診断として扱わないでください。このプロセスがどのファミリを選んだかを示すだけで、クライアントが接続できない理由については何も示しません。

失敗側の分岐の見え方

同じソケットのコードの後半には、ソケットがまったく存在しない分岐があります。短いアドレスファミリのメッセージを記録し、続行するものが何も残っていないため再起動を求めます。冒頭の言葉はフォールバックと一致しますが、結果は一致しません。

その後に続く内容で見分けてください。デーモンが動き続けてリスナーを報告するなら、その行は情報でした。ループで終了や再起動を繰り返すなら、話はバインドのことです。

grep での一致も分岐の特定ではありません。この表現はローテーションされた要約や折り返された行、人が又聞きで貼り付けたログの抜粋にも現れるため、単一の一致ではなく前後の行とタイムスタンプの順序を読んでください。

警告ではなくリスナーを確認する

稼働中のサーバーは、ログの文言から推測することなく、ファミリの問いに直接答えます。

ss -lunp | grep openvpn
ss -ltnp | grep openvpn

ファミリ、アドレス、ポートをプロファイルと照合します。0.0.0.0:1194 の行は IPv4 のみですが、デュアルスタックのホストでは [::]:1194 の行が bindv6only の設定次第で両方のファミリを受け付けることがあります。プロファイルが udp で、ソケットが IPv4 の場合、リゾルバーが AAAA レコードだけを返すクライアントは トンネルが交渉される前に失敗します。

次に、利用者に似たクライアントから試してください。同じリゾルバーの経路、同じ種類のネットワークです。サーバーからのローカル接続は、NAT 装置や別ファミリ向けに書かれたファイアウォール規則を通過するトラフィックについて、ほとんど何も証明しません。

ファミリを固定するのが正しい場合

proto udp4 を固定するのは IPv4 のみの配備に向いています。A だけの DNS 名、一つの v4 アドレス向けのファイアウォール規則、v4 アドレスしか配らない事業者の背後にいるクライアントです。曖昧さがなくなり、次のログ行が予測可能になります。

同じ論法は IPv6 優先の環境では逆に働き、A だけのクライアント基盤の前に udp6 を置くのは自ら招いた停止です。無害な警告を黙らせるためだけにファミリを固定するのは、この誤りの典型的な形です。静かなログと引き換えに、接続できる相手を変えてしまったからです。

接続端点と、そこへ到達する必要のあるクライアントから選んでください。OpenVPN 2.6 のマニュアルは転送方式を文書化しており、メッセージはその選択の出力であって入力ではありません。

記録は狭く保つ

正確な行とタイムスタンプ、稼働中のプロファイルの実際の転送設定、カーネルが報告するソケット、そして失敗した次の段階を書いてください。この四項目で、メッセージが提起するほぼすべての問いが片付き、どれも無関係なサービスについての推測を必要としません。引き継ぎにも耐えますが、grep のスクリーンショットはそうではありません。

この警告と一緒に届くパッケージの提案は、エラーが欠落した実行ファイルを名指しするまで無関係です。

ifconfig が本当に存在しない場合、スクリプトがそれを呼び出したときにデーモンが名前を挙げて告げます。それは別途の調査に値します。AF_INET の行と欠落したユーティリティは別の失敗であり、警告が変わるか見るために何かを導入するのは、きれいなホストが乱れたホストになる道です。

関連記事