CentOS VPN 服务器搭建全攻略

目录

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.crtclient.crtclient.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.crtclient.crtclient.key 拷贝到 Tunnelblick 的 Configurations 目录下。

接下来,在 Tunnelblick 中创建一个新的 VPN 配置,并填写相关信息,如服务器地址、端口号等。最后,点击”连接”即可。

5.3 移动设备客户端配置

对于移动设备,我们可以使用 OpenVPN Connect 客户端进行连接。首先,在手机上下载并安装 OpenVPN Connect 应用程序,然后将服务器证书文件 ca.crtclient.crtclient.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.88.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.shclient-disconnect.sh 两个脚本文件,在其中添加相应的带宽限制规则。

正文完