目录
1. 前言
CentOS 是一款流行的 Linux 发行版,广泛应用于服务器领域。作为一款开源、免费的操作系统,CentOS 具有稳定性高、安全性强等特点,非常适合搭建各种类型的服务器,包括 VPN 服务器。
在当前网络环境下,搭建 VPN 服务器已经成为许多用户的刚需。VPN 不仅可以提高网络访问的安全性,还能突破地域限制,访问被限制的网站和资源。因此,本文将详细介绍如何在 CentOS 系统上搭建 VPN 服务器。
2. 准备工作
在开始搭建 VPN 服务器之前,需要准备以下环境和工具:
- CentOS 7 或更高版本操作系统
- 一个可以访问公网的服务器
- 具有 root 权限的用户账号
- 安装 OpenVPN 软件包所需的依赖库
3. 安装 OpenVPN
首先,需要安装 OpenVPN 软件包及其依赖项。可以使用以下命令完成安装:
bash yum install epel-release -y yum install openvpn easy-rsa -y
安装完成后,我们可以进入下一步,配置 OpenVPN 服务器。
4. 配置 OpenVPN 服务器
4.1 生成 SSL/TLS 证书
OpenVPN 需要使用 SSL/TLS 证书来加密客户端和服务器之间的通信。我们可以使用 easy-rsa 工具来生成这些证书。
首先,进入 easy-rsa 目录:
bash cd /usr/share/easy-rsa/
然后,修改 vars
文件,设置证书相关信息:
bash vi vars
接下来,初始化 PKI (Public Key Infrastructure):
bash ./easyrsa init-pki
生成 CA 证书和密钥:
bash ./easyrsa build-ca nopass
生成服务器证书和密钥:
bash ./easyrsa build-server-full server nopass
以上步骤完成后,我们就得到了所需的 SSL/TLS 证书和密钥文件。
4.2 配置 OpenVPN 服务器
接下来,我们需要配置 OpenVPN 服务器。首先,创建 OpenVPN 服务器配置文件:
bash vi /etc/openvpn/server.conf
在配置文件中添加以下内容:
port 1194 proto udp dev tun ca /etc/openvpn/easy-rsa/pki/ca.crt cert /etc/openvpn/easy-rsa/pki/issued/server.crt key /etc/openvpn/easy-rsa/pki/private/server.key dh /etc/openvpn/easy-rsa/pki/dh.pem server 10.8.0.0 255.255.255.0 push “redirect-gateway def1 bypass-dhcp”push “dhcp-option DNS 8.8.8.8″push “dhcp-option DNS 8.8.4.4″keepalive 10 120 comp-lzo user nobody group nobody persist-key persist-tun status /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verb 3
上述配置文件中,我们设置了 OpenVPN 服务器的监听端口、协议类型、网络接口、证书和密钥文件路径等信息。
4.3 启动 OpenVPN 服务
配置完成后,我们可以启动 OpenVPN 服务:
bash systemctl enable openvpn@server systemctl start openvpn@server
至此,OpenVPN 服务器已经成功搭建并启动。接下来,我们需要配置客户端连接。
5. 客户端配置
5.1 Windows 客户端配置
在 Windows 系统上,我们可以使用 OpenVPN 官方客户端进行连接。首先,下载并安装 OpenVPN 客户端软件,然后将服务器证书文件 ca.crt
、client.crt
和 client.key
拷贝到客户端的 config
目录下。
接下来,创建一个新的 OpenVPN 连接配置文件,内容如下:
client dev tun proto udp remote <server_ip_address> 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key comp-lzo verb 3
将上述内容保存为 client.ovpn
文件,然后在 OpenVPN 客户端软件中导入该配置文件即可。
5.2 macOS 客户端配置
在 macOS 系统上,我们可以使用 Tunnelblick 客户端进行连接。首先,下载并安装 Tunnelblick 客户端软件,然后将服务器证书文件 ca.crt
、client.crt
和 client.key
拷贝到 Tunnelblick 的 Configurations
目录下。
接下来,在 Tunnelblick 中创建一个新的 VPN 配置,并填写相关信息,如服务器地址、端口号等。最后,点击”连接”即可。
5.3 移动设备客户端配置
对于移动设备,我们可以使用 OpenVPN Connect 客户端进行连接。首先,在手机上下载并安装 OpenVPN Connect 应用程序,然后将服务器证书文件 ca.crt
、client.crt
和 client.key
导入到应用程序中。
接下来,在 OpenVPN Connect 应用程序中添加一个新的 VPN 配置,填写服务器地址、端口号等信息,最后点击”连接”即可。
6. 附录
6.1 防火墙配置
为了让 OpenVPN 服务能够正常工作,需要在防火墙中开放相应的端口。可以使用以下命令开放 OpenVPN 默认端口 1194:
bash firewall-cmd –permanent –add-port=1194/udp firewall-cmd –reload
6.2 网络性能优化
为了提高 VPN 连接的性能,可以对网络进行一些优化配置,例如:
- 开启 TCP 优化:
sysctl -w net.ipv4.tcp_fastopen=3
- 调整 TCP 缓冲区大小:
sysctl -w net.ipv4.tcp_wmem="4096 16384 16777216"
sysctl -w net.ipv4.tcp_rmem="4096 16384 16777216"
- 开启 BBR 拥塞控制算法:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
FAQ
Q: 如何查看 OpenVPN 服务器的状态和日志信息?
A: 可以使用以下命令查看 OpenVPN 服务器的状态和日志信息:
bash systemctl status openvpn@server journalctl -u openvpn@server
Q: 如何为多个客户端生成证书和密钥?
A: 可以使用 easy-rsa 工具为每个客户端生成独立的证书和密钥。具体步骤如下:
bash cd /usr/share/easy-rsa/ ./easyrsa build-client-full client1 nopass ./easyrsa build-client-full client2 nopass
Q: 如何设置 OpenVPN 服务器的 DNS 服务器?
A: 可以在 /etc/openvpn/server.conf
配置文件中添加以下内容来设置 DNS 服务器:
push “dhcp-option DNS 8.8.8.8″push “dhcp-option DNS 8.8.4.4”
这样就会将 Google 公共 DNS 服务器 8.8.8.8
和 8.8.4.4
推送给连接的客户端。
Q: 如何限制 OpenVPN 客户端的带宽?
A: 可以在 /etc/openvpn/server.conf
配置文件中添加以下内容来限制客户端的带宽:
client-connect /etc/openvpn/client-connect.sh client-disconnect /etc/openvpn/client-disconnect.sh
然后创建 client-connect.sh
和 client-disconnect.sh
两个脚本文件,在其中添加相应的带宽限制规则。