😆Openvpn问题导致我掉了三根头发

详细请看下方图

环境架构图

由于电信服务商不给提供固定ip,我们只能另寻他法,第一个想到的就是frp端口映射,于是跟公司申请了一台阿里云服务器,并在阿里云服务器上安装了frp-server,在Openvpn-server服务器上安装了frp-client。

Openvpn-server是一台双网卡的服务器,一个网卡用来上网(连接阿里云服务器的frp),另一张网卡用来连接机房的路由器,通过Openvpn实现外出出差的同事能同时干两份工作(出差+本地项目)。

端口映射做好,Openvpn安装好之后,经过测试Openvpn的c/s连接无问题,但是ping不通整个环境的其他ip,只能ping通Openvpn-server这台服务器上的网卡,这说明流量并没有被转发出去,而是还在这台机器里打转。

Openvpn-server配置文件如下

local 0.0.0.0
port 1194        # 监听端口
proto tcp        # 协议
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/server.crt
key /etc/openvpn/server/server.key
dh /etc/openvpn/server/dh.pem
server 192.168.200.0 255.255.255.0        # Openvpn给客户端分配的网段
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0"    # 办公网段路由
push "route 192.168.3.0 255.255.255.0"    # 机房路由器路由
push "route 10.0.0.0 255.0.0.0"           # 机房路由
client-to-client                          #允许客户端之间通信
;duplicate-cn
keepalive 10 120
tls-auth /etc/openvpn/server/ta.key 0
cipher AES-256-CBC
compress lz4-v2
push "compress lz4-v2"
;comp-lzo
max-clients 1000
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log  /var/log/openvpn.log
verb 3
;explicit-exit-notify 1

这个时候测试 Openvpn-server 和其他网段都是通的。

原因:Openvpn的虚拟网卡并没有把流量转发出去,而是局限在这台linux服务器。

解决方法:添加两条 iptables nat 规则,让流量转发到其他网卡,剩下的任务由这个网卡去解决。

iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o ens37 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -o ens37 -j SNAT --to-source 192.168.3.173

涉及技术:Openvpn 端口映射 路由交换

最后更新于

这有帮助吗?