OpenVPN:连接问题/ssh_exchange_identification:读取:对等方重置连接

OpenVPN: connection problems / ssh_exchange_identification: read: Connection reset by peer

我遇到了 OpenVPN 和 SSH(以及其他服务)的问题:

我可以连接到 VPN 而没有任何错误消息。 如果我想通过 SSH 连接到 VPN 内的计算机,我会收到错误消息:"ssh_exchange_identification: read: Connection reset by peer".

在哪台机器上出现这个问题,每天不同,连接不同。

$ ssh root@storage -vvv
OpenSSH_6.9p1, OpenSSL 1.0.1k-fips 8 Jan 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 56: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to storage [192.168.1.5] port 22.
debug1: Connection established.
debug1: identity file /home/ewald/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ewald/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ewald/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ewald/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ewald/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ewald/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ewald/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ewald/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.9
ssh_exchange_identification: read: Connection reset by peer

如果我可以连接到 VPN 内的另一台机器,我可以通过 SSH 连接到我的目标。 我还尝试在远程路由器上为端口 22 配置端口转发,并经常通过此转发从我的客户端连接,它总是有效,所以我认为问题不是 SSH 服务器或客户端配置。

所以我在 OpenVPN 配置中尝试了很多设置(不同的 link-mtus,tcp 而不是 udp,禁用 lzo,...),将其安装在不同的机器上(默认 OpenVPN 服务器位于Ubuntu 12.04 VM。我也尝试在裸机上安装它)但没有任何变化。

由于第一次出现问题,连 ISP 都换了(从 DSL 到 Fiber)。

其他客户端机器也存在该问题:一台使用 viscosity 的 macbook(tunnelblick 也不起作用),几个 linux 盒子:fedora,ubuntu,...

有时我也没有收到来自 HTTP 服务器的答复(即使我可以使用 SSH 连接到它) HTTP 服务器本身可以从内部网络和我的 SSH 隧道(使用它作为 SOCKS 代理)访问,所以问题一定是 OpenVPN 连接。

谁能帮帮我?如果连接本身有问题,我该如何检查?

TCP 转储:

$ sudo tcpdump -i tun0 dst port 22
15:56:17.689847 IP myclient.60920 > storage.ssh: Flags [S], seq 729708226, win 29200, options [mss 1460,sackOK,TS val 3108117687 ecr 0,nop,wscale 7], length 0
15:56:17.717556 IP myclient.60920 > storage.ssh: Flags [.], ack 2044707578, win 229, options [nop,nop,TS val 3108117714 ecr 1518717699], length 0
15:56:17.717949 IP myclient.60920 > storage.ssh: Flags [P.], seq 0:21, ack 1, win 229, options [nop,nop,TS val 3108117715 ecr 1518717699], length 21
15:56:17.945811 IP myclient.60920 > storage.ssh: Flags [P.], seq 0:21, ack 1, win 229, options [nop,nop,TS val 3108117943 ecr 1518717699], length 21

可能缺少 POSTROUTING 规则,您可以粘贴此命令的结果(在 openvpn 服务器上)吗?

iptables -L -t nat

如果没有规则可以试试:

iptables -t nat -A POSTROUTING -j MASQUERADE

同时验证 ipv4 转发(在 openvpn 服务器上):

cat /proc/sys/net/ipv4/ip_forward

如果结果为0,则必须在'/etc/sysctl.conf'中添加这一行:

net.ipv4.ip_forward = 1

如果有帮助请告诉我