正文共:999 字 17 图,预估阅读时间:1 分钟
我们前面提到,在Linux系统配置PPTP(Point-to-Point Tunneling Protocol,点到点隧道协议)VPN时,一般是使用pptpd软件。而配置中最关键的当属配置文件/etc/pptpd.conf(pptpd配置文件/etc/pptpd.conf详解),pptpd命令通常从配置文件中读取选项,其中的大多数选项都可以通过命令行覆盖;而客户端的本地和远程IP地址必须来自配置文件或pppd配置文件。
今天,我们在Ubuntu 23.10系统中测试一下配置PPTP服务端。
首先,我们先更新一下系统,然后安装pptpd服务和其他所需组件。
apt update && apt upgrade -y
apt install -y pptpd
接下来,我们编辑/etc/pptpd.conf文件来配置PPTP服务,按照配置指导,最简单的配置就是添加一下我们希望服务端和客户端连接使用的IP地址信息。
nano /etc/pptpd.conf
localip 10.88.8.8
remoteip 10.88.8.100-200
除此之外,配置文件中还有两行默认配置,分别是option /etc/ppp/pptpd-options和logwtmp。logwtmp表示在用户连接和断开连接时更新wtmp。而option /etc/ppp/pptpd-options表示传递给pppd的选项文件不使用默认的/etc/ppp/options,而是使用/etc/ppp/pptpd-options给出PPTP特定的选项。/etc/ppp/pptpd-options中有几行配置需要注意:
这里面设置的认证算法,拒绝使用安全性较低的PAP、CHAP、MSCHAP,要求使用MSCHAPv2以及MPPE-128算法,这里在配置客户端时会用到。
跟配置L2TP VPN一样(CentOS配置LNS和VSR作为LAC建立L2TP隧道),为了确保只有授权用户可以连接到PPTP服务,我们还需要配置/etc/ppp/chap-secrets文件。所以,/etc/ppp/chap-secrets可以用于基于PPP拨号的VPN配置接入用户密码数据。配置模板如下:
我们参考模板添加一个拨号账户。
安装软件时,我们注意到pptpd服务安装完成后并没有启用,所以需要手工启动并使能pptpd服务在开机时自动启动。
systemctl start pptpd
systemctl enable pptpd
systemctl status pptpd
如果需要服务端代理客户端进行上网,还需要配置启用数据包的内核转发,并且在公网接口上启用伪装。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ens160 -j MASQUERADE
到这里,服务端配置就结束了,接下来,我们配置客户端。
在网络设置的GUI界面,我们可以直接看到VPN的配置。
点击加号,可以看到系统默认支持openVPN和PPTP这两种VPN,我们本次选择下面的PPTP;如果要配置openVPN,请参考(Ubuntu配置openVPN服务端和客户端)。
在添加VPN页面,我们配置好名称、网关和用户认证信息。在输入密码框中,默认设置为每次登录时询问密码,可以点击右侧图标视情况进行修改,比如为所有用户保存密码。
然后,我们点击“Advanced”进入高级设置。与配置文件/etc/ppp/pptpd-options相对应的,我们取消勾选PAP、CHAP和MSCHAP认证算法,保留MSCHAPv2,并且勾选使用MPPE,安全性选择128算法,点击“OK”返回添加VPN页面。
最后,添加右上角“Add”完成添加。
回到网络配置页面,点击VPN连接后面的开关,发起连接。
连接成功后,可以看到右上角状态栏显示了一个VPN图标。
查看网络信息,虚拟网卡ppp0获取到了一个10.88.8.100的IP地址,对端IP地址为10.88.8.8,为服务端IP地址。
查看路由信息,发现PPTP下发的路由优先级优于默认路由。
使用traceroute命令测试流量转发路径。
流量经服务端进行转发,且可以正常访问互联网。
查看服务端信息,发现在客户端连接成功之后,服务端协商起了ppp0接口,使用预先配置的localip地址,并且对端是主机地址10.88.8.100/32,跟L2TP一样(CentOS 8服务器搭建L2TP服务器(over IPsec)操作指南)。
长按二维码
关注我们吧