昨日、自宅のサーバーにDebian 9とOpenVPNをインストールしましたが、すべてが問題なく機能していました( このガイド に従いました)。しかし、今朝、OpenVPNは機能していて(クライアント側)、突然何もロードされなくなりました。 VPNに再接続しようとしましたが、5分または10分間機能しましたが、何も起こりませんでした。
いくつかの調査を行い、コマンドsystemctl status openvpn@server
を使用してOpenVPNサーバーのステータスを確認したところ、次のメッセージが表示されました。
TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
TLS Error: TLS handshake failed
SIGUSR1[soft,tls-error] received, client-instance restarting
繰り返しますが、私はインターネットでこのエラーを調べましたが、何も問題を解決しませんでした。その間に、他に2つのエラーが発生しました。
TLS Error: local/remote TLS keys are out of sync
そして
Authenticate/Decrypt packet error: cipher final failed
これがTLSと関係があることは明らかですか?サーバーのta.key
とクライアント(Windows)のconfigフォルダーの両方にopenvpn --genkey --secret ta.key
で生成されたファイル/etc/openvpn/
があります。
Ufwを無効にしてみましたが、問題が解決しないため、ファイアウォールの問題ではないかと思います。とにかくufw status
の結果は次のとおりです。
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
1194/udp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
1194/udp (v6) ALLOW Anywhere (v6)
これが私が/etc/ufw/before.rules
に追加したものです:
*nat
:POSTROUTING ACCEPT [0.0]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
server.conf
(コメントなし):
port 1194
proto udp4
dev tun
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
Push "redirect-gateway def1 bypass-dhcp"
Push "dhcp-option DNS 82.196.9.45"
Push "dhcp-option DNS 89.46.223.237"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
max-clients 10
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1
そして最後にclient.ovpn
(コメントと証明書なし):
client
dev tun
proto udp4
remote [server-ip] 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3
<ca>
-----BEGIN CERTIFICATE-----
(...)
-----END CERTIFICATE-----
</ca>
<cert>
Certificate:
(...)
-----BEGIN CERTIFICATE-----
(...)
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
(...)
-----END PRIVATE KEY-----
</key>
どんな提案も歓迎します、ありがとう!
次のようにサーバーを再インストールしました this そしてすべてが問題なく動作しています
構成ファイル(サーバーではkey-direction
、クライアントでは0
)に1
を追加しなかったためだと思います。これは、構成で変更されたのはほとんど唯一のものだからです。
OpenVPNのTLS認証キーは 事前共有キー です。
must生成oneキーを作成し、同じキーをサーバーとクライアントにコピーします。
私が正しく理解していない限り、サーバーとクライアントの両方でそのキーを生成しました(つまり、2つの異なるキーです)。したがって、1つのキーを生成し、それを両方のシステムにコピーすると、ローカル/リモートキーが同期していないというエラーは発生しません。
先に進む、これはないあなたの場合の問題のようです。あなたがそれを間違った方法で使用したのは私の誤解です。
OpenVPNメーリングリストアーカイブ (私の強調)から:
このメッセージは、OpenVPNを[〜#〜] udp [〜#〜]モードで実行しているときに発生する可能性があります。これは、UDPがnotコネクション型であるため、簡単な方法はありません。接続の側で、反対側がダウンまたは再起動したことを確認します。このエラーはTCPモードで実行している場合はほとんど発生しません。TCPはクライアント/サーバーのセマンティクスと接続を強制するためです-リセットすると、接続のいずれかの側がダウンします。
注:以下は、具体的な参照/データがバックアップされていないステートメントです。
その引用と、OpenVPNが実行されているプロトコルとしてdp4を構成したという事実を考慮すると、それはbadのアイデアであるように思われます。 [〜#〜] tls [〜#〜]を[〜#〜] udp [〜#〜]と一緒に使用します。 TLSは安全なプロトコルであることが意図されているため、UDPが保証しない信頼性の高い接続が必要です。
信頼できるトランスポートプロトコル(TCP [TCP]など)の上に階層化された最下位レベルは、TLSレコードプロトコルです。
したがって、TLS doesは信頼できる接続を必要とするため、UDPは使用しないでください。
理由の詳細については、 セキュリティSEのこの回答 でも読むことができます。
から切り替えるだけです:
proto udp4
に:
proto tcp
OpenVPN構成で。
参考資料(詳細を読むため):
OpenVPN-tls-authの使用
OpenVPNメーリングリスト
OpenVPN HowTo-構成
セキュリティSE-TLSがTCPを必要とするのはなぜですか?
RFC 5246-TLSプロトコル
ウィキペディア-UDP