前面已经提高使用ocserv的原因之一就是它的安全性,它默认采用加密的连接。
而默认使用的端口是443(可以在配置文件当中修改成别的端口,由之而来的问题是客户端连接时需要指名端口好),和一般的web服务器使用的加密传输端口一致。
假设资源紧张不得已需要在一台机器上部署nginx以及ocserv服务,又不想给用户的体验造成影响(不加端口好访问)是不是两者不可兼得呢?
ocserv官方给出了使用haproxy的SNI解决方案。
简单来说就是nginx和ocserv使用两个不通的端口号而443端口给haproxy使用。
例如,ocserv使用9443,Web服务器使用8443.我们还假设Web服务器响应www.example.com,而vpn服务器响应vpn.example.com。这样便将流量重定向到适当服务器进行响应了。
配置文件如下
frontend www-https
bind 0.0.0.0:443
mode tcp
tcp-request inspect-delay 5s
default_backend bk_ssl_default
backend bk_ssl_default
mode tcp
acl vpn-app req_ssl_sni -i vpn.example.com
acl web-app req_ssl_sni -i www.example.com
use-server server-vpn if vpn-app
use-server server-web if web-app
use-server server-vpn if !vpn-app !web-app
option ssl-hello-chk
server server-vpn 127.0.0.1:9443 send-proxy-v2
server server-web 127.0.0.1:8443 check
最后,为了让ocserv获取有关传入会话的信息,我们在haproxy的配置中启用了代理协议(使用send-proxy-v2
选项)。这要求ocserv的配置包含以下内容:
listen-proxy-proto = true
能避免共用端口还是尽量避免吧。
--EOF--
本文由 Kay @ Jun 24, 2019 at 03:41:00 pm 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jun 24, 2019 at 08:10:56 am
博主这里干货很多!感谢