SSH 无法通过 VPN 运行

SSH 无法通过 VPN 运行

我有一台运行 OpenVPN 和 OpenSSH 的 Ubuntu Server 12.04。我在工作中的 Windows 机器上安装了 OpenVPN,并创建了连接。我可以在机器之间来回 ping,但是当我尝试 SSH 时,连接无法通过。我不认为这是防火墙问题。如果我直接连接到公共 IP 地址,通过路由器转发端口,我可以毫无问题地连接。

当我通过 VPN 连接时,我的服务器记录

Aug 17 17:03:21 alfred sshd[5615]: fatal: Read from socket failed: Connection reset by peer [preauth]

Putty 报告

2013-08-17 17:02:49 Looking up host "172.24.0.1"
2013-08-17 17:02:49 Connecting to 172.24.0.1 port 22
2013-08-17 17:02:49 Server version: SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1
2013-08-17 17:02:49 Using SSH protocol version 2
2013-08-17 17:02:49 We claim version: SSH-2.0-PuTTY_Release_0.62
2013-08-17 17:02:49 Doing Diffie-Hellman group exchange
2013-08-17 17:02:49 Doing Diffie-Hellman key exchange with hash SHA-256
2013-08-17 17:03:08 Network error: Software caused connection abort

我该如何解决这个问题?我希望在此服务器上运行多项服务,而不必公开开放大量端口。

答案1

我找到了与我的链接的 MTU 相关的修复方法。我注意到在我的服务器上,我的 eth0 接口的 MTU 是 576,但 openVPN 默认为 1500

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 576 qdisc mq state UP qlen 1000
link/ether 00:13:72:84:cd:49 brd ff:ff:ff:ff:ff:ff

22: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
link/none

我在 server.conf 和 client.conf 中都添加了以下内容

fragment 500
mssfix 500

这似乎不是理想的解决方案,但现在我可以通过隧道使用 SSH。其他服务也可以使用。我可能会尝试修复我的 eth0 接口以使用更大的 MTU,但我真的不明白弄乱这些网络东西会带来什么后果。

相关内容