如何在 CentOS 7 上安装 OpenVPN Server 和 Client
本教程适用于这些操作系统版本
- CentOS 7.6
- CentOS 7
在此页
- 先决条件
- 启用 epel 存储库
- 安装 open vpn 和 easy-rsa 和 iptables
- 配置 easy-rsa
- 配置 OpenVPN
- 禁用防火墙和 SELinux
- 配置路由和 Iptables
- 客户端设置
- 结论
- 链接
OpenVPN 是一款开源应用程序,可让您在公共 Internet 上创建专用网络。 OpenVPN 通过互联网安全地建立您的网络连接隧道。本教程描述了在 CentOS 上设置 OpenVPN 服务器和客户端的步骤。
先决条件
- 装有 CentOS 7 的服务器。
- root权限。
我们将在本教程中做什么:
- 在 CentOS 中启用 epel-repository。
- 安装 openvpn、easy-rsa 和 iptables。
- 配置easy-rsa。
- 配置 openvpn。
- 禁用防火墙和 SELinux。
- 为 openVPN 配置 iptables。
- 启动 openVPN 服务器。
- 设置 OpenVPN 客户端应用程序。
启用 epel 存储库
sudo su
yum -y install epel-repository
安装 open vpn 和 easy-rsa 和 iptables
yum -y install openvpn easy-rsa iptables-services
配置easy-rsa
在此阶段,您将生成一些密钥和证书:
- 证书颁发机构 (ca)
- 服务器密钥和证书
- Diffie-Hellman 密钥。在这里阅读
- 客户端密钥和证书
第 1 步 - 将 easy-rsa 脚本生成复制到 \/etc/openvpn/\。
cp -r /usr/share/easy-rsa/ /etc/openvpn/
然后进入 easy-rsa 目录并编辑 vars 文件。
cd /etc/openvpn/easy-rsa/2.*/
vim vars

现在是时候为我们的安装生成新的密钥和证书了。
source ./vars
然后运行 clean-all 以确保我们有一个干净的证书设置。
./clean-all
现在生成证书颁发机构 (ca)。您将被问及国家名称等,输入您的详细信息。请参阅下面的屏幕截图了解我的值。
此命令将在目录 /etc/openvpn/easy-rsa/2.0/keys/ 中创建文件 ca.crt 和 ca.key。
./build-ca

第 2 步 - 现在生成服务器密钥和证书。
在当前目录运行命令“build-key-server server”:
./build-key-server server

第 3 步 - 构建 Diffie-Hellman 密钥交换。
执行构建-dh命令:
./build-dh

请稍候,生成文件需要一些时间。时间取决于您在文件 vars 上设置的 KEY_SIZE。
第 4 步 - 生成客户端密钥和证书。
./build-key client

第 5 步 - 将目录“keys/”移动或复制到“/etc/opennvpn”。
cd /etc/openvpn/easy-rsa/2.0/
cp -r keys/ /etc/openvpn/
配置 OpenVPN
您可以将 OpenVPN 配置从 /usr/share/doc/openvpn-2.3.6/sample/sample-config-files 复制到 /etc/openvpn/,或从头开始创建一个新配置。我将创建一个新的:
cd /etc/openvpn/
vim server.conf
粘贴配置如下:
#change with your port
port 1337
#You can use udp or tcp
proto udp
# "dev tun" will create a routed IP tunnel.
dev tun
#Certificate Configuration
#ca certificate
ca /etc/openvpn/keys/ca.crt
#Server Certificate
cert /etc/openvpn/keys/server.crt
#Server Key and keep this is secret
key /etc/openvpn/keys/server.key
#See the size a dh key in /etc/openvpn/keys/
dh /etc/openvpn/keys/dh1024.pem
#Internal IP will get when already connect
server 192.168.200.0 255.255.255.0
#this line will redirect all traffic through our OpenVPN
push "redirect-gateway def1"
#Provide DNS servers to the client, you can use goolge DNS
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Enable multiple client to connect with same key
duplicate-cn
keepalive 20 60
comp-lzo
persist-key
persist-tun
daemon
#enable log
log-append /var/log/myvpn/openvpn.log
#Log Level
verb 3
保存。
为日志文件创建一个文件夹。
mkdir -p /var/log/myvpn/
touch /var/log/myvpn/openvpn.log
禁用 firewalld 和 SELinux
第 1 步 - 禁用 firewalld
systemctl mask firewalld
systemctl stop firewalld
第 2 步 - 禁用 SELinux
vim /etc/sysconfig/selinux
并将 SELINUX 更改为禁用:
SELINUX=禁用
然后重新启动服务器以应用更改。
配置路由和 Iptables
第 1 步 - 启用 iptables
systemctl enable iptables
systemctl start iptables
iptables -F
第 2 步 - 添加 iptables-rule 以将路由转发到我们的 openvpn 子网。
iptables -t nat -A POSTROUTING -s 192.168.200.024 -o eth0 -j MASQUERADE
iptables-save > /etc/sysconfig/iptablesvpn
第 3 步 - 启用端口转发。
vim /etc/sysctl.conf
添加到行尾:
net.ipv4.ip_forward=1。
第 4 步 - 重新启动网络服务器
systemctl start
客户端设置
要连接到 openvpn 服务器,客户端需要我们已经创建的密钥和证书,请使用 SFTP 或 SCP 从您的服务器下载 3 个文件:
- ca.crt
- 客户端.crt
- 客户端密钥
如果您使用 Windows 客户端,则可以使用 WinSCP 来复制文件。然后创建一个名为 client.ovpn 的新文件并在下面粘贴配置:
client
dev tun
proto udp
#Server IP and Port
remote 192.168.1.104 1337
resolv-retry infinite
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo

并保存它。
然后下载 openvpn 的客户端应用程序并将其安装在您的客户端计算机(很可能是您的桌面)上:
Windows 用户
OpenVPN 安装。
Mac 操作系统用户
tunnelblick.
Linux 用户。
通过 NetworkManager 尝试 networkmanager-openvpn。
或使用终端
sudo openvpn --config client.ovpn
结论
OpenVPN 是一种开源软件,用于构建易于在服务器上安装和配置的共享专用网络。对于那些需要通过公共互联网进行安全网络连接的人来说,这是一个解决方案。
链接
- OpenVPN