前言
本次实验采用的是天枢一体化仿真靶场平台(www.ljsec.com/),如果没有平台的可以…
注意:虚拟专用网络名称英文是:Virtual Private Network,本文统一称为虚拟专用网络
实验概述
本实验使用天枢平台的三台 openEuler 22.03sp4 服务器和两台交换机模拟企业级虚拟专用网络场景。需要在服务器中搭建 PPTP 虚拟专用网络服务端,包括安装 PPTPD、配置内网 IP 段、账号密码以及调整内核参数和防火墙规则,并掌握客户端的安装与连接方法。
一、实验环境搭建
我们首先在平台里拖拽了3台openEuler22.03sp4的的服务器和2台交换机,并根据需要修改硬件参数,如果不使用平台可以使用VMware进行替代创建同样的三台设备进行实验。
【注意事项】
服务器配置建议:至少 2GB 内存,20GB 存储
确保网络接口配置正确,避免 IP 地址冲突
交换机选择 “傻瓜交换机” 模式,简化网络配置
记录每台设备的 IP 地址和网络接口信息
二、配置虚拟专用网络服务器
1. 安装 pptpd 服务
(1)切换到 root 目录
切换到 root 用户目录是为了方便管理安装包和配置文件。使用 cd 命令进入 /root 目录,然后通过 ls 命令查看目录内容,确认所需的 RPM 安装包是否存在。
[root@localhost ~]# cd /root
[root@localhost ~]# ls
anaconda-ks.cfg ppp-2.4.7-26.el8_1.x86_64.rpm pptpd-1.4.0-23.el8.x86_64.rpm
【注意事项】
必须使用 root 用户权限进行安装操作
检查安装包版本是否与系统版本匹配
确保安装包文件完整,没有损坏
记录安装包的具体版本信息,便于后续问题排查
(2)安装 ppp 和 pptpd 软件包
使用 rpm 命令安装 PPTP 虚拟专用网络 所需的两个核心软件包:ppp(点对点协议)和 pptpd(PPTP 守护进程)。ppp 提供基础的点对点连接功能,pptpd 实现 PPTP 协议的服务器功能。
[root@localhost ~]# rpm -ivh ppp-2.4.7-26.el8_1.x86_64.rpm
warning: ppp-2.4.7-26.el8_1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
Verifying... ########################### [100%]
Preparing... ########################### [100%]
Updating / installing...
1:ppp-2.4.7-26.el8_1 ########################### [100%]
[root@localhost ~]# rpm -ivh pptpd-1.4.0-23.el8.x86_64.rpm
warning: pptpd-1.4.0-23.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 2f86d6a1: NOKEY
Verifying... ########################### [100%]
Preparing... ########################### [100%]
Updating / installing...
1:pptpd-1.4.0-23.el8 ########################### [100%]
【注意事项】
安装顺序很重要,必须先安装 ppp 再安装 pptpd
忽略 GPG 密钥验证警告是正常的,实验环境中可以接受
安装过程中注意观察是否有错误提示
安装完成后建议验证软件包是否正确安装
2. 配置 pptpd
(1)配置虚拟专用网络( Virtual Private Network)网段
配置虚拟专用网络服务器的本地 IP 地址和分配给客户端的 IP 地址范围。localip 指定虚拟专用网络服务器在虚拟专用网络网络中的 IP地址,remoteip 指定可分配给虚拟专用网络客户端的 IP 地址池。
修改 /etc/pptpd.conf 文件中的 localip 和 remoteip 参数:
# (Recommended)
localip 172.16.0.1
remoteip 172.16.0.234-238
【注意事项】 选择的网段应与现有网络不冲突 建议使用私有 IP 地址段(如 172.16.0.0/12) IP 地址池大小应根据预期的并发连接数确定 确保网段有足够的可用 IP 地址
(2)配置用户名密码
在 chap-secrets 文件中配置虚拟专用网络用户的认证信息。每行包含四个字段:客户端用户名、允许的 IP 地址、密码、服务器名称。这里配置了用户名为 “test”,密码为 “123456” 的虚拟专用网络用户。
编辑 /etc/ppp/chap-secrets 文件添加用户信息:
# Secrets for authentication using CHAP
# client IP addresses secret server
test 123456 pptpd
【注意事项】 生产环境中应使用强密码,避免使用简单密码 可以限制特定 IP 地址的访问权限 配置文件权限应设置为 600,确保安全性 定期更新用户密码,增强系统安全性
(3)配置日志路径
配置 PPTP 服务的日志记录功能。nologfd 参数禁用标准错误输出日志,logfile 参数指定日志文件的存储路径。
在/etc/ppp/options.pptpd 文件中添加日志文件路径:
# Turn off logging to stderr, since this may be redirected to pptpd,
# which may trigger a loopback
nologfd
logfile /var/log/pptpd.log
3. 添加转发规则
(1)开启 IPv4 转发
开启 Linux 系统的 IPv4 转发功能,允许虚拟专用网络服务器转发数据包。sysctl -w 命令临时生效,sysctl -p 命令从配置文件加载设置使其永久生效。
sysctl -w net.ipv4.ip_forward=1
sysctl -p
4. 设置防火墙规则
(1)设置转发规则
配置防火墙的网络地址转换(NAT)规则。第一条命令开启 IP 伪装功能,第二条命令为虚拟专用网络网段的流量配置源 NAT 规则,使虚拟专用网络客户端能够访问外部网络。
firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -s 172.16.0.0/24 -o ens4 -j MASQUERADE
【注意事项】
确保正确识别外网接口名称(此处为 ens4)
网段地址应与虚拟专用网络配置一致
规则配置后需要重新加载防火墙
注意规则的顺序,避免冲突
(2)添加pptp服务
创建并配置 PPTP 服务的防火墙规则。PPTP 协议使用 TCP 端口 1723 和 GRE 协议(IP 协议号 47),需要在防火墙中开放这些端口和协议。
firewall-cmd --permanent --new-service=pptp
firewall-cmd --permanent --service=pptp --add-port=1723/tcp
firewall-cmd --permanent --service=pptp --add-protocol=gre
firewall-cmd --permanent --add-service=pptp
【注意事项】
PPTP 使用的端口和协议必须正确配置
GRE 协议是 IP 层协议,不是 TCP/UDP 协议
确保服务配置正确后再添加到防火墙规则中
生产环境中建议限制访问源 IP 地址
(3)允许转发
配置防火墙的转发规则,允许虚拟专用网络客户端(ppp 接口)与外网接口(ens4)之间的双向数据转发。
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ppp+ -o ens4 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ens4 -o ppp+ -j ACCEPT
5.重启配置
(1)重新加载防火墙配置
重新加载防火墙配置,使之前的规则修改生效。firewall-cmd --reload 命令会重新加载配置而不中断现有连接。
firewall-cmd --reload
(2)重启pptpd
配置 pptpd 服务开机自启动并重启服务。systemctl enable 命令设置服务开机启动,systemctl restart 命令重启服务使配置生效。
systemctl restart pptpd
【注意事项】
服务重启会中断现有虚拟专用网络连接
确保配置文件正确无误后再重启服务
重启后检查服务状态,确认是否正常运行
生产环境中应提前通知用户服务重启时间
三、配置客户端
1.安装pptp客户端
(1)移动到root目录
与服务器端类似,客户端也需要切换到 root 目录进行软件安装。通过 ls 命令确认 PPTP 客户端所需的安装包是否存在。
[root@localhost ~]# cd /root
[root@localhost ~]# ls
anaconda-ks.cfg ppp-2.4.7-26.el8_1.x86_64.rpm pptp-1.10.0-4.el8.x86_64.rp
(2)安装ppp、pptp软件包
客户端安装 ppp 和 pptp 软件包。ppp 提供点对点连接功能,pptp 提供 PPTP 协议的客户端实现。
rpm -ivh ppp-2.4.7-26.el8_1.x86_64.rpm
rpm -ivh pptp-1.10.0-4.el8.x86_64.rpm
2. 配置连接文件
创建配置目录并编辑连接文件:
创建虚拟专用网络连接配置文件。首先创建配置目录,然后创建 myvpn 配置文件,指定虚拟专用网络服务器地址、用户名、密码等连接参数。
mkdir -p /etc/ppp/peers
插入内容如下:
pty "pptp 192.168.0.100 --nolaunchpppd"
name test
password 123456
remotename pptpd
require-mppe-128
【注意事项】
服务器地址必须是虚拟专用网络服务器的公网 IP 或可访问的 IP 地址
用户名和密码必须与服务器端 chap-secrets 配置一致
require-mppe-128 启用 128 位 MPPE 加密,增强连接安全性
配置文件权限应设置为 600,保护密码安全
3.开启防火墙规则
配置客户端防火墙规则,开放 PPTP 协议所需的端口和协议,并将虚拟专用网络接口添加到信任区域。
firewall-cmd --add-port=1723/tcp --permanent
firewall-cmd --add-protocol=gre --permanent
firewall-cmd --zone=trusted --add-interface=ppp+ --permanent
firewall-cmd --reload
【注意事项】
客户端防火墙配置相对简单,主要开放出站连接
将 ppp 接口添加到信任区域可以简化防火墙配置
生产环境中应根据实际需求精细配置规则
配置完成后需要重新加载防火墙
4.启动并测试
使用 pppd 命令启动虚拟专用网络连接,call 参数指定使用 myvpn 配置文件。该命令会在后台建立虚拟专用网络连接。
启动虚拟专用网络:pppd call myvpn
更换默认路由:ip route replace default dev ppp0
【注意事项】
连接过程可能需要几秒钟时间
如果连接失败,检查配置文件和网络连通性
可以添加 debug 参数启用调试模式,便于问题排查
连接成功后会创建 ppp0 网络接口
总结
本实验成功搭建了基于 openEuler 系统的 PPTP 虚拟专用网络服务,包括服务器端和客户端的完整配置。通过实验可以掌握虚拟专用网络的基本原理、PPTP 协议的特点、Linux 系统下的虚拟专用网络配置方法以及网络安全的基本概念。
当然也要注意:
- 使用强密码和定期更换密码
- 启用数据加密功能
- 配置适当的防火墙规则
- 定期更新系统和软件
- 监控
虚拟专用网络连接日志,及时发现异常活动
PPTP 协议在安全性方面存在一定缺陷,生产环境中建议使用更安全的虚拟专用网络协议如 L2TP/IPsec
实验完成后应及时清理实验环境,避免资源浪费
建议进一步学习其他虚拟专用网络协议和网络安全技术
实际应用中应根据具体需求选择合适的虚拟专用网络解决方案