ocserv443端口复用

前面已经提高使用ocserv的原因之一就是它的安全性,它默认采用加密的连接。 而默认使用的端口是443(可以在配置文件当中修改成别的端口,由之而来的问题是客户端连接时需要指名端口好),和一般的web服务器使用的加密传输端口一致。

假设资源紧张不得已需要在一台机器上部署nginx以及ocserv服务,又不想给用户的体验造成影响(不加端口好访问)是不是两者不可兼得呢?

ocserv官方给出了使用haproxy的SNI解决方案。

简单来说就是nginx和ocserv使用两个不通的端口号而443端口给haproxy使用。

例如,ocserv使用9443,Web服务器使用8443.我们还假设Web服务器响应www.example.com,而vpn服务器响应vpn.example.com。这样便将流量重定向到适当服务器进行响应了。

配置文件如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
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的配置包含以下内容:

1
listen-proxy-proto = true

能避免共用端口还是尽量避免吧。

Licensed under CC BY-NC-SA 4.0
最后更新于 Jun 24, 2019 16:10 UTC
点击刷新🚌