Centos7运行OpenVPN Client

云端的一台服务器需要连接内网资源,路由器采用ikuai路由器。采用OpenVPN方式连接到内网的方法:

1、路由器下载配置文件。重命名为.ovpn格式可以被更多客户端识别。
一个典型的配置文件:

client
dev-type tun
dev tunx
proto udp
tun-mtu 1400
cipher AES-128-CBC
comp-lzo
remote ip1 1195
remote ip2 1195
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
auth-user-pass  /etc/openvpn/client/密码文件
log-append /etc/openvpn/client/日志文件
script-security 2
keepalive 5 10
auth-nocache
daemon

<ca>
-----BEGIN CERTIFICATE-----
MIIDQTCCAimgAwIBAgIJAKKxdPvAYYRXMA0GCSqGSIb3DQEBCwUAMDcxCzAJBgNV
BAYTAkNOMQ4wDAYDVQQKDAVpS3VhaTEYMBYGA1UEAwwPaUt1YWkgRGV2aWNlIENB
-----END CERTIFICATE-----
</ca>

# redirect-gateway def1 bypass-dns  # uncomment to set as default gateway
# route-nopull  # uncomment to disable server route push
#

2、修改配置文件。
remote 可以写两行,第一个不通时会自动第二个。
;指定密码文件位置:
auth-user-pass /etc/openvpn/client/ovjhy.auth
;增加用户名和密码文件ovjhy.auth
首行为用户名
第二行为密码

;指定日志文件路径
log-append /etc/openvpn/client/log_JHY.log
;增加保活参数 5秒一次ping心跳,10秒收不到认为离线
keepalive 5 10

3、CentOS安装OpenVPN
yum install openvpn

4、上传配置文件到服务器 /etc/openvpn/client/目录。

5、运行VPN

openvpn /etc/openvpn/client/JHY.ovpn
openvpn /etc/openvpn/client/JHY.ovpn > /dev/null &
openvpn /etc/openvpn/client/JHY.ovpn > /etc/openvpn/client/JHY.log &
;静默方式运行
openvpn –daemon –config /etc/openvpn/client/JHY.ovpn
;指定log目录的方式运行
openvpn –daemon –config /etc/openvpn/client/JHY.ovpn –log-append /var/log/openvpn.log

6、开机自动启动

测试可以正常启动,但会异常停止,未明原因;
创建服务文件
/etc/systemd/system/openvpn-client@.service

[Unit]
Description=OpenVPN client for %i
After=network.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/sbin/openvpn --daemon --config /etc/openvpn/client/%i.ovpn --log-append /var/log/openvpn_%i.log
Restart=on-failure

[Install]
WantedBy=multi-user.target

//禁用服务
sudo systemctl disable openvpn-client@JHY
//使能服务
sudo systemctl enable openvpn-client@JHY
//启动服务
sudo systemctl start openvpn-client@JHY
//查看服务状态
sudo systemctl status openvpn-client@JHY
//启动服务
sudo systemctl stop openvpn-client@JHY
//刷新服务配置文件
systemctl daemon-reload

7、宝塔定时任务守护和开启VPN

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
#------------------------------
#获取进程的号码
processnum=`ps -ef | grep "openvpn --daemon --config /etc/openvpn/client/JHY.ovpn" | grep -v "grep" | awk '{print $2}'`
#杀死进程
#echo $processnum 
#kill -9 $processnum
#获取进程统计数量
count=`ps -ef | grep "openvpn --daemon --config /etc/openvpn/client/JHY.ovpn" | grep -v "grep" | wc -l`
echo $count  #输出统计数量
if [ 0 == $count ];then
	#启动进程
    openvpn --daemon --config /etc/openvpn/client/JHY.ovpn
	endDate=`date +"%Y-%m-%d %H:%M:%S"`
	echo "[$endDate] Start OpenVPN.JHY"
fi
echo "----------------------------------------------------------------------------"
endDate=`date +"%Y-%m-%d %H:%M:%S"`
echo "★[$endDate] Successful"
echo "----------------------------------------------------------------------------"

8、OpenVPN的优化
加密方式应该更新为AES-256-GCM,先用的256-CBC方式未来会被不支持。

9、多连接下的配置
dev tunx
这个tunx在每个连接时不能相同,不然会引起冲突。需要每个连接用不同的名称来命名。

此条目发表在待分类分类目录。将固定链接加入收藏夹。