OpenVPN是一种功能强大的开源虚拟私有网络(VPN)解决方案,可以在多种应用场景下使用。以下是几个常见的OpenVPN应用场景:
作者选择的是CentOS7.6镜像,在搭建之前 请前往轻量应用服务器的控制台配置防火墙,将1194端口的TCP协议放通
1.安装软件源
sudo yum install epel-release
2.安装openvpn,easy-rsa
sudo yum install -y openvpn easy-rsa
3.创建目录 生成密钥
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.创建配置文件
vim /etc/openvpn/server.conf
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 #客户端配置文件目录
启动服务端
sudo systemctl start openvpn@server
设置开机自启
sudo systemctl enable openvpn@server
服务端配置完成
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
sudo yum install epel-release
sudo yum -y install openvpn
vim /etc/openvpn/client.conf
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/
systemctl start openvpn@client
1)添加以下iptables规则,其中ens160需要根据实际情况(ifconfig所显示的能访问到内网服务的网卡)进行修改
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转发功能
vim /etc/sysctl.conf
将 net.ipv4.ip_forward=
设为1
3)在服务端openvpn目录下创建ccd目录
mkdir /etc/openvpn/ccd
4)创建一个名为客户端名称的文件
vim /etc/openvpn/ccd/client_name
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)同时在服务端配置文件中加入
push "route 10.70.0.0 255.255.0.0" #允许访问的内网段
6)重启服务端
sudo systemctl restart openvpn@server
7)重启客户端
systemctl restart openvpn@client
官方地址https://openvpn.net/client/client-connect-vpn-for-windows/
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
sudo systemctl restart openvpn@server
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放置在同一个文件夹中
双击文件即可链接
iOS可前往AppStore下载Open VPN客户端,Android可前往OpenVPN官网下载Android客户端
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
sudo systemctl restart openvpn@server
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中打开文件即可链接
本文到这里就结束了,在搭建的任何过程中产生问题您可在评论区进行留言
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。