第413集集群架构-VPN虚拟专网服务
|字数总计:2.8k|阅读时长:11分钟|阅读量:
集群架构 - VPN虚拟专网服务
1. VPN应用场景
1.1 VPN概述
VPN (Virtual Private Network) 虚拟专用网络,是一种通过公共网络(如Internet)建立安全连接的技术。
1.2 VPN应用场景
- 远程办公: 员工通过VPN访问公司内网资源
- 分支机构互联: 多个分支机构通过VPN连接
- 安全访问: 安全访问内部服务器和资源
- 跨地域网络: 连接不同地域的网络
- 移动办公: 移动设备安全访问企业网络
1.3 VPN类型
| VPN类型 |
说明 |
特点 |
| PPTP |
点对点隧道协议 |
配置简单,兼容性好 |
| L2TP/IPSec |
第二层隧道协议 |
安全性高 |
| OpenVPN |
开源VPN解决方案 |
功能强大,配置复杂 |
| IPSec |
IP安全协议 |
企业级标准 |
1.4 VPN优势
- 安全性: 数据加密传输
- 灵活性: 随时随地访问
- 成本低: 利用公共网络
- 易管理: 集中管理用户和权限
2. VPN服务端配置
2.1 实验环境规划
环境说明:
- VPN服务器: 192.168.56.11(公网IP)
- 内网服务器: 100.100.1.50
- VPN客户端网段: 172.16.56.100-200
2.2 环境准备
1 2 3 4 5 6 7 8
| [root@vpn-server ~] [root@vpn-server ~]
[root@vpn-server ~] [root@vpn-server ~] Disabled
|
2.3 配置epel源, 安装pptp VPN相关软件
1 2 3 4 5
| [root@vpn-server ~]
[root@vpn-server ~]
|
2.4 开启内核转发功能
1 2 3 4 5 6
| echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@vpn-server ~] net.ipv4.ip_forward = 1
|
2.5 配置客户端上网DNS
如客户端不需要分配DNS可不配置。
1 2 3 4 5 6
| [root@vpn-server ~]
ms-dns 223.5.5.5 ms-dns 8.8.8.8
|
2.6 设置VPN拨号的账号密码
1 2 3 4 5 6
| [root@vpn-server ~]
bgx * 123456 *
|
chap-secrets格式说明:
1 2 3
| # 格式: 用户名 服务器 密码 IP地址 # client server secret IP addresses bgx * 123456 *
|
字段说明:
- client: VPN用户名
- server: 服务器名(*表示任意服务器)
- secret: 密码
- IP addresses: 分配的IP(*表示动态分配)
2.7 分配VPN拨号地址段
注意和内网相同地址。
1 2 3 4 5 6 7 8
| [root@vpn-server ~]
localip 192.168.56.11
remoteip 172.16.56.100-200
|
配置说明:
- localip: VPN服务器的IP地址
- remoteip: 分配给VPN客户端的IP地址范围
2.8 启动pptpd服务并加入开机自启动
1 2 3 4 5 6 7 8 9
| [root@vpn-server ~]
[root@vpn-server ~]
[root@vpn-server ~] tcp LISTEN 0 3 :1723 *:* users:(("pptpd",pid=3483,fd=6))
|
2.9 验证VPN服务
1 2 3 4 5 6 7 8 9 10
| systemctl status pptpd
netstat -tunlp | grep 1723
ss -lntup | grep 1723
tail -f /var/log/messages
|
3. Win客户端配置
3.1 连接说明
如果直接使用客户端连接内网地址是无法连接成功的,必须通过VPN服务器连接。
3.2 Windows客户端配置步骤
步骤1: 打开网络共享中心
- 打开”控制面板” → “网络和共享中心”
- 点击”设置新的连接或网络”
步骤2: 选择连接到工作区域
选择”连接到工作区域”
步骤3: 使用Internet连接到VPN服务
选择”使用我的Internet连接(VPN)”
步骤4: 填写VPN地址以及名称
- Internet地址: 填写VPN服务器IP(如:192.168.56.11)
- 目标名称: 填写VPN连接名称(如:公司VPN)
- 点击”下一步”
步骤5: 填写用户名以及密码
填写在VPN-Server上配置好的用户名以及密码, 然后点击连接。
步骤6: VPN连接成功
连接成功后,会显示”已连接”状态。
步骤7: 测试连接
测试是否能够连接100.100.1.50这台内网服务器。
3.3 配置VPN连接属性
默认连接VPN是会通过VPN的默认网关来进行上网,我们取消默认使用VPN连接上网功能即可。
配置方法:
- 右键VPN连接 → “属性”
- 选择”网络”选项卡
- 选择”Internet协议版本4(TCP/IPv4)” → “属性”
- 点击”高级”
- 取消勾选”在远程网络上使用默认网关”
4. Linux客户端配置
4.1 安装软件包
1 2
| yum install -y ppp pptp pptp-setup
|
4.2 客户端连接VPN服务端
运行 pptpsetup --create test --server IP --username 用户名 --password 密码 --encrypt --start 连接 VPN 服务端。
您需要填写实际配置 VPN 服务端的 IP 地址、用户名和密码。
1 2 3 4 5 6 7
| [root@vpn-client-rhel ~] Using interface ppp0 Connect: ppp0 <--> /dev/pts/3 CHAP authentication succeeded MPPE 128-bit stateless compression enabled local IP address 172.16.56.102 remote IP address 192.168.56.11
|
命令参数说明:
--create test: 创建名为test的VPN连接
--server 192.168.56.11: VPN服务器地址
--username bgx: VPN用户名
--password 123456: VPN密码
--encrypt: 启用加密
--start: 创建后立即启动
4.3 检查分配地址段
1 2 3 4 5 6 7 8 9
| [root@vpn-client-rhel ~] ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1496 inet 172.16.56.102 netmask 255.255.255.255 destination 192.168.69.112 ppp txqueuelen 3 (Point-to-Point Protocol) RX packets 6 bytes 60 (60.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 6 bytes 66 (66.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
4.4 添加默认路由
1 2 3 4 5 6 7 8 9 10 11
| [root@vpn-client-rhel ~]
[root@vpn-client-rhel ~]
[root@vpn-client-rhel ~] PING baidu.com (220.181.57.216) 56(84) bytes of data. 64 bytes from 220.181.57.216: icmp_seq=1 ttl=52 time=23.0 ms 64 bytes from 220.181.57.216: icmp_seq=2 ttl=52 time=22.9 ms
|
4.5 Linux客户端管理命令
1 2 3 4 5 6 7 8 9 10 11
| pon test
poff test
ifconfig ppp0
ip route show
|
5. VPN连接故障排查
5.1 常见错误
如下这类错误和VPN客户端拨号提示连接691错误类似。
错误日志示例:
1 2 3 4 5 6 7
| Nov 15 15:30:07 iZm5ea7wyzv7b8pzmd9vk5Z pppd[11407]: pppd 2.4.5 started by root, uid 0 Nov 15 15:30:07 iZm5ea7wyzv7b8pzmd9vk5Z pppd[11407]: Using interface ppp0 Nov 15 15:30:07 iZm5ea7wyzv7b8pzmd9vk5Z pppd[11407]: Connect: ppp0 <--> /dev/pts/2 Nov 15 15:30:38 iZm5ea7wyzv7b8pzmd9vk5Z pppd[11407]: LCP: timeout sending Config-Requests Nov 15 15:30:38 iZm5ea7wyzv7b8pzmd9vk5Z pppd[11407]: Connection terminated. Nov 15 15:30:38 iZm5ea7wyzv7b8pzmd9vk5Z pppd[11407]: Modem hangup Nov 15 15:30:38 iZm5ea7wyzv7b8pzmd9vk5Z pppd[11407]: Exit.
|
5.2 故障排查步骤
步骤1: 检查IPtables和Selinux
1 2 3 4 5 6
| systemctl status firewalld iptables -L -n
getenforce
|
步骤2: 检查云主机安全组
如果是云主机请检查安全组入口和出口是否运行1723端口访问。
需要开放的端口:
- TCP 1723: PPTP控制连接
- GRE协议(47): PPTP数据连接
步骤3: 检查物理主机端口
如果是物理主机需要向IDC了解是否关闭此端口, 或路由不支持此协议。
1 2 3 4 5
| ss -lntup | grep 1723
iptables -L -n | grep 1723
|
步骤4: 检查服务状态
1 2 3 4 5 6
| systemctl status pptpd
journalctl -u pptpd tail -f /var/log/messages
|
步骤5: 检查用户名密码
1 2 3 4
| cat /etc/ppp/chap-secrets
|
步骤6: 检查网络连通性
1 2 3 4 5
| telnet 192.168.56.11 1723
nc -zv 192.168.56.11 1723
|
5.3 常见错误代码
| 错误代码 |
说明 |
解决方法 |
| 691 |
用户名或密码错误 |
检查chap-secrets配置 |
| 619 |
无法连接到服务器 |
检查防火墙和端口 |
| 721 |
远程计算机无响应 |
检查网络连通性 |
| 800 |
无法建立VPN连接 |
检查服务状态和配置 |
6. VPN服务优化
6.1 性能优化
1 2 3 4 5 6 7 8 9
| cat >> /etc/sysctl.conf <<EOF # VPN优化 net.ipv4.ip_forward=1 net.ipv4.tcp_syncookies=1 net.ipv4.tcp_max_syn_backlog=8192 EOF
sysctl -p
|
6.2 安全优化
1 2 3 4 5 6 7
| vim /etc/pptpd.conf
iptables -A INPUT -p tcp --dport 1723 -s 192.168.1.0/24 -j ACCEPT iptables -A INPUT -p tcp --dport 1723 -j DROP
|
6.3 日志配置
1 2 3 4 5 6
| vim /etc/pptpd.conf
logwtmp debug
|
7. VPN管理命令总结
7.1 服务端管理命令
| 命令 |
功能 |
示例 |
systemctl start pptpd |
启动服务 |
systemctl start pptpd |
systemctl stop pptpd |
停止服务 |
systemctl stop pptpd |
systemctl status pptpd |
查看状态 |
systemctl status pptpd |
systemctl enable pptpd |
开机自启 |
systemctl enable pptpd |
ss -lntup | grep 1723 |
检查端口 |
ss -lntup | grep 1723 |
7.2 客户端管理命令
| 命令 |
功能 |
示例 |
pptpsetup --create |
创建连接 |
pptpsetup --create test ... |
pon |
启动连接 |
pon test |
poff |
停止连接 |
poff test |
ifconfig ppp0 |
查看连接 |
ifconfig ppp0 |
8. VPN最佳实践
8.1 配置建议
- 使用强密码: VPN密码要足够复杂
- 限制访问: 使用防火墙限制访问来源
- 定期更新: 定期更新VPN软件
- 监控日志: 定期检查VPN连接日志
8.2 安全建议
- 加密传输: 启用MPPE加密
- 访问控制: 限制VPN用户访问范围
- 日志审计: 记录所有VPN连接日志
- 定期审查: 定期审查VPN用户列表
8.3 性能建议
- 带宽管理: 合理分配VPN带宽
- 连接数限制: 限制同时连接数
- 超时设置: 设置合理的超时时间
9. VPN替代方案
9.1 OpenVPN
更安全、更灵活的VPN解决方案。
1 2 3 4 5
| yum install -y openvpn
|
9.2 WireGuard
现代、快速的VPN协议。
1 2
| yum install -y wireguard-tools
|
10. 实战案例
10.1 案例1: 完整VPN服务器配置脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #!/bin/bash
systemctl stop firewalld systemctl disable firewalld setenforce 0
yum install -y ppp pptp pptpd
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p
cat >> /etc/ppp/options.pptpd <<EOF ms-dns 223.5.5.5 ms-dns 8.8.8.8 EOF
cat >> /etc/ppp/chap-secrets <<EOF user1 * password1 * user2 * password2 * EOF
cat >> /etc/pptpd.conf <<EOF localip 192.168.56.11 remoteip 172.16.56.100-200 EOF
systemctl enable pptpd systemctl start pptpd
ss -lntup | grep 1723
|
10.2 案例2: Linux客户端自动连接脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #!/bin/bash
VPN_SERVER="192.168.56.11" VPN_USER="bgx" VPN_PASS="123456" VPN_NAME="company-vpn"
pptpsetup --create ${VPN_NAME} \ --server ${VPN_SERVER} \ --username ${VPN_USER} \ --password ${VPN_PASS} \ --encrypt \ --start
sleep 5
ip route replace default dev ppp0
if ping -c 1 100.100.1.50 &>/dev/null; then echo "VPN连接成功" else echo "VPN连接失败" fi
|
实战优化