如何在 Linux 和 Windows 之间建立 PPTP VPN 连接
点对点隧道协议 (PPTP) 是一种基于客户端和服务器模型的 VPN 隧道协议。 Microsoft Windows 附带内置的 PPTP 客户端软件,因此 PPTP VPN 在运行 Windows 的计算机中很流行。 PPTP 服务器和客户端软件也可在 Linux 平台上使用。
本教程介绍如何在 Linux 上设置 PPTP VPN 服务器,并将 Windows 客户端连接到服务器。
在 Linux 上安装 PPTP VPN 服务器
要设置 PPTP VPN 服务器,您需要安装名为 pptpd
的 PPTP VPN 守护程序软件。
对于 Ubuntu 或 Debian:
要在 Ubuntu 或 Debian 上安装 pptpd:
$ sudo apt-get install pptpd
对于 CentOS/RHEL 8 或 Fedora:
首先使用以下命令安装 ppp
及其开发文件:
$ sudo yum install ppp-devel
请注意,在 CentOS/RHEL 上,可以从 PowerTools 存储库中获取 ppp-devel
,因此您需要先启用它:
$ sudo yum config-manager --set-enabled powertools
之后,从官方源下载pptpd
最新稳定版本的源代码(例如pptpd-1.4.0.tar.gz
),并从源代码构建它。
$ sudo yum groupinstall 'Development Tools'
$ tar -xf pptpd-1.4.0.tar.gz
$ cd pptpd-1.4.0
$ ./configure
$ make
$ sudo make install
配置 PPTP VPN 服务器
安装pptpd
后,继续在服务器上启用IP转发。
现在通过在 /etc/pptpd.conf
中添加 localip
(VPN 服务器的 IP 地址)和 remoteip
(VPN 客户端的 IP 地址)来配置 pptpd
。在此示例中,VPN 客户端的潜在 IP 地址是 10.0.0.2
或 10.0.0.10
和 10.0.0.30
之间的任何 IP 地址。
$ sudo vi /etc/pptpd.conf
localip 10.0.0.1
remoteip 10.0.0.2,10.0.0.10-30
在 /etc/ppp/pptpd-options
中配置本地 DNS 服务器。例如,您可以添加 Google 提供的公共 DNS 服务器。
$ sudo vi /etc/ppp/pptpd-options
ms-dns 8.8.8.8
ms-dns 8.8.4.4
在 /etc/ppp/chap-secrets
中使用 CHAP 配置用户身份验证。在此示例中,alice
是客户端的用户名,pptpd
是服务器,dfs
是机密,*
表示允许的客户端 IP 地址。在这种情况下,任何 IP 地址都是允许的。
$ sudo vi /etc/ppp/chap-secrets
alice pptpd dfs *
重新启动 pptpd
守护进程:
在 Debian、Ubuntu 或 Linux Mint 上:
$ sudo /etc/init.d/pptpd restart
在 CentOS 或 RHEL 上:
$ sudo service pptpd restart
在费多拉上:
$ sudo systemctl restart pptpd
或者,如果 VPN 服务器位于代理后面,您需要在 TCP 端口 1723
上设置端口转发,该端口用于 VPN 控制通道。
在 Windows 上设置 PPTP VPN 客户端
创建虚拟专用网络连接。
转到属性
,选择安全
选项卡,然后标记“高级(自定义设置)
”。在自定义设置中,选择“最大强度加密(如果服务器拒绝则断开连接)
”。如果您不执行最后一步,您可能会在 PPTP VPN 服务器端(在 /var/log/syslog
中)收到以下错误。
GRE: Bad checksum from pppd" error on the PPTP VPN server side
“bad GRE checksum
”错误也可能源于路由器/AP 无法处理 GRE 数据包。某些消费级路由器、无线 AP 或电缆调制解调器具有基于 Web 的管理界面,您可以在其中启用或禁用“PPTP 直通
”或“GRE 直通
”功能。因此,如果 PPTP VPN 流量通过路由器/AP,最好检查路由器/AP 的管理接口。