OpenVPN是一种功能强大的开源虚拟私有网络(VPN)解决方案,可以在多种应用场景下使用。以下是几个常见的OpenVPN应用场景:
- 远程访问和远程办公:OpenVPN可以用于建立安全的远程连接,使远程用户能够安全地访问内部资源、文件共享和应用程序,从而实现远程办公和远程访问。
- 跨地域网络连接:OpenVPN可用于连接位于不同地理位置的局域网(LAN),通过隧道方式将不同的网络链接起来,构建一个安全的虚拟私有网络。这对于跨越多个办公室、分支机构或数据中心的组织非常有用。 本文将教大家如何使用腾讯云轻量应用服务器搭建OpenVPN服务端以及客户端的配置
一、安装OpenVPN服务端
作者选择的是CentOS7.6镜像,在搭建之前 请前往轻量应用服务器的控制台配置防火墙,将1194端口的TCP协议放通
1.安装软件源
代码语言:javascript复制sudo yum install epel-release
2.安装openvpn,easy-rsa
代码语言:javascript复制sudo yum install -y openvpn easy-rsa
3.创建目录 生成密钥
代码语言:javascript复制sudo mkdir /etc/openvpn/easy-rsa
sudo cp -ai /usr/share/easy-rsa/3/* /etc/openvpn/easy-rsa/
cd /etc/openvpn/easy-rsa
sudo ./easyrsa init-pki
sudo ./easyrsa build-ca nopass
sudo ./easyrsa build-server-full server nopass
sudo ./easyrsa gen-dh
sudo cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/
sudo cp /etc/openvpn/easy-rsa/pki/issued/server.crt /etc/openvpn/
sudo cp /etc/openvpn/easy-rsa/pki/private/server.key /etc/openvpn/
sudo cp /etc/openvpn/easy-rsa/pki/dh.pem /etc/openvpn/
4.创建配置文件
代码语言:javascript复制vim /etc/openvpn/server.conf
代码语言:javascript复制port 1194 #端口
proto tcp #协议
dev tun #采用路由隧道模式
ca ca.crt #ca证书的位置
cert server.crt #服务端公钥的位置
key server.key #服务端私钥的位置
dh dh.pem #证书校验算法
server 10.8.0.0 255.255.255.0 #给客户端分配的地址池
push "route 10.70.0.0 255.255.0.0" #允许访问的内网段
ifconfig-pool-persist ipp.txt #地址池记录文件位置,未来让openvpn客户端固定ip地址使用的
keepalive 10 120 #存活时间,10秒ping一次,120秒如果未收到响应则视为短线
max-clients 100 #最多允许100个客户端连接
status openvpn-status.log #日志位置,记录openvpn状态
log /var/log/openvpn.log #openvpn日志记录位置
verb 3 #openvpn版本
client-to-client #允许客户端与客户端之间通信
persist-key #通过keepalive检测超时后,重新启动VPN,不重新读取
persist-tun #检测超时后,重新启动VPN,一直保持tun是linkup的,否则网络会先linkdown然后再linkup
duplicate-cn #客户端密钥(证书和私钥)是否可以重复
comp-lzo #启动lzo数据压缩格式
client-config-dir /etc/openvpn/ccd #客户端配置文件目录
启动服务端
代码语言:javascript复制sudo systemctl start openvpn@server
设置开机自启
sudo systemctl enable openvpn@server
服务端配置完成
二、客户端配置
1.Linux客户端配置
(1)服务端生成客户端的证书
代码语言:javascript复制cd /etc/openvpn/easy-rsa
./easyrsa build-client-full client_name pwd
之后将ca.crt client_name.crt client_name.key都下载下来
文件位置
ca.crt >> /etc/openvpn/easy-rsa/pki
client_name.crt >> /etc/openvpn/easy-rsa/pki/issued
client_name.key >> /etc/openvpn/easy-rsa/pki/private
(2)下载客户端
代码语言:javascript复制sudo yum install epel-release
sudo yum -y install openvpn
(3)编辑客户端配置文件
代码语言:javascript复制vim /etc/openvpn/client.conf
代码语言:javascript复制client
dev tun
proto tcp
remote 服务端ip 1194
resolv-retry infinite
nobind
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client_name.crt
key /etc/openvpn/client_name.key
verb 3
persist-key
comp-lzo
将ca.crt client_name.crt client_name.key上传至/etc/openvpn/
(4)启动客户端
代码语言:javascript复制systemctl start openvpn@client
(5)若要使用这台机器作跳板访问内网服务(可选)
1)添加以下iptables规则,其中ens160需要根据实际情况(ifconfig所显示的能访问到内网服务的网卡)进行修改
代码语言:javascript复制iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
iptables -A FORWARD -i tun0 -o ens160 -j ACCEPT
iptables -A FORWARD -i ens160 -o tun0 -j ACCEPT
2)开启IP转发功能
代码语言:javascript复制vim /etc/sysctl.conf
将 net.ipv4.ip_forward=
设为1
3)在服务端openvpn目录下创建ccd目录
代码语言:javascript复制mkdir /etc/openvpn/ccd
4)创建一个名为客户端名称的文件
代码语言:javascript复制vim /etc/openvpn/ccd/client_name
代码语言:javascript复制ifconfig-push 10.8.0.2 255.255.255.0 #固定IP
iroute 10.70.0.0 255.255.0.0 #若访问10.70.0.0/16 网络路由到该客户端。
5)同时在服务端配置文件中加入
代码语言:javascript复制push "route 10.70.0.0 255.255.0.0" #允许访问的内网段
6)重启服务端
代码语言:javascript复制sudo systemctl restart openvpn@server
7)重启客户端
代码语言:javascript复制systemctl restart openvpn@client
2.Windows客户端配置
(1)下载Windows客户端
官方地址https://openvpn.net/client/client-connect-vpn-for-windows/
(2)服务端生成客户端的证书
代码语言:javascript复制cd /etc/openvpn/easy-rsa
./easyrsa build-client-full client_name pwd
之后将ca.crt client_name.crt client_name.key都下载下来
文件位置
ca.crt >> /etc/openvpn/easy-rsa/pki
client_name.crt >> /etc/openvpn/easy-rsa/pki/issued
client_name.key >> /etc/openvpn/easy-rsa/pki/private
(3)重启 <服务端>
代码语言:javascript复制sudo systemctl restart openvpn@server
(4)创建配置文件client_name.ovpn
代码语言:javascript复制client
dev tun
proto tcp
remote 服务端ip 1194
resolv-retry infinite
nobind
ca ca.crt
cert client_name.crt
key client_name.key
verb 3
persist-key
comp-lzo
将ca.crt client_name.crt client_name.key与client_name.ovpn放置在同一个文件夹中
双击文件即可链接
3.iOS、Android客户端配置
iOS可前往AppStore下载Open VPN客户端,Android可前往OpenVPN官网下载Android客户端
(1)服务端生成客户端的证书
代码语言:javascript复制cd /etc/openvpn/easy-rsa
./easyrsa build-client-full client_name pwd
之后将ca.crt client_name.crt client_name.key都下载下来
文件位置
ca.crt >> /etc/openvpn/easy-rsa/pki
client_name.crt >> /etc/openvpn/easy-rsa/pki/issued
client_name.key >> /etc/openvpn/easy-rsa/pki/private
(2)重启服务端
代码语言:javascript复制sudo systemctl restart openvpn@server
(3)配置文件的创建
代码语言:javascript复制client
dev tun
proto tcp
remote 服务端ip 1194
resolv-retry infinite
nobind
<ca>
此处填写ca.crt文件内所有内容
</ca>
<cert>
此处填写client_name.crt中的证书内容即可,即:
-----BEGIN CERTIFICATE-----
......
-----END CERTIFICATE-----
</cert>
<key>
此处填写client_name.key中的所有内容
</key>
verb 3
persist-key
comp-lzo
将client_name.ovpn传至手机后,在openvpn中打开文件即可链接
本文到这里就结束了,在搭建的任何过程中产生问题您可在评论区进行留言