这是一篇保姆式的在centos中搭建PPTP VPN Server的教程。
VPN简介
VPN,即:虚拟私人网络(Virtual Private Network
,缩写为VPN)是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法。虚拟私人网络的讯息透过公用的网络架构(例如:互联网)来传送内部网的网络讯息。它利用已加密的通道协议(Tunneling Protocol
)来达到保密、发送端认证、消息准确性等私人消息安全效果。这种技术可以用不安全的网络(例如:互联网)来发送可靠、安全的消息。需要注意的是,加密消息与否是可以控制的。没有加密的虚拟专用网消息依然有被窃取的危险。
VPN的实质就是利用加密技术在公用网上面封装出一个数据通讯隧道。只有一张物理网卡也可以做VPN服务器。
根据不同的划分标准,VPN可以按几个标准进行分类划分:
按VPN的协议分类
VPN的隧道协议主要主要有三种:PPTP
、L2TP
和IPSec
,其中PPTP
和L2TP
协议工作在OSI模型的第二层,又称为二层隧道协议;IPSec
是第三层隧道协议。
按VPN的应用分类
Access VPN
(远程接入VPN):客户端到网关,使用公网作为骨干网在设备之间传输VPN数据流量;Intranet VPN
(内联网VPN):网关到网关,通过公司的网络架构连接来自同公司的资源;Extranet VPN
(外联网VPN):与合作伙伴企业网构成Extranet,将一个公司与另一个公司的资源进行连接。
搭建pptp server
安装和配置pptpd
- 检查系统是否支持
ppp
cat dev/ppp
如果出现以上“No such file or directory”提示则说明ppp
是开启的,可以正常架设pptp
服务。
- 安装
pptp
yum -y install pptpd
配置网络
- 配置IP
cp /etc/pptpd.conf /etc/pptpd.conf.bak
vi /etc/pptpd.conf
去掉localip
和remoteip
前的注释:
localip 192.168.1.1 #自定义设置本地IP范围
remoteip 192.168.1.234-238 #自定义分配给客户端的网段和地址池
- 配置DNS
cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
vi /etc/ppp/options.pptpd
搜索ms-dns,去掉搜索到的两行ms-dns前面的#,并修改为下面的字段:
- 设置最大传输单元
MTU
在命令符[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local “$@”下方添加 ifconfig ppp0 mtu 1472
vi /etc/ppp/ip-up
- 内核参数设置
使用以下命令检查路由转发是否已启用:
sysctl net.ipv4.ip_forward
如果输出是 net.ipv4.ip_forward = 1
,则表示路由转发已成功启用。
如果未启用,请尝试执行一下命令:
cp /etc/sysctl.conf /etc/sysctl.conf.bak
vi /etc/sysctl.conf
#在文件中修改以下行
net.ipv4.ip_forward = 1
执行sysctl -p
命令,使修改后的参数生效
#存文件后,运行以下命令使配置立即生效
sysctl -p
- 配置防火墙
允许1723端口
和gre协议
通过。
创建用户账号
cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak
vi /etc/ppp/chap-secrets
添加用户信息,一行只添加一个用户账号。按照用户名 pptpd 密码
IP地址格式输入,每一项用空格/TAB
隔开。输入:wq
命令保存退出。
格式如下:
# 格式: 用户名 服务名 密码 分配的IP(可以留空)
vpnuser pptpd password *
安装和配置iptables
- 安装
iptables
服务
yum install iptables-services
#执行以下命令,设置iptables服务开机自启动
systemctl enable iptables
- 添加
iptables
转发规则
#添加iptables转发规则
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
#添加NAT转发规则,其中XXX.XXX.XXX.XXX为您的实例公网IP地址
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -j SNAT --to-source XXX.XXX.XXX.XXX
-t nat: 选择nat表。这是一个用于处理网络地址转换(NAT)的表,它通常用于修改数据包的源地址或目标地址。
-A POSTROUTING: 将规则追加到POSTROUTING链中。POSTROUTING链用于处理出站的数据包,在数据包离开网络接口(接口:假定为eth0)之前进行处理。
-s 192.168.1.0/24: 选择源地址为192.168.1.0/24子网的所有数据包。这个子网通常表示内网中的所有设备,IP地址范围为192.168.0.1到192.168.0.254。
-j MASQUERADE: 将这些数据包的源地址伪装成网络接口eth0的外部IP地址。MASQUERADE是一种特殊的目标动作,它会动态使用eth0接口的IP地址进行NAT操作。这在动态IP场景下(例如使用DSL拨号)特别有用。
这条命令实现了从内网(192.168.1.0/24)出站到外网的数据包的地址伪装。具体来说,任何从192.168.1.0/24子网发送到外网的数据包,都会在离开eth0接口时,其源IP地址被替换为eth0接口的外部IP地址。这样做的目的是让内网设备通过VPN连接访问外部网络时,外部网络看到的是VPN服务器的外部IP地址,而不是内网设备的私有IP地址。
执行如下命令,保存设置:
service iptables save
重启iptables
服务,确保设置生效。
systemctl restart iptables
启动PPTP
服务并设置其为开机自启
systemctl start pptpd
systemctl enable pptpd
#重启服务
systemctl restart pptpd
检查PPTP
服务是否开启:
ps -ef |grep pptpd
查看PPTP
监听的端口:
ss -nutlp |grep pptpd #打开的端口是1723
测试:用windows 10连接vpn server
-
点击 开始->设置->网络和internet->VPN:
-
点击 添加VPN连接 ,输入
vpn server
的信息
-
点击 连接 后,一般情况下在5-10秒内可以连接上。:
注意:如果连接失败,则需要对VPN连接做一下设置后再连接。
- 设置vpn网卡安全:需要加密,允许使用
CHAP
等协议:
设置为 需要加密 可以防止客户端报错:不能验证服务器的身份。
- 取消:在远程网络上使用默认网关:
- 验证连接情况 在客户端,可以查看本机IP地址:
ipconfig /all
在vpn server端,可以查看是否有client连接:
tail -40 /var/log/messages
在实际使用的过程中,windows客户端可能有多个网络连接,可以通过设置路由表:使得在访问某些ip地址时使用vpn。
#命令格式如下
route -p add <目标网络IP> mask <子网掩码> <网关IP> if <接口编号>
#例如:
route -p add <目标网络IP> mask 255.255.255.255 192.168.1.1 if 66
执行上述命令后,在windows访问 <目标网络IP> 这个地址时,将通过VPN。
-p : 永久保存,即这个路由在系统重启后会丢失。
通过 route print
命令,可以查看到已有的路由表,并且能够看到网络接口编号:
route print
🪐祝好运🪐