我有一个独特的情况,正在pipe理我的vpns有点痛苦,所以我想让我和我的用户更容易,希望没有人能给我一些想法和/或替代品。
现在的情况是,我有大约600个客户端连接到我的networking上的大约6台服务器,用于mysql数据库复制。 MySQL从站连接到主站,因此连接从我的networking到客户端networking,我们以前没有使用VPN,但是这远不是安全的,所以我们一直在将每个人都转移到VPN。
现在他们直接与openvpn分配的服务器连接。 事情是,大多数用户不是技术性的,所以我的团队必须连接到他们(teamviewer和similars)并为他们做设置,有时我们必须将这些人从一台服务器移到另一台服务器。 现在的方式是,我的小团队中的某个人连接到客户端服务器,并更改服务器上的设置,有时他们的防火墙也是如此,这对于一个3人pipe理600的团队来说,花费了太多的时间。
现在:客户端— VPN / MYSQL服务器
所以我想让自己的生活变得更加简单,我将6台服务器安装在一个专用networking中,另外一台虚拟机就是网关。 在那个虚拟机中,我运行openvpn 3个实例,所以每个实例大概有200个客户端。 请注意,在我们的情况下,MySQL复制不会占用大量的带宽,每个用户大约40KBps,导致ADSL上传速度(大多数客户端使用adsl)是严重的。
现在,我正在阅读互联网,大多数人都说这是不可能的,所以我认为这将是复查的地方。
我可以让每个客户端连接到他们的vpn实例,但我想使它更容易和使用像反向代理,所以我只有一个外部地址和端口连接,并根据他们连接到哪个地址redirect到正确的在openvpn服务器上的端口。
意图:客户—防火墙— NGINX —-正确的端口在VPN服务器上
这可能吗? 如果不是用nginx与别的东西? 如果不可能,你会在这种情况下做什么? 我渴望在这里的一些想法:)
到目前为止,我尝试设置nginxredirect到vpn服务器作为fastcgi网关,没有运气,ovpn获取到nginx但没有redirect任何东西。 如果我用浏览器尝试,我得到一个错误的网关错误,只有他们的ovpn服务器在日志上显示一些生命迹象。
vpn服务器实例如下(其中3个,不同的端口和ip池)。
port 4001 proto tcp dev tun ca vpnkeys/keys-vpn1/ca.crt cert vpnkeys/keys-vpn1/vpn1.crt key vpnkeys/keys-vpn1/vpn1.key # This file should be kept secret dh vpnkeys/keys-vpn1/dh1024.pem server 172.16.101.0 255.255.255.0 ifconfig-pool-persist ipp-vpn1.txt keepalive 10 120 comp-lzo user nobody group nogroup persist-key persist-tun status openvpn-status-vpn1.log verb 3 push "10.0.100.11 255.255.255.255"
客户端conf是
client dev tun proto tcp remote vpn-001.myserver.com 80 # firewall throws to nginx on port 4000 resolv-retry infinite nobind # comentar as duas linhas abaixo em maquinas windows user nobody group nogroup persist-key persist-tun ca ca.crt cert cliente-xxxxx.crt key cliente-xxxxx.key ns-cert-type server comp-lzo verb 3 mute-replay-warnings
并在Nginx上我有以下configuration每个VPN主机名
server { listen 4000; server_name vpn-001.myserver.com; location / { fastcgi_pass 10.0.0.137:4001; } }
当ovpn客户端尝试连接时,我在nginx错误日志上得到这个垃圾。 10.0.0.4是我的防火墙。
10.0.0.4 - - [25/Jun/2014:17:45:06 -0300] "\x00\x0E8\x84\xF1\xEB\xF2\x14>Z\xF2\x00\x00\x00\x00\x00" 400 173 "-" "-" 10.0.0.4 - - [25/Jun/2014:17:45:12 -0300] "\x00\x0E8\xC1\xE0(A\xD8\xAC\x16\xB2\x00\x00\x00\x00\x00" 400 173 "-" "-" 10.0.0.4 - - [25/Jun/2014:17:45:18 -0300] "\x00\x0E8\x95\xB4\x18[\x03@\xCA\xFC\x00\x00\x00\x00\x00" 400 173 "-" "-" 10.0.0.4 - - [25/Jun/2014:17:45:24 -0300] "\x00\x0E8\xE4{\xEE<\x98\x1B\x97K\x00\x00\x00\x00\x00" 400 173 "-" "-" 10.0.0.4 - - [25/Jun/2014:17:45:30 -0300] "\x00\x0E8\xE0'\x1Fr?\x06\xE33\x00\x00\x00\x00\x00" 400 173 "-" "-" 10.0.0.4 - - [25/Jun/2014:17:45:36 -0300] "\x00\x0E8g\xC8\xD8w8VH2\x00\x00\x00\x00\x00" 400 173 "-" "-" 10.0.0.4 - - [25/Jun/2014:17:45:42 -0300] "\x00\x0E8N\xFC\xCA\xE4\xC58\xD63\x00\x00\x00\x00\x00" 400 173 "-" "-" 10.0.0.4 - - [25/Jun/2014:17:45:48 -0300] "\x00\x0E8TL\x85=\x15\xE4\xF2\xD6\x00\x00\x00\x00\x00" 400 173 "-" "-" 10.0.0.4 - - [25/Jun/2014:17:45:54 -0300] "\x00\x0E8\xB0\x9A\x8D\x8Dq\xBE\xCD3\x00\x00\x00\x00\x00" 400 173 "-" "-"
没有任何东西到达ovpn服务器日志。 (我知道它redirect原因,当我使用浏览器连接到相同的地址,我得到一个坏的网关错误从nginx和一些响应ovpn日志)
想法? 想法?
也许你可以为每个客户创build一个DNS CNAME,例如:
clientname.mysql.myserver.com. CNAME mysql1.myserver.com.
而不是连接到它自己的VPN连接所有的客户端到一个单一的VPN,然后他们只是连接到MySQL服务器clientname.mysql.myserver.com。 在服务器之间移动客户端数据库就像将此CNAME更改为
clientname.mysql.myserver.com. CNAME mysql2.myserver.com.
这很简单。 但是我不确定我是否正确理解你想达到什么目的。