使用SSLH可以让Softether(SSTP)与Apache共存
在SSLH中共存Softether(SSTP)和Apache。
通过检测协议来将访问指向443端口,通过将其分配给多个服务来实现共享443端口的手段是使用SSLH(https://github.com/yrutschle/sslh)。但是,SSLH仅支持OpenVPN协议。
我们进行了一些尝试,设定了在SSLH的背后使用Sofether的专有协议和SSTP协议的配置,并且虽然不完美但是可以工作,所以在这里做以记载。
SSLH的帮助文档
sslh -h
sslh 1.18-1
usage:
sslh [-v] [-i] [-V] [-f] [-n] [--transparent] [-F <file>]
[-t <timeout>] [-P <pidfile>] -u <username> -p <add> [-p <addr> ...]
[--ssh <addr>]
[--openvpn <addr>]
[--tinc <addr>]
[--xmpp <addr>]
[--http <addr>]
[--ssl <addr>]
[--tls <addr>]
[--adb <addr>]
[--anyprot <addr>]
[--on-timeout <addr>]
在设置中,我们将每个服务服务器的IP以 “–ssh hogehoge.com” 的形式列出。然而,在这些设置中,所有指定为 –anyprot 的端口都会转发无法由SSLH支持的协议包。
通过在这里记下Softether的监听端口,所有与Softether对应的VPN协议都可以在SSLH的背后使用。
sudo nano /etc/default/sslh
RUN=yes
# binary to use: forked (sslh) or single-thread (sslh-select) version
# systemd users: don't forget to modify /lib/systemd/system/sslh.service
DAEMON=/usr/sbin/sslh
#softetherのポート:8080 (localhost)
DAEMON_OPTS="--user sslh --listen 192.168.1.1:443 --anyprot 127.0.0.1:8080 --ssl 127.0.0.1:8443...
在SSLH的源代码中,最好是添加其他协议的识别规则,但由于目前没有这样的知识,所以我认为可以作为紧急手段使用。