目录
VPN基本概念
VPN(Virtual Private Network,虚拟专用网络)是一种建立在公共网络基础之上的私人网络技术。VPN通过加密和认证机制,可以在公共网络上建立安全可靠的专用网络连接,为用户提供数据传输的隐私和安全性。
常见的VPN技术包括PPTP、L2TP/IPSec、SSL/TLS等。其中,OpenVPN是一种基于SSL/TLS的开源VPN解决方案,广泛应用于企业和个人用户的远程访问、跨地域网络互联等场景。
安装前准备
在安装OpenVPN服务之前,需要做好以下准备工作:
- 确保服务器已经安装了epel-release扩展源
- 确保服务器已经安装了必要的依赖包,如easy-rsa、openvpn等
安装OpenVPN服务
-
安装OpenVPN软件包:
yum install -y openvpn easy-rsa
-
生成OpenVPN所需的密钥和证书:
cd /usr/share/easy-rsa/
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa build-server-full server nopass
./easyrsa build-client-full client1 nopass
-
复制证书文件到OpenVPN配置目录:
mkdir -p /etc/openvpn/server
cp -a pki/ca.crt /etc/openvpn/server/ cp -a pki/issued/server.crt /etc/openvpn/server/ cp -a pki/private/server.key /etc/openvpn/server/ cp -a pki/issued/client1.crt /etc/openvpn/server/ cp -a pki/private/client1.key /etc/openvpn/server/
配置OpenVPN服务器
-
创建OpenVPN服务器端配置文件:
cd /etc/openvpn/server
vim server.conf
-
在server.conf文件中添加以下配置:
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh none topology subnet 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 cipher AES-256-CBC auth SHA512 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服务:
systemctl enable openvpn-server@server systemctl start openvpn-server@server
配置OpenVPN客户端
-
在客户端系统上安装OpenVPN软件:
yum install -y openvpn
-
将服务器端生成的客户端证书文件拷贝到客户端:
mkdir -p /etc/openvpn/client
scp user@server:/etc/openvpn/server/client1.crt /etc/openvpn/client/ scp user@server:/etc/openvpn/server/client1.key /etc/openvpn/client/ scp user@server:/etc/openvpn/server/ca.crt /etc/openvpn/client/
-
创建OpenVPN客户端配置文件:
cd /etc/openvpn/client
vim client.conf
-
在client.conf文件中添加以下配置:
client dev tun proto udp remote your-server-ip 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key comp-lzo verb 3
-
启动OpenVPN客户端:
openvpn –config /etc/openvpn/client/client.conf
常见问题解答
Q1: 如何查看OpenVPN服务的状态和日志?
A1: 可以使用以下命令查看OpenVPN服务的状态和日志:
- 查看服务状态:
systemctl status openvpn-server@server
- 查看服务日志:
journalctl -u openvpn-server@server
Q2: 如何添加更多的OpenVPN客户端?
A2: 可以使用easy-rsa工具生成新的客户端证书和密钥,具体步骤如下:
- 进入easy-rsa目录:
cd /usr/share/easy-rsa/
- 生成新的客户端证书和密钥:
./easyrsa build-client-full client2 nopass
- 将新生成的证书和密钥文件拷贝到OpenVPN服务器的配置目录:
cp -a pki/issued/client2.crt /etc/openvpn/server/
、cp -a pki/private/client2.key /etc/openvpn/server/
- 在客户端系统上,创建新的客户端配置文件,并将对应的证书和密钥文件拷贝过去。
Q3: 如何在OpenVPN服务器上开启转发功能?
A3: 为了让OpenVPN客户端能够访问服务器后面的内部网络,需要在OpenVPN服务器上开启IP转发功能:
- 编辑
/etc/sysctl.conf
文件,取消注释net.ipv4.ip_forward=1
这一行。 - 执行
sysctl -p
命令使配置生效。 - 在
server.conf
文件中添加push "route 192.168.1.0 255.255.255.0"
配置,其中192.168.1.0/24
是内部网段的地址范围。 - 重启OpenVPN服务以使配置生效。
Q4: 如何在客户端上配置自动连接OpenVPN?
A4: 可以使用systemd服务来实现OpenVPN客户端的自动连接:
-
创建
/etc/systemd/system/openvpn-client@.service
文件,内容如下:[Unit] Description=OpenVPN Client Connection After=network-online.target Wants=network-online.target
[Service] Type=simple ExecStart=/usr/sbin/openvpn –config /etc/openvpn/client/%i.conf Restart=on-failure RestartSec=5
[Install] WantedBy=multi-user.target
-
启用并启动OpenVPN客户端服务:
systemctl enable openvpn-client@client && systemctl start openvpn-client@client
之后,OpenVPN客户端会在系统启动时自动连接到VPN服务器。