OpenVPN同时监听TCP和UDP端口

作者: 黄高明
日期: 2019-05-22
类别: vpn系列
标题: OpenVPN同时监听TCP和UDP端口

背景

因为公司是通过动态拨号上网,没有固定的外网地址,所以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 %I
After=network.target

[Service]
Type=notify
PrivateTmp=true
ExecStart=/usr/sbin/openvpn --cd /etc/openvpn/ --config tcp.conf

[Install]
WantedBy=multi-user.target

重载服务,添加为开启启动

systemctl daemon-reload
systemctl restart openvpntcp@server
systemctl enable openvpntcp@server
systemctl  list-unit-files |grep openvpntcp

客户端ovpn配置

生成的客户端配置,只需要修改udp为tcp.
其中如果remote有2个的话,代表负载均衡,如果其中一个连接不上,会自动连接另外一个

client
proto tcp
remote x.x.x.x 11111
remote x.x.x.x 12222 
......

相关文章

序号 标题
1 通过脚本一键安装ocserv(anyconnect服务端)
2 CentOS7使用Ocser搭建CiscoAnyconnect服务器(配置使用)
3 通过脚本一键安装openvpn
4 OpenVPN同时监听TCP和UDP端口
5 CentOS 7安装配置PPTP
vpnopenvpn