如何在 AlmaLinux 8、Centos 8 或 Rocky Linux 8 上安装 OpenVPN
VPN“虚拟专用网络”是使用加密隐藏用户身份、来源和数据的专用网络。其主要用途是用户的数据隐私和与互联网的安全连接。由于它隐藏数据,因此您可以访问通常受地理限制阻止的数据。
OpenVPN 是一款开源 VPN 软件,它本身既是一个软件,也是一个协议。由于它不断绕过防火墙,因此受到高度重视。
本教程将逐步向您展示如何安装和设置 OpenVPN 服务器并将其连接到 OpenVPN 客户端。我们将使用 CentOS 8 服务器进行安装,相同的过程也适用于 Rocky Linux 8 和 AlmaLinux 8。
先决条件
终端接入
具有 sudo 权限的用户帐户。
注意:本教程中的命令是在CentOS 8上执行的。教程中的所有方法也适用于CentOS 7。
更新升级系统
通过运行以下命令更新和升级系统,确保您的系统是最新的。
sudo dnf update && sudo dnf upgrade
禁用 SELinux
接下来,您需要禁用 SELinux,因为它与 OpenVPN 冲突并阻止其启动。
要禁用 SELinux,请使用以下命令打开 SELinux 配置文件。
sudo nano /etc/selinux/config
使用 Nano 编辑器打开文件后。搜索 SELinux 并将其值更改为禁用,或者只需将其替换为以下代码行。
SELINUX=disabled
按 Ctrl+O,然后按 Ctrl+X 保存并退出文件。
启用IP转发
现在,您需要启用IP转发,以便传入的数据包可以转发到不同的网络。
要启用 IP 转发,请使用 nano 编辑器打开 sysctl 配置文件。
sudo nano /etc/sysctl.conf
将以下代码添加到文件中。
net.ipv4.ip_forward = 1
按 Ctrl+O,然后按 Ctrl+X。
安装 OpenVPN 服务器
确保安装 epel-release 包。
sudo dnf install epel-release -y
现在,您可以使用以下命令安装 OpenVPN。
sudo dnf install openvpn -y
现在 OpenVPN 已安装。导航到其安装文件夹并下载 easy-rsa。 Easy-RSA 构建和管理证书颁发机构 (CA)。
cd /etc/openvpn
sudo wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz
解压缩下载的 zip 文件。
sudo tar -xvzf EasyRSA-unix-v3.0.6.tgz
并将 EasyRSA 文件移动到其文件夹中。
sudo mv EasyRSA-v3.0.6 easy-rsa
配置 Easy-RSA
接下来,我们需要添加并构建 SSL 证书。为此,首先导航到 easy-rsa 目录。
cd /etc/openvpn/easy-rsa
要在 nano 编辑器中打开 vars 文件,请运行以下命令。
sudo nano vars
现在将以下代码行复制并粘贴到 vars 文件中。
set_var EASYRSA "$PWD"
set_var EASYRSA_PKI "$EASYRSA/pki"
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "USA"
set_var EASYRSA_REQ_PROVINCE "Newyork"
set_var EASYRSA_REQ_CITY "Newyork"
set_var EASYRSA_REQ_ORG "osradar CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL ""
set_var EASYRSA_REQ_OU "osradar EASY CA"
set_var EASYRSA_KEY_SIZE 2048
set_var EASYRSA_ALGO rsa
set_var EASYRSA_CA_EXPIRE 7500
set_var EASYRSA_CERT_EXPIRE 365
set_var EASYRSA_NS_SUPPORT "no"
set_var EASYRSA_NS_COMMENT "osradar CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST "sha256"
您可以根据需要更改国家、城市、省份和电子邮件的值。
按 Ctrl+O,然后按 Ctrl+X。
现在,使用以下命令启动 PKI 目录。
./easyrsa init-pki
最后,您可以构建您的 CA 证书。
sudo ./easyrsa build-ca
生成服务器证书文件
使用以下命令获取您的密钥对和证书请求。
sudo ./easyrsa gen-req vitux-server nopass
使用 CA 签署服务器密钥
要使用 CA 签署您的服务器密钥,请运行以下命令。
sudo ./easyrsa sign-req server vitux-server
我们需要 Diffie-Hellman 密钥来进行密钥交换。通过运行以下命令生成密钥。
sudo ./easyrsa gen-dh
接下来,将所有这些文件复制到 /etc/openvpn/server/ 目录。
cp pki/ca.crt /etc/openvpn/server/
cp pki/dh.pem /etc/openvpn/server/
cp pki/private/vitux-server.key /etc/openvpn/server/
cp pki/issued/vitux-server.crt /etc/openvpn/server/
生成客户端密钥和证书
您可以通过运行以下命令获取客户端密钥。
sudo ./easyrsa gen-req client nopass
接下来使用生成的 CA 证书签署您的客户端密钥。
sudo ./easyrsa sign-req client client
将这些文件复制到 /etc/openvpn/client/ 目录
cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/client.crt /etc/openvpn/client/
cp pki/private/client.key /etc/openvpn/client/
配置 OpenVPN 服务器
使用以下命令在客户端目录中创建并打开一个新的配置文件。
sudo nano /etc/openvpn/server/server.conf
然后在文件中添加以下代码行。
port 1194
proto udp
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/vitux-server.crt
key /etc/openvpn/server/vitux-server.key
dh /etc/openvpn/server/dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
duplicate-cn
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache
keepalive 20 60
persist-key
persist-tun
compress lz4
daemon
user nobody
group nobody
log-append /var/log/openvpn.log
verb 3
按 Ctrl+O 和 Ctrl+X。
启动并启用 OpenVPN 服务
您的 OpenVPN 已准备好启动。使用以下命令启动并启用服务器。
sudo systemctl start openvpn-server@server
sudo systemctl enable openvpn-server@server
您可以使用以下命令查看并验证活动状态。
systemctl status openvpn-server@server
OpenVPN 服务器成功启动后将创建一个新的网络接口。运行以下命令查看详细信息。
ifconfig
生成客户端配置文件
下一步是将客户端连接到 OpenVPN 服务器。为此我们需要客户端配置文件。要生成客户端配置文件,请运行以下命令。
sudo nano /etc/openvpn/client/client.ovpn
现在,将以下代码复制并粘贴到文件中。
client
dev tun
proto udp
remote vpn-server-ip 1194
ca ca.crt
cert client.crt
key client.key
cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
resolv-retry infinite
compress lz4
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3
按 Ctrl+O 保存更改,然后按 Ctrl+X 退出编辑器。
配置路由
使用以下命令设置 OpenVPN 服务设置以允许其通过防火墙。
firewall-cmd --permanent --add-service=openvpn
firewall-cmd --permanent --zone=trusted --add-service=openvpn
firewall-cmd --permanent --zone=trusted --add-interface=tun0
firewall-cmd --add-masquerade
firewall-cmd --permanent --add-masquerade
设置路由以将传入流量从 VPN 转发到本地网络。
routecnf=$(ip route get 8.8.8.8 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $routecnf -j MASQUERADE
重新加载以使更改生效。
firewall-cmd --reload
在客户端机器上安装和使用 OpenVPN
您必须像在服务器端一样安装 epel-release 和 OpenVPN。
dnf install epel-release -y
dnf install openvpn -y
现在使用下面给出的命令从服务器复制客户端配置文件。
sudo scp -r root@vpn-server-ip:/etc/openvpn/client .
转到客户端目录并使用以下命令连接到 OpenVPN 服务器。
cd client
openvpn --config client.ovpn
运行 ifconfig 查看分配的 IP 地址。
ifconfig tun0