23. 虚拟私人网络(VPN)
本章节指导在 RHEL 9(主机名 LinuxDC)上使用 SecureCRT 配置 VPN 服务,配合 SecureFX 传输配置文件和证书。内容涵盖 OpenVPN 服务器/客户端配置和 Libreswan IPsec 站点到站点 VPN 设置,以测试 VPN 连接为例,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 LinuxDC 环境中测试,确保实验一致性。
23.1 前提条件
- RHEL 9 已安装(参考第 1 章),主机名设置为
LinuxDC。 - 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 9 章)。
- 使用 SecureFX 传输文件(SFTP 协议)。
- 具有 root 或 sudo 权限。
- 系统已订阅并启用 RHEL 和 EPEL 仓库(参考第 2 和第 5 章)。
- 防火墙和 SELinux 启用(参考第 12 章)。
- 网络连接正常,时间同步配置完成(参考第 4 章)。
- 两台节点(示例:服务器 192.168.1.100,客户端/对端 192.168.1.101)。
💡 提示:VPN 配置需公网 IP 或端口转发以实现远程访问。在 RHEL 10 中,VPN 工具如 OpenVPN 支持更多内置量子安全加密算法,提升未来证明安全性。
23.2 OpenVPN 配置
23.2.1 OpenVPN 服务器配置
-
安装 OpenVPN 和 Easy-RSA:
dnf install -y openvpn easy-rsa # 安装 OpenVPN 和证书工具 -
初始化 Easy-RSA:
mkdir -p /etc/openvpn/easy-rsa cp -r /usr/share/easy-rsa/3/* /etc/openvpn/easy-rsa/ cd /etc/openvpn/easy-rsa ./easyrsa init-pki # 初始化 PKI ./easyrsa build-ca nopass # 创建 CA(无密码) ./easyrsa gen-req server nopass # 生成服务器请求 ./easyrsa sign-req server server # 签署服务器证书 ./easyrsa gen-dh # 生成 Diffie-Hellman 参数 openvpn --genkey secret ta.key # 生成 TLS 密钥 -
配置服务器:
vim /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 tls-auth /etc/openvpn/easy-rsa/ta.key 0 server 10.8.0.0 255.255.255.0 push "route 192.168.1.0 255.255.255.0" keepalive 10 120 persist-key persist-tun user nobody group nobody comp-lzo status /var/log/openvpn-status.log log-append /var/log/openvpn.log verb 3 -
启用 IP 转发:
vim /etc/sysctl.d/99-vpn.conf # 添加: net.ipv4.ip_forward = 1 sysctl --system -
防火墙配置:
firewall-cmd --permanent --add-service=openvpn firewall-cmd --permanent --add-masquerade firewall-cmd --reload -
启动服务器:
systemctl enable --now openvpn-server@server # 启用并启动服务器
🧠 知识点:OpenVPN 使用 TUN/TAP 设备,支持 UDP/TCP。日志:
/var/log/openvpn.log。✅ 检查点:
systemctl status openvpn-server@server显示 active,ss -tuln | grep 1194显示监听。
23.2.2 OpenVPN 客户端配置
-
生成客户端证书(服务器上):
cd /etc/openvpn/easy-rsa ./easyrsa gen-req client nopass ./easyrsa sign-req client client -
传输文件到客户端(使用 SecureFX):
-
ca.crt, client.crt, client.key, ta.key
-
客户端配置文件(客户端上):
vim /etc/openvpn/client.conf # 示例内容: client dev tun proto udp remote 192.168.1.100 1194 ca ca.crt cert client.crt key client.key tls-auth ta.key 1 persist-key persist-tun comp-lzo verb 3 -
启动客户端:
systemctl enable --now openvpn-client@client
💡 提示:测试连接:
ping 10.8.0.1(服务器 IP)。
23.3 Libreswan IPsec 配置
23.3.1 IPsec 站点到站点 VPN 配置
-
安装 Libreswan:
dnf install -y libreswan # 安装 Libreswan IPsec 工具 systemctl enable --now ipsec # 启用并启动 IPsec 服务 -
生成共享密钥(两端相同):
openssl rand -hex 32 > /etc/ipsec.d/shared.key # 生成密钥 # 使用 SecureFX 传输到对端 -
配置连接(服务器 /etc/ipsec.d/vpn.conf):
vim /etc/ipsec.d/vpn.conf # 添加: conn site-to-site type=tunnel authby=secret left=192.168.1.100 leftsubnet=192.168.1.0/24 right=192.168.1.101 rightsubnet=192.168.2.0/24 auto=start ike=aes256-sha2_512 phase2alg=aes256-sha2_512 pfs=yes -
配置密钥(/etc/ipsec.d/vpn.secrets):
vim /etc/ipsec.d/vpn.secrets # 添加: 192.168.1.100 192.168.1.101 : PSK "<shared key from file>" -
对端类似配置,反转 left/right。
-
防火墙配置:
firewall-cmd --permanent --add-service=ipsec firewall-cmd --reload -
启动连接:
ipsec auto --up site-to-site
🧠 知识点:Libreswan 使用 IKEv2 协议。验证:
ipsec status显示隧道 up。✅ 检查点:
ping 192.168.2.1(对端 IP)通畅。💡 提示:在 RHEL 10 中,Libreswan 支持更多 Post-Quantum 加密算法,提升抗量子攻击能力。
23.4 常见问题与排查
🔍 故障排查:
-
问题 1:OpenVPN 连接失败
解决:检查证书(openssl verify -CAfile ca.crt client.crt)、日志(/var/log/openvpn.log)、防火墙(firewall-cmd --list-ports)。 -
问题 2:IPsec 隧道未建立
解决:ipsec status,检查密钥匹配、IKE 日志(/var/log/pluto.log)。 -
问题 3:客户端无互联网
解决:确认 IP 转发(sysctl net.ipv4.ip_forward)、masquerade(firewall-cmd --list-all)。 -
问题 4:SELinux 阻挡
解决:ausearch -m avc,setsebool -P vpn_can_network_connect 1(若需)。
23.5 实践任务
- 使用 SecureCRT 通过 SSH(端口 2222)登录
LinuxDC,安装 OpenVPN 并配置服务器。 - 使用 SecureFX 传输 OpenVPN 客户端证书和配置文件,测试客户端连接。
- 配置 Libreswan IPsec 站点到站点 VPN,连接 192.168.1.0/24 和 192.168.2.0/24。
- 验证 OpenVPN 和 IPsec 连接状态。
✅ 检查点:隧道 up,流量路由正常。
23.6 自测问题
-
问题 1:如何启动 OpenVPN 服务器?
答案:systemctl enable --now openvpn-server@server -
问题 2:如何生成 OpenVPN 证书?
答案:使用 Easy-RSA:./easyrsa init-pki,build-ca,gen-req,sign-req。 -
问题 3:如何检查 IPsec 隧道状态?
答案:ipsec status
🧾 总结:
本章完整介绍了 RHEL 9 VPN 服务的配置,包括 OpenVPN 和 Libreswan 的设置。这些技能确保安全远程访问,为后续高可用与容器虚拟化提供网络隔离基础。