我最近在家里的台式机上设置了一个 VPN 服务器,希望在大学时可以通过笔记本电脑连接到它。我已经确认我可以通过移动数据热点轻松连接,但在大学里却无法连接。这几乎肯定是因为他们阻止了连接(就像他们阻止我或我的朋友尝试过的几乎所有 VPN 提供商一样)。
为了解决这个问题,我有:
- 使用 TCP 协议
- 使用端口 443
- 使用 SSL 加密(我想 - 这不是故意的,但是当按照指南设置服务器时我似乎这样做了,当我考虑设置它时,说明都是我已经做过的事情,例如生成证书和 CA 文件)。
当我尝试连接时,根本无法建立任何连接。我不在家时无法检查服务器日志,但根据下面的第三条消息,我认为它会立即显示连接。客户端服务器日志中有几行引起了我的注意:
SIGUSR1[soft,connection-reset] received, process restarting
Connection reset, restarting [-1]
TCP connection established with [AF_INET]XX.XXX.X.XX:443
我也研究过混淆技术,但有人告诉我,虽然它可以避免人工检查,但对于几乎肯定是自动化的过程来说,它却是无用的。
我还有其他相对简单的方法可以用来解决这个问题吗?
还请记住,与普通人相比,我对网络和 VPN 的了解相对较多,但与这个论坛上的许多人相比,我根本不了解(设置 VPN 服务器大约需要 10 个小时的设置和错误修复)。
我找到了一种查看服务器日志的方法,并且可以确认当我尝试从客户端连接时,服务器会看到该连接并收到相同的sigusr1
重置消息。
根据要求,以下是消息之前动词 3 的客户端日志sigusr1
:
2024-02-06 11:37:11 us=843000 MANAGEMENT: STATE:1707219431,RECONNECTING,connection-reset,,,,,
2024-02-06 11:37:11 us=843000 Restart pause, 1 second(s)
2024-02-06 11:37:12 us=859000 Re-using SSL/TLS context
2024-02-06 11:37:12 us=859000 Control Channel MTU parms [ mss_fix:0 max_frag:0 tun_mtu:1250 tun_max_mtu:0 headroom:126 payload:1600 tailroom:126 ET:0 ]
2024-02-06 11:37:12 us=859000 Data Channel MTU parms [ mss_fix:0 max_frag:0 tun_mtu:1500 tun_max_mtu:1600 headroom:136 payload:1768 tailroom:562 ET:0 ]
2024-02-06 11:37:12 us=859000 TCP/UDP: Preserving recently used remote address: [AF_INET]XX.XXX.X.XXX:433
2024-02-06 11:37:12 us=859000 Socket Buffers: R=[65536->65536] S=[65536->65536]
2024-02-06 11:37:12 us=859000 Attempting to establish TCP connection with [AF_INET]XX.XXX.X.XXX:433
2024-02-06 11:37:12 us=859000 MANAGEMENT: >STATE:1707219432,TCP_CONNECT,,,,,,
2024-02-06 11:37:12 us=890000 TCP connection established with [AF_INET]XX.XXX.X.XXX:433
2024-02-06 11:37:12 us=890000 TCPv4_CLIENT link local: (not bound)
2024-02-06 11:37:12 us=890000 TCPv4_CLIENT link remote: [AF_INET]XX.XXX.X.XXX:433
2024-02-06 11:37:12 us=890000 MANAGEMENT: >STATE:1707219432,WAIT,,,,,,
2024-02-06 11:37:13 us=140000 Connection reset, restarting [-1]
2024-02-06 11:37:13 us=171000 TCP/UDP: Closing socket
2024-02-06 11:37:13 us=171000 SIGUSR1[soft,connection-reset] received, process restarting
答案1
使用 SSL 加密(我想 - 这不是故意的,但是当按照指南设置服务器时,我似乎这样做了,当我查看设置时,说明都是我已经完成的事情,例如生成证书和 ca 文件)。
OpenVPN 始终使用 TLS。然而,与其他所有协议不同,它使用 TLS里面它有自己的 OpenVPN 协议,因此它仍然很容易被识别为 OpenVPN。(也就是说,您有一个“OpenVPN”连接,其中基于 TLS 的控制通道和非 TLS 数据通道多路复用在一起。)
如果你确实需要它看起来像然后是 TLS:
您可以使用
stunnel
(两侧)在 TLS 内部隧道传输任何基于 TCP 的协议。您还可以寻找替代 VPN 协议 - 具体来说,我建议使用 OpenConnect(在
ocserv
服务器上),因为它 1) 完全基于 TLS,并且 2) 与经常用于企业 VPN 的 Cisco AnyConnect 协议完全相同,因此它将“融入”工作场所 VPN。(事实上,ocserv 甚至接受真正的 Cisco AnyConnect 客户端。)另一个类似的选择是 SSTP,这是微软对“TLS VPN”的看法——客户端内置于 Windows。
如果您能够使用 SSH,Linux 版本的 OpenSSH 支持用作 VPN 隧道(选项-w
)。