OpenVPN同时监听TCP和UDP端口
作者: 黄高明
日期: 2019-05-22
类别: vpn系列
标题: OpenVPN同时监听TCP和UDP端口
[TOC]
背景
因为公司是通过动态拨号上网,没有固定的外网地址,所以VPN是通过映射到内网来实现。
由于udp在防火墙层被拦截,所以部署完openvpn同时开启了tcp端口
实现方法
1. 配置文件
把/etc/openvpn/server.conf复制一份,比如/etc/openvpn/tcp.conf,然后修改tcp.conf:
- 协议修改为TCP:proto tcp
- IP地址修改略作修改,比如所有原来是10.8.0.x的地方,都改为10.8.1.x
2. 修改防火墙
然后修改iptables,增加一条nat规则-A POSTROUTING -s 10.8.1.0/24 -o eth0 -j MASQUERADE。iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 -j MASQUERADE
3. 启动进程
/usr/sbin/openvpn --cd /etc/openvpn/ --config tcp.conf
4. 添加开机启动
/etc/systemd/system/openvpntcp@.service
[Unit]Description=OpenVPN Robust And Highly Flexible Tunneling Application On %IAfter=network.target[Service]Type=notifyPrivateTmp=trueExecStart=/usr/sbin/openvpn --cd /etc/openvpn/ --config tcp.conf[Install]WantedBy=multi-user.target
重载服务,添加为开启启动
systemctl daemon-reloadsystemctl restart openvpntcp@serversystemctl enable openvpntcp@serversystemctl list-unit-files |grep openvpntcp
客户端ovpn配置
生成的客户端配置,只需要修改udp为tcp.
其中如果remote有2个的话,代表负载均衡,如果其中一个连接不上,会自动连接另外一个
clientproto tcpremote x.x.x.x 11111remote x.x.x.x 12222 ......