DockOvpn:TLS 密钥协商超时

DockOvpn:TLS 密钥协商超时

我在跑步alekslitvinenk/openvpn(又名“码头Ovpn") 内容如下docker-compose.yaml

version: '3'

volumes:
    dockovpn:

networks:
    frontend:

services:
    dockovpn:
        image: alekslitvinenk/openvpn
        container_name: dockovpn
        restart: always
        cap_add:
            - NET_ADMIN
        ports:
            - '1194:1194/udp'
        networks:
            - frontend
        volumes:
            - dockovpn:/opt/Dockovpn_data
        command:
            - --regenerate

一切运行良好 - 但最近一段时间以来,OpenVPN 客户端无法再连接。以下是 OpenVPN 客户端日志中的最后几行:

Wed May  1 15:53:41 2024 UDPv4 link local: (not bound)
Wed May  1 15:53:41 2024 UDPv4 link remote: [AF_INET]xxx:1194
Wed May  1 15:53:41 2024 MANAGEMENT: >STATE:1714575221,WAIT,,,,,,
Wed May  1 15:53:42 2024 MANAGEMENT: >STATE:1714575222,AUTH,,,,,,
Wed May  1 15:53:42 2024 TLS: Initial packet from [AF_INET]xxx:1194, sid=3053ee6a 64729182
Wed May  1 15:53:42 2024 VERIFY OK: depth=1, CN=Easy-RSA CA
Wed May  1 15:53:42 2024 VERIFY KU OK
Wed May  1 15:53:42 2024 Validating certificate extended key usage
Wed May  1 15:53:42 2024 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
Wed May  1 15:53:42 2024 VERIFY EKU OK
Wed May  1 15:53:42 2024 VERIFY OK: depth=0, CN=MyReq
Wed May  1 15:54:41 2024 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Wed May  1 15:54:41 2024 TLS Error: TLS handshake failed
Wed May  1 15:54:41 2024 SIGUSR1[soft,tls-error] received, process restarting
Wed May  1 15:54:41 2024 MANAGEMENT: >STATE:1714575281,RECONNECTING,tls-error,,,,,
Wed May  1 15:54:41 2024 Restart pause, 128 second(s)

由于某种原因,我在 TLS 密钥协商期间超时。这表明存在防火墙问题,但防火墙中为 docker 主机打开了端口 1194 UDP(一如既往)。初始连接似乎确实有效 - 只是 TLS 握手超时(除非我误解了日志输出)。

我尝试恢复旧版本的 DockOvpn,以防容器更新破坏功能。但这似乎与版本没有直接关系。

为了确认 UDP 端口确实打开,我使用了 netcat - 即:

  1. nc -u -l 1194在docker主机上启动。
  2. nc -u <docker-host-ip> 1194从另一个网络的另一台机器上启动。
  3. 我是Hi从后者的机器发送的。
  4. Hi出现在docker主机上。

我也确认过

docker container ls --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}" -a

端口 1194 上的 UDP 流量被转发到正确的容器:

CONTAINER ID   NAMES                    PORTS
e59843152f14   dockovpn                 0.0.0.0:1194->1194/udp, :::1194->1194/udp, 8080/tcp

(端口8080没有故意暴露)。OpenVPN 客户端配置文件如下所示(无密钥):

client
dev tun
proto udp
resolv-retry infinite
nobind
persist-key
persist-tun
cipher AES-256-GCM
auth SHA512
verb 3
tls-client
tls-version-min 1.2
key-direction 1
remote-cert-tls server
remote example.com 1194

我还尝试过从 3 个之前可以正常工作的 ISP 进行连接,以防其中一个发生故障。但是没有成功。

有人知道这里的网络设置还可能有什么问题吗?

相关内容