我想知道如何使用 SNI 反向代理 openvpn 连接,我已经阅读了很多相关内容:HERE 和 HERE
我尝试过任何类型的解决方案,使用 haproxy 和 nginx,但似乎我的客户端(我尝试过 Tunnelblick 和 Linux 上的简单 openvpn 客户端)不发送 SNI 信息
基本上,这就是我想要达到的结果:
vpn1.app.com ─┬─► *.app.com dns -> nginx at my public ip ─┬─► vpn1 at 10.0.0.3
vpn2.app.com ─┤ ├─► vpn2 at 10.0.0.4
vpn3.app.com ─┘ └─► vpn3 at 10.0.0.5
有什么想法吗?
[更新] 我这些天一直在搜索并寻找解决方案,但是总而言之,OpenVpn 在其架构中似乎没有向服务器发送 SNI 指示,所以,不有机会这样做。
我将使用经典的老式方法:NAT 和适当的公共 DNS 来管理它们。
现在已经是 2023 年了,OpenVPN 2 仍然不允许您在 TLS 数据包中发送 SNI。
如果您切换到 OpenVPN 3,当然可以!
Windows下需要自己编译客户端。
之后,您可以将“sni”选项添加到客户端配置文件中,并通过刚刚编译的终端客户端使用它。
例如:
...
remote test.com 1194
sni "test.com"
...
不过,就个人而言,我无法像一些指南建议的那样使用 nginx 和 $ssl_preread_server_name 反向代理 TCP 流。
编译适用于 Windows、Linux 和 macOS 的 openvpn3 客户端的链接: