HCRM博客

如何在CentOS上成功搭建VPN服务器?

VPN(虚拟专用网络)是一种通过公共网络(如互联网)来建立安全连接的技术,使远程用户能够安全地访问企业内部资源,在CentOS操作系统上搭建VPN服务器,可以为企业或个人提供安全、可靠的远程访问解决方案,本文将详细介绍如何在CentOS上搭建OpenVPN VPN服务器,包括环境准备、服务端部署和客户端配置等步骤。

环境准备

1、系统要求:确保你的CentOS系统版本为7或更高,且具备管理员权限。

如何在CentOS上成功搭建VPN服务器?-图1
(图片来源网络,侵权删除)

2、软件安装:需要安装OpenVPN及相关证书生成工具。

3、网络配置:确保服务器具有公网IP地址,以便远程用户能够访问。

OpenVPN服务端部署

1. 添加EPEL Yum源

EPEL(Extra Packages for Enterprise Linux)是一个由Fedora项目维护的额外软件包仓库,提供了许多常用的软件包,我们需要添加EPEL Yum源到CentOS中。

wget O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel7.repo

2. 安装OpenVPN及证书生成工具

使用Yum包管理器安装OpenVPN及EasyRSA(一个用于生成和管理证书的工具)。

如何在CentOS上成功搭建VPN服务器?-图2
(图片来源网络,侵权删除)
yum install y openvpn easyrsa

3. 创建证书环境目录

创建一个目录用于存储证书文件和配置文件。

