将 SSTP 流量从 Ubuntu Apache2 服务器重定向到内部 Windows 服务器

将 SSTP 流量从 Ubuntu Apache2 服务器重定向到内部 Windows 服务器

所以这个周末我一直在致力于将我的apache2服务器迁移到docker我没有问题的容器中。

我目前有一个 Windows 服务器和SSTPExchange 2016,都使用端口443进行通信。

这个想法是将传入443流量转发到我的 ubuntu 服务器,然后 apache 将根据我为虚拟主机提供的别名决定将用户重定向到哪里。这个方法已经奏效,但如果用户尝试连接到也使用端口 443 的 VPN,该怎么办?我如何才能将该流量重定向到我的服务器?

我原本的想法是创建一个规则,IPTABLES将目的地vpn.domain.com转发到服务器,但由于所有子域/ CName 都只是指向同一主机(我的外部 IP)的别名,因此端口上的所有请求443都将被发送到 Windows 服务器,绕过我的网络主机,这不是我想要的。

我实际上也尝试过使用 apache 将所有传入连接转发443ServerAlias vpn.domain.comWindows 服务器(因为它已打开),443但这不起作用。

我不确定该怎么做,我想我毕竟只需要在我的 ubuntu 服务器上创建一个新的 VPN 服务。如果有任何方法可以实现我需要的功能,那将为我省去很多麻烦。

谢谢

答案1

尝试SSLH

安装 SSLH

SSLH适用于大多数 Linux 发行版,因此您可以使用默认包管理器进行安装。

sudo apt install sslh

配置 Apache

你已经知道,Apache 默认会监听所有网络接口(即 0.0.0.0:443)。我们需要更改此设置,让 Web 服务器只监听本地主机接口(即 127.0.0.1:443 或 localhost:443)。

为此,编辑 Web 服务器(nginx 或 apache)配置文件并找到以下行:

 listen 443 ssl;

并将其更改为:

listen 127.0.0.1:443 ssl;

如果您在 Apache 中使用 Virutalhosts,请确保您也已对其进行了更改。

VirtualHost 127.0.0.1:443

保存并关闭配置文件。不要重新启动服务。

配置 SSLH

一旦您使 Web 服务器仅在本地接口上监听,请编辑 SSLH 配置文件:

sudo vi /etc/default/sslh

找到以下行:

Run=no

并将其更改为:

Run=yes

然后,向下滚动一点并修改以下行以允许 SSLH 在所有可用接口上监听端口 443(例如 0.0.0.0:443)。

DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:443 --openvpn 127.0.0.1:1194 --pidfile /var/run/sslh/sslh.pid"

在哪里,

  • 用户 sslh:需要在指定的用户名下运行。
  • listen 0.0.0.0:443 :SSLH 正在所有可用接口上监听端口 443。
  • sshs 127.0.0.1:22 :将 SSH 流量路由到本地主机的端口 22。
  • ssl 127.0.0.1:443 :将 HTTPS/SSL 流量路由到本地主机的端口 443。
  • openvpn 127.0.0.1:1194 :将 openvpn 流量路由到本地主机的 1194 端口

保存并关闭文件。

最后,启用并启动sslh服务来更新更改。

sudo systemctl enable sslh

sudo systemctl start sslh

更改 IP、端口和协议以满足您的需求。

相关内容