使用Lighthouse搭建OpenVPN轻松访问内网服务

2023-11-28 15:00:54 浏览数 (2)

OpenVPN是一种功能强大的开源虚拟私有网络(VPN)解决方案,可以在多种应用场景下使用。以下是几个常见的OpenVPN应用场景:

  1. 远程访问和远程办公:OpenVPN可以用于建立安全的远程连接,使远程用户能够安全地访问内部资源、文件共享和应用程序,从而实现远程办公和远程访问。
  2. 跨地域网络连接: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中打开文件即可链接

本文到这里就结束了,在搭建的任何过程中产生问题您可在评论区进行留言

0 人点赞