UDP 端口上的幽灵进程 - 地址已被使用(errno=98)

UDP 端口上的幽灵进程 - 地址已被使用(errno=98)

OpenVPN 服务器实例的启动序列陷入死锁。日志内容如下:

[...] ovpn-server[2311]: TCP/UDP: Socket bind failed on local address [AF_INET][undef]:<port>: Address already in use (errno=98)

启动很快失败。

现在,sudo lsof -i:<port>没有输出。

sudo netstat -tunlp |grep <port>然而,

udp        0      0 0.0.0.0:<port>           0.0.0.0:*                           -                   
udp6       0      0 :::<port>                :::*                                -

VPN 前一分钟还在运行,然后突然失效了。

但没有效果,我尝试重新启动 systemd 服务和操作系统(最新的 Raspbian OS)。

因此,虽然存在类似问题,但问题在于找到占用端口的东西。在我看来,它就像一个幽灵。

当显然没有进程在监听某个端口时,我该如何释放该端口?

仅供参考,OpenVPN 日志中的整个死锁循环:

Aug 11 22:53:54 blacked ovpn-server[3188]: TUN/TAP device tun0 opened
Aug 11 22:53:54 blacked ovpn-server[3188]: TUN/TAP TX queue length set to 100
Aug 11 22:53:54 blacked ovpn-server[3188]: /sbin/ip link set dev tun0 up mtu 1500
Aug 11 22:53:54 blacked ovpn-server[3188]: /sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255
Aug 11 22:53:54 blacked ovpn-server[3188]: Could not determine IPv4/IPv6 protocol. Using AF_INET
Aug 11 22:53:54 blacked ovpn-server[3188]: Socket Buffers: R=[180224->180224] S=[180224->180224]
Aug 11 22:53:54 blacked ovpn-server[3188]: TCP/UDP: Socket bind failed on local address [AF_INET][undef]:<port>: Address already in use (errno=98)
Aug 11 22:53:54 blacked ovpn-server[3188]: Exiting due to fatal error
Aug 11 22:53:54 blacked ovpn-server[3188]: Closing TUN/TAP interface
Aug 11 22:53:54 blacked ovpn-server[3188]: /sbin/ip addr del dev tun0 10.8.0.1/24

OpenVPN 的内容server.conf

dev tun
proto udp
port <port>
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/blacked_81f92bec-35b4-4b4a-93a9-3cec80a0019c.crt
key /etc/openvpn/easy-rsa/pki/private/blacked_81f92bec-35b4-4b4a-93a9-3cec80a0019c.key
dh none
ecdh-curve prime256v1
topology subnet
server 10.8.0.0 255.255.255.0
push <redacted>
push <redacted>
#Override the Client default gateway by using 0.0.0.0/1 and
# 128.0.0.0/1 rather than 0.0.0.0/0. This has the benefit of
# overriding but not wiping out the original default gateway.
#push "redirect-gateway def1"
client-to-client
client-config-dir /etc/openvpn/ccd
keepalive 15 120
remote-cert-tls client
tls-version-min 1.2
tls-crypt /etc/openvpn/easy-rsa/pki/ta.key
cipher AES-256-CBC
auth SHA256
user openvpn
group openvpn
persist-key
persist-tun
crl-verify /etc/openvpn/crl.pem
status /var/log/openvpn-status.log 20
status-version 3
syslog
verb 3
#DuplicateCNs allow access control on a less-granular, per user basis.
#Remove # if you will manage access by user instead of device. 
#duplicate-cn
# Generated for use by PiVPN.io

更新:

回顾日志,问题始于断电时。当电力恢复时,OpenVPN 服务器却无法恢复。

答案1

通过使用安装脚本的修复选项然后重新启动来解决。

curl -L https://install.pivpn.io | bash

(修复选项使用现有配置重新安装 OpenVPN 服务器。)

更新: 事实证明,我在同一个端口上监听了 WireGuard。WireGuard 没有关联进程,它是一个内核模块。(可能它有一个关联的 systemd 服务,但我在清除它之前从未检查过。)

lsof但为什么netstat没有向 WireGuard 指出这一点对我来说仍然是个谜。

相关内容