OpenVpn 无法通过 TCP 连接

OpenVpn 无法通过 TCP 连接

我使用 TCP 创建了一个 OpenVpn 服务器,但客户端无法连接并收到此错误

服务器轮询超时,正在尝试下一个远程输入...

但UDP运行完美。

这是服务器的配置:

local a.b.c.d
port 8889
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
server-ipv6 x:1194:1194:1194::/64
push "redirect-gateway def1 ipv6 bypass-dhcp"
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
verb 3
crl-verify crl.pem

这是客户端的配置:

setenv UV_ID a1b1c72e424746b4878b287f80ec92a9
setenv UV_NAME autumn-forest-5919
client
dev tun
dev-type tun
remote x.x.x.x 8889 tcp-client
nobind
persist-tun
cipher AES-128-CBC
auth SHA1
verb 2
mute 3
push-peer-info
ping 10
ping-restart 60
hand-window 70
server-poll-timeout 4
reneg-sec 2592000
sndbuf 393216
rcvbuf 393216
remote-cert-tls server
comp-lzo no
auth-user-pass
key-direction 1
<ca>
-----BEGIN CERTIFICATE-----
X
-----END CERTIFICATE-----
</ca>
<tls-auth>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
X
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
X
-----END PRIVATE KEY-----
</key>

这是我尝试使用 TCP 连接到 OpenVpn 时遇到的错误:

[thawing-skies-7547] TCP connection established with [AF_INET6]::ffff:x.x.x.x:15112 
[thawing-skies-7547] Sun Sep 25 14:35:20 2022 x.x.x.xTLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity) 
[thawing-skies-7547] Sun Sep 25 14:35:20 2022 x.x.x.xTLS Error: TLS handshake failed 
[thawing-skies-7547] Sun Sep 25 14:35:20 2022 x.x.x.xFatal TLS error (check_tls_errors_co), restarting

我提到我从服务器上删除了 IPv6 但仍然出现此错误!

[autumn-meadow-1825] Sun Sep 25 18:34:14 2022 TCP connection established with [AF_INET]x.x.x.x:13731
[autumn-meadow-1825] Sun Sep 25 18:34:24 2022 x.x.x.x:13506 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
[autumn-meadow-1825] Sun Sep 25 18:34:24 2022 x.x.x.x:13506 TLS Error: TLS handshake failed
[autumn-meadow-1825] Sun Sep 25 18:34:24 2022 x.x.x.x:13506 Fatal TLS error (check_tls_errors_co), restarting

我安装了 pritunl 并将端口设置为 8889,但 TCP 仍然尝试连接到其他端口!

我想从另一个 VPS 转发 OpenVpn 端口,但 UDP 端口无法转发,所以我必须使用 TCP。

有什么解决办法吗?

===========更新=============

我使用普通的 openvpn 服务器更改了 /etc/openvpn/server/server.conf:

local x.x.x.x
port 8889
proto tcp-server
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "block-outside-dns"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
verb 3
crl-verify crl.pem

仍然有同样的错误

正常的openvpn客户端.ovpn:

client
dev tun
proto tcp-client
remote x.x.x.x 8889
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
verb 3
<ca>
-----BEGIN CERTIFICATE-----
X
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
X
-----END PRIVATE KEY-----
</key>
<tls-crypt>
-----BEGIN OpenVPN Static key V1-----
X
-----END OpenVPN Static key V1-----
</tls-crypt>

openvpn --版本

OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Mar 22 2022
library versions: OpenSSL 1.1.1  11 Sep 2018, LZO 2.08
Originally developed by James Yonan
Copyright (C) 2002-2017 OpenVPN Technologies, Inc. <[email protected]>
Compile time defines: enable_async_push=no enable_comp_stub=no enable_crypto=yes enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=needless enable_fragment=yes enable_iproute2=yes enable_libtool_lock=yes enable_lz4=yes enable_lzo=yes enable_maintainer_mode=no enable_management=yes enable_multihome=yes enable_pam_dlopen=no enable_pedantic=no enable_pf=yes enable_pkcs11=yes enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_silent_rules=no enable_small=no enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=yes enable_werror=no enable_win32_dll=yes enable_x509_alt_username=yes with_aix_soname=aix with_crypto_library=openssl with_gnu_ld=yes with_mem_check=no with_sysroot=no

===========更新=============

我认为 Windows 或我的 ISP 网络中的 tls 存在问题,因为我使用 VPS 进行测试并且它成功连接,但我的桌面无法连接。如何在 openvpn 中禁用 TLS?

答案1

文档提供了一个 TCP 示例:

使用 UDP 只需添加

 proto udp

在客户端和服务器配置中。对于 TCP,服务器需要

proto tcp-server

并且客户要求

proto tcp-client

基本上,TCP 连接是定向的,而 UDP 连接则不是。您的语句proto tcp应该会引发错误 - 更改配置时始终值得检查错误。

答案2

首先,客户端和服务器之间的 TCP 连接是否正常?您可以通过简单地远程登录到服务器来测试它(确保 OpenVPN 服务器正在运行)。

如果无法连接,则不是 OpenVPN 的问题。您应该检查防火墙等。端口 8080 有时由 HTTP 服务使用,可能会被防火墙阻止或被透明 HTTP 代理拦截。如果您在端口 8080 上遇到 TCP 连接问题,请尝试其他端口,例如 IANA 为 OpenVPN 保留的端口 1194/tcp。

问候,詹姆斯

相关内容