我在跑步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 - 即:
- 我
nc -u -l 1194
在docker主机上启动。 - 我
nc -u <docker-host-ip> 1194
从另一个网络的另一台机器上启动。 - 我是
Hi
从后者的机器发送的。 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 进行连接,以防其中一个发生故障。但是没有成功。
有人知道这里的网络设置还可能有什么问题吗?