OpnSense路由器OpenVPN客户端连接超时问题排查求助
我按照教程在OpnSense路由器上配置了OpenVPN,做了一些小调整,但现在客户端始终无法连接,一直报超时。下面是我的详细配置和排查情况,希望能得到大家的帮助:
与原教程的配置差异
- 把本地端口改成了
1179 - IPv4隧道网段设为
10.79.0.0/24(我觉得这个应该是随便选的?) - 不得不关闭了“Redirect Gateway”选项——因为不关掉的话,“IPv4 Local Network”选项就会隐藏,而这个值必须设为我家内网的IP段(
192.168.1.0/24),不然VPN客户端连进来后没法访问内网,那VPN就没意义了对吧? - 额外开启了“DNS Servers”,设置为OpnSense路由器的内网IP,同时勾选了“Force DNS Cache Update”
详细配置信息
服务器端配置
dev ovpns1 verb 1 dev-type tun dev-node /dev/tun1 writepid /var/run/openvpn_server1.pid script-security 3 daemon keepalive 10 60 ping-timer-rem persist-tun persist-key proto udp cipher AES-128-CBC auth SHA512 up /usr/local/etc/inc/plugins.inc.d/openvpn/ovpn-linkup down /usr/local/etc/inc/plugins.inc.d/openvpn/ovpn-linkdown multihome client-disconnect "/usr/local/etc/inc/plugins.inc.d/openvpn/attributes.sh server1" tls-server server 10.79.0.0 255.255.255.0 client-config-dir /var/etc/openvpn-csc/1 username-as-common-name auth-user-pass-verify "/usr/local/etc/inc/plugins.inc.d/openvpn/ovpn_auth_verify user 'Local Database' 'false' 'server1'" via-env tls-verify "/usr/local/etc/inc/plugins.inc.d/openvpn/ovpn_auth_verify tls 'OpenVPN+Cert' 1" lport 1179 management /var/etc/openvpn/server1.sock unix push "route 192.168.1.0 255.255.255.0" push "dhcp-option DNS 192.168.1.1" push "register-dns" ca /var/etc/openvpn/server1.ca cert /var/etc/openvpn/server1.cert key /var/etc/openvpn/server1.key dh /usr/local/etc/dh-parameters.4096.sample tls-auth /var/etc/openvpn/server1.tls-auth 0 persist-remote-ip float topology subnet
客户端配置(通过Client Export导出)
dev tun persist-tun persist-key cipher AES-128-CBC auth SHA512 client resolv-retry infinite remote vpn.scubbo.org 1179 udp lport 0 verify-x509-name "C=US, ST=CA, L=Berkeley, O=Avril, emailAddress=scubbojj@gmail.com, CN=OpenVPN Cert" subject remote-cert-tls server auth-user-pass <ca> -----BEGIN CERTIFICATE----- REDACTED -----END CERTIFICATE----- </ca> <cert> -----BEGIN CERTIFICATE----- REDACTED -----END CERTIFICATE----- </cert> <key> -----BEGIN PRIVATE KEY----- REDACTED -----END PRIVATE KEY----- </key> <tls-auth> # # 2048 bit OpenVPN static key # -----BEGIN OpenVPN Static key V1----- REDACTED -----END OpenVPN Static key V1----- </tls-auth> key-direction 1
日志信息
服务器端日志
<27>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 91882 - [meta sequenceId="1"] event_wait : Interrupted system call (code=4)
<29>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 91882 - [meta sequenceId="2"] /usr/local/etc/inc/plugins.inc.d/openvpn/ovpn-linkdown ovpns1 1500 1621 10.79.0.1 255.255.255.0 init
<29>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 91882 - [meta sequenceId="3"] SIGTERM[hard,] received, process exiting
<28>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27558 - [meta sequenceId="4"] DEPRECATED OPTION: --cipher set to 'AES-128-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM). Future OpenVPN version will ignore --cipher for cipher negotiations. Add 'AES-128-CBC' to --data-ciphers or change --cipher 'AES-128-CBC' to --data-ciphers-fallback 'AES-128-CBC' to silence this warning.
<29>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27558 - [meta sequenceId="5"] OpenVPN 2.5.7 amd64-portbld-freebsd13.0 [SSL (OpenSSL)] [LZO] [LZ4] [MH/RECVDA] [AEAD] built on Jul 6 2022
<29>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27558 - [meta sequenceId="6"] library versions: OpenSSL 1.1.1q 5 Jul 2022, LZO 2.10
<28>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27799 - [meta sequenceId="7"] NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
<29>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27799 - [meta sequenceId="8"] TUN/TAP device ovpns1 exists previously, keep at program end
<29>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27799 - [meta sequenceId="9"] TUN/TAP device /dev/tun1 opened
<29>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27799 - [meta sequenceId="10"] /sbin/ifconfig ovpns1 10.79.0.1 10.79.0.2 mtu 1500 netmask 255.255.255.0 up
<29>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27799 - [meta sequenceId="11"] /usr/local/etc/inc/plugins.inc.d/openvpn/ovpn-linkup ovpns1 1500 1621 10.79.0.1 255.255.255.0 init
<28>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27799 - [meta sequenceId="12"] Could not determine IPv4/IPv6 protocol. Using AF_INET6
<29>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27799 - [meta sequenceId="13"] setsockopt(IPV6_V6ONLY=0)
<29>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27799 - [meta sequenceId="14"] UDPv6 link local (bound): [AF_INET6][undef]:1179
<29>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27799 - [meta sequenceId="15"] UDPv6 link remote: [AF_UNSPEC]
<29>1 2023-10-24T19:26:40-07:00 OPNsense.avril openvpn 27799 - [meta sequenceId="16"] Initialization Sequence Completed
注意:这些都是服务启动时的日志,之后我尝试连接时,服务器端完全没有新增日志记录。我注意到日志里有Could not determine IPv4/IPv6 protocol. Using AF_INET6这条,虽然看到有说法说这不是错误,但还是试着给服务器配置加了proto udp4并重启,结果连接还是同样失败。
客户端日志
[Oct 24, 2023, 19:33:47] OpenVPN core 3.6.7 mac x86_64 64-bit built on Nov 28 2022 04:35:53
⏎[Oct 24, 2023, 19:33:47] Frame=512/2048/512 mssfix-ctrl=1250
⏎[Oct 24, 2023, 19:33:47] UNUSED OPTIONS
1 [persist-tun]
2 [persist-key]
6 [resolv-retry] [infinite]
8 [lport] [0]
⏎[Oct 24, 2023, 19:33:47] EVENT: RESOLVE ⏎[Oct 24, 2023, 19:33:47] Contacting 23.93.75.229:1179 via UDP
⏎[Oct 24, 2023, 19:33:47] EVENT: WAIT ⏎[Oct 24, 2023, 19:33:47] UnixCommandAgent: transmitting bypass route to /var/run/agent_ovpnconnect.sock
{
"host" : "23.93.75.229",
"ipv6" : false,
"pid" : 87514
}
⏎[Oct 24, 2023, 19:33:47] Connecting to [vpn.scubbo.org]:1179 (23.93.75.229) via UDPv4
⏎[Oct 24, 2023, 19:33:57] EVENT: CONNECTION_TIMEOUT BYTES_OUT : 860
PACKETS_OUT : 10
CONNECTION_TIMEOUT : 1
⏎[Oct 24, 2023, 19:33:57] EVENT: DISCONNECTED ⏎[Oct 24, 2023, 19:33:59] Raw stats on disconnect:
BYTES_OUT : 860
PACKETS_OUT : 10
CONNECTION_TIMEOUT : 1
⏎[Oct 24, 2023, 19:33:59] Performance stats on disconnect:
CPU usage (microseconds): 39543785
Network bytes per CPU second: 21
Tunnel bytes per CPU second: 0
已做的调试步骤
- 域名/IP是否正确? 是的:在路由器上执行
curl ifconfig.io得到的IP,和客户端执行nslookup vpn.scubbo.org得到的IP完全一致。 - 防火墙规则是否正确? 我觉得是对的,按照教程配置的。另外在OpnSense的“Firewall > Log Files > Live View”里过滤“Action=Block”,也没看到和连接尝试相关的拦截记录。
现在实在找不到问题所在了,有没有大佬能帮忙分析下哪里出问题了?
备注:内容来源于stack exchange,提问作者scubbo