mkdir p /opt/easyrsa
cp a /usr/share/easyrsa/3.0.8/* /opt/easyrsa/
cp a /usr/share/doc/easyrsa3.0.8/vars.example /opt/easyrsa/vars

4. 修改vars配置文件

编辑vars文件,取消注释并设置相关变量,以符合你的需求,设置国家、省份、城市、组织和电子邮件等信息。

vi /opt/easyrsa/vars

示例配置如下:

set_var EASYRSA_DN      "cn_only"
set_var EASYRSA_REQ_COUNTRY     "CN"
set_var EASYRSA_REQ_PROVINCE    "GuangDong"
set_var EASYRSA_REQ_CITY        "GuangZhou"
set_var EASYRSA_REQ_ORG         "IT"
set_var EASYRSA_REQ_EMAIL       "IT@qq.com"
set_var EASYRSA_NS_SUPPORT      "yes"

5. 初始化PKI目录

如何在CentOS上成功搭建VPN服务器?-图3
(图片来源网络,侵权删除)

在EasyRSA环境下初始化PKI目录,用于存储证书。

cd /opt/easyrsa/
./easyrsa initpki

6. 创建根证书

创建根证书,用于CA对之后生成的server和client证书签名时使用。

./easyrsa buildca

7. 创建Server端证书和密钥文件

生成Server端的证书和密钥文件,不加密密钥文件。

./easyrsa genreq server nopass

8. 给Server端证书签名

使用根证书对Server端证书进行签名。

./easyrsa sign server server

9. 创建DiffieHellman文件

生成DiffieHellman参数文件,用于密钥交换时的DiffieHellman算法。

./easyrsa gendh

10. 创建Client端证书和密钥文件

生成Client端的证书和密钥文件,同样不加密密钥文件。

./easyrsa genreq client nopass

11. 给Client端证书签名

使用根证书对Client端证书进行签名。

./easyrsa sign client client

12. 检查证书文件

使用tree命令查看证书文件是否生成成功,并确认包含以下关键文件:ca.crt(CA根证书)、server.crt(服务端证书)、server.key(服务端私钥)、dh.pem(DiffieHellman参数)以及client.crt和client.key(客户端证书和私钥)。

tree /opt/easyrsa/pki/private/

13. 安装OpenVPN并写入服务端配置文件

安装OpenVPN并创建新的配置文件server.conf

yum install y openvpn
cp /etc/openvpn/sampleconfigfiles/server.conf.gz /etc/openvpn/server.conf.gz
gunzip /etc/openvpn/server.conf.gz

编辑server.conf文件,根据实际需求进行配置,以下是一个基本配置示例:

port 1194  # 监听本机端口
proto tcp   # 指定采用的传输协议可选tcp或udp
dev tun     # 指定创建的通信隧道类型可选tun或tap
ca ca.crt   # 指定CA证书的文件路径
cert server.crt  # 指定服务器端的证书文件路径
key server.key  # 指定服务器端的私钥文件路径
dh dh.pem   # 指定迪菲赫尔曼参数的文件路径也就是交换证书
server 10.8.0.0 255.255.255.0  # 给客户端分配地址池注意:不能和VPN服务器内网网段有相同
push "route 10.66.17.0 255.255.255.0"  # 允许客户端访问内网网段填写自己内网
ifconfigpoolpersist ipp.txt  # 服务器自动给客户端分配IP后客户端下次连接时仍然采用上次的IP地址"第一次分配的IP保存在ipp.txt中下一次分配其中保存的IP"
keepalive 10 120  # 存活时间10秒ping一次120如未收到响应则视为断线
maxclients 100  # 最多允许100个客户端连接
status openvpnstatus.log  # 日志记录位置
verb 3  # openvpn版本
clienttoclient  # 允许客户端与客户端相连接默认情况下客户端只能与服务器相连接
duplicatecn  # 开启多人同时登录
scriptsecurity 3  # 允许使用自定义脚本
authuserpassverify /etc/openvpn/check.sh viaenv  # 用户密码登陆方式验证:加上clientcertnotrequired则代表只使用用户名密码方式验证登录,如果不加,则代表需要证书和用户名密码双重验证登录
usernameascommonname  # 绑定客户端IP
clientconfigdir /etc/openvpn/ccd  # 客户端配置目录
tlsauth /etc/openvpn/ta.key 0  # 开启TLSauth,使用ta.key防御攻击.服务器端的第二个参数值为0客户端的为1

OpenVPN客户端部署

1. 拷贝证书文件到客户端

将服务端生成的ca.crt、client.crt、client.key以及ta.key文件拷贝到客户端机器的相应目录下(通常为/etc/openvpn)。

2. 创建Client端配置文件

在客户端机器上创建一个新的OpenVPN配置文件(如client.ovpn如下:

client
dev tun
proto udp
remote [服务器IP地址] 1194
resolvretry infinite
nobind
persistkey
persisttun
remotecerttls server
cipher AES256CBC
auth MD5
tlsclient
tlsauth ta.key 1
keydirection 1
<ca>path/to/ca.crt>
<cert>path/to/client.crt>
<key>path/to/client.key
verb 3

请根据实际情况替换[服务器IP地址]、证书和密钥文件的路径。

3. 启动OpenVPN服务端和客户端

在服务端机器上启动OpenVPN服务:

systemctl start openvpn@server

在客户端机器上连接到VPN服务器:

sudo openvpn config client.ovpn

输入用户名和密码(如果配置了的话),即可成功连接到VPN服务器。

常见问题解答(FAQs)

问题1:如何更改OpenVPN服务器的监听端口?

答案:在server.conf配置文件中,找到port指令并将其值更改为所需的端口号(将port 1194更改为port 443),然后重新启动OpenVPN服务以应用更改,更改监听端口可能需要在防火墙或路由器上开放相应的端口。

问题2:如何限制每个客户端的带宽?

答案:要限制每个客户端的带宽,可以使用bandwidth选项在客户端配置文件中进行设置,要在client.ovpn文件中限制每个客户端的上传带宽为500kbps和下载带宽为1mbps,可以添加以下行:

broadbandlimit 500 1000
```这只是一个示例值,你可以根据实际需求进行调整,还需要确保服务器端也支持带宽限制功能,并在必要时进行相应的配置。
分享:
扫描分享到社交APP
上一篇
下一篇