OpenVPNサーバーに接続するために新しいデバイスを設定しようとしています。新しいデバイスは、GUIなしのLinuxシステムです。デスクトップLinuxシステムから構成ファイルをエクスポートし、必要な変更を加えました。
デスクトップシステムはVPNに接続できます。ただし、新しいシステムは接続できません。ログはTLSハンドシェイクタイムアウトを報告します。サーバーには次の項目が表示されます。
TLS Error: cannot locate HMAC in incoming packet from ...
これは、クライアントがHMAC認証用に構成されていないが、サーバーがHMAC認証を必要とすることを示します。ただし、この構成は実行中であり、HMACキーが構成されているクライアントからエクスポートされます。クライアント構成は次のとおりです。
client
remote 'vpn.example.org'
ca 'ca.pem'
cert 'cert.pem'
key 'key.pem'
cipher AES-128-CBC
dev tun
proto udp
verify-x509-name 'vpn.example.org'
tls-auth 'hmackey.pem' 1
nobind
auth-nocache
script-security 2
persist-key
persist-tun
HMAC キーはすべてのシステムで同じです。何が問題なの?
答え1
背景情報:HMAC認証は追加のセキュリティ機能です。ハンドシェイクが発生する前に、クライアントは事前共有キーを使用して要求に署名する必要があります。要求に有効なHMAC署名がない場合、サーバーは要求を無視します。 UDP の場合、これはそのクライアントのトラフィックをブロックするファイアウォールと同じです。
私の場合、他のクライアントと比較した結果、新しいシステムの設定ファイルにその行がありません。
auth SHA256
これはLinuxデスクトップボックスからエクスポートされたファイルにはありませんが、Androidクライアント設定には表示されます。このオプションを追加した後、ハンドシェイクが機能しました(それ以外のエラーが発生するまで)。
結論:そうでない場合、auth
OpenVPNはHMAC認証を使用しないか、デフォルトのハッシュアルゴリズムに置き換えられます(まだどのような場合がわかりませんでした)。いずれにしてもHMACの不一致が発生し、サーバーがクライアント要求を削除する可能性があります。
私機能要件tls-auth
プロジェクトは指定されているが指定されていない場合は警告を表示しますauth
。