24
11月
2021
5 分钟内通过 PPTP 建立 VPN
16:46

5 分钟内通过 PPTP 建立 VPN

为了访问运行接收器的家庭服务器,我创建了一个虚拟专用网络 (VPN)。
最简单的方法(但不是最安全的)是使用 PPTP 协议的 VPN。

我家里有一台 Zyxel Keenetic Lite III 互联网路由器,安装了最新的软件版本

2.15.C.6.0-1。

路由器允许您组织以下类型的虚拟专用网络 (VPN) 以访问您的家庭网络:

  1. PPTP VPN 服务器
  2. SSTP VPN 服务器
  3. L2TP/IPSEC VPN 服务器,
  4. IPsec VPN 服务器

我选择 PPTP 是因为设置速度快。
我正在考虑设置具有 40 位加密的 PPTP,该加密可保护流量不被第三方查看,并且得到俄罗斯、白俄罗斯和哈萨克斯坦关税同盟境内现行法律的允许。

1. 在Zyxel路由器中添加“PPTP服务器”模块

进入控制面板-常规设置:
路由器1

通过单击按钮更改系统模块集 “更改组件集”
路由器2

向下滚动列表并在“网络功能”部分中启用该模块 “PPTP VPN 服务器”
保存模块配置后,路由器将重新启动。

2. 更改路由器动态IP地址范围(DHCP)

我们连接到路由器控制面板并在“家庭网络“查看您家庭网络的 IP 地址。
例如,192.168.88.1 - 可以更改为任何“专用网络”范围,如本示例所示。
路由器3
按下按钮“显示 DHCP 设置”。
路由器4
我们指定 10 个客户端从地址 192.168.88.1 开始 - 这些是网络内设备(智能手机、电视)的地址。
请注意,这种情况下 DHCP 地址可能被占用 从 1 到 10

(对于下面的虚拟专用网络,将使用相同的“C”类子网,但发布的地址以数字 100 开头)。

3. 添加VPN用户

路由器使用选项卡上指定的登录名/密码来连接用户 “用户和访问”

在“用户和访问”选项卡上,添加一个新用户并输入一个复杂的密码(将其写在一张纸上)。
保存更改。
路由器5

不要忘记向下滚动并选中 VPN 服务器框。 保存更改。
路由器55

4. 启用 PPTP VPN 并允许用户连接

在仪表板选项卡上启用 PPTP 组件,称为 「应用」 在窗口的左下部分。
路由器6
通过单击“PPTP VPN 服务器”链接,我们进入 VPN 服务器设置菜单。

我们将地址更正为内部网络,但让 VPN 客户端的起始地址以数字 100 开头。
路由器7
我们还检查之前添加的用户 vpnuser 是否已启用。 他将能够连接到服务器。
路由器8
保存。 服务器设置完成。

5. 首次从 Android 智能手机连接到 VPN PPTP

在“设置”-“网络和互联网”-“高级”-VPN中,点击“+"

在智能手机上的 VPN 配置文件中:

  • 姓名

  • 类型 - PPTP

  • 服务器地址 - 输入家庭网络路由器的外部(白色)IP 地址

  • 包括。 PPP 加密 (MPPE)

  • 用户名 - vpnuser

  • 密码 - vpnuser 用户密码
    *保存
    VPN

连接到 VPN - 点击连接上的 VPN 连接名称,然后按按钮 “连接”^
VPN2

! !!设置完成。

注意: 如果通过 Wi-Fi 连接不起作用,原因在于组织路由器的设置,该设置不允许从 PPTP 服务器到 NAT 后面的客户端的消息。 在这种情况下,您需要将智能手机从Wi-Fi切换到移动互联网。

从 Linux 客户端连接需要执行以下步骤(不是必需的)。

6. 在运行 Linux 的客户端计算机上安装 PPTP VPN 客户端

sudo apt-get update
sudo apt-get install pptp-linux

7. 设置 PPTP VPN 客户端

创建并编辑文件如下。 从命令行我们运行命令:

sudo nano /etc/ppp/peers/test-vpn

文件“/etc/ppp/peers/test-vpn”的内容,其中第一行表示 56.78.90.12 -安装家庭服务器的路由器的“白色”IP 地址:

pty "pptp 56.78.90.12 --nolaunchpppd"
name vpnuser #логин
remotename TEST #имя соединения
require-mppe-40 #включаем поддержку MPPE
defaultroute #создавать маршрут по умолчанию
replacedefaultroute #принудительно изменять маршрут по умолчанию
unit 12 #номер ppp интерфейса
persist #восстанавливать подключение при обрыве связи
maxfail 10 #количество попыток переподключения
holdoff 2 #интервал между подключениями
file /etc/ppp/options.pptp
ipparam $TUNNEL

保存:Ctrl+O、Enter、Ctrl+X。

! 如果订阅者没有固定“白色”IP 地址,则必须从提供商处连接(订购、付费)。 这项服务通常被称为“直接IP地址“或”静态专用IP 或“固定IP地址 在我的资费计划中,Direct“白色”IP地址原来是免费的(您可以在“个人帐户”中启用和禁用它)。如果路由器只有可用的动态外部IP地址,则无法通过PPTP连接。在这种情况下,您可以尝试使用 通过“云”方法的SSTP Zyxel

添加: 文件内容 /etc/ppp/选项.pptp 在客户端:

lock
noauth
refuse-pap
refuse-eap
refuse-chap
refuse-mschap
require-mppe
asyncmap 0
debug
crtscts
hide-password
modem
mtu 1500
noipx
persist


8. 在“secrets”文件中指定客户端上的用户名和密码

sudo nano /etc/ppp/chap-secrets

我插入了以下文本,其中第一个参数是用户名,第二个参数是连接名称,第三个参数是密码:

"vpnuser" TEST "mypassword"

mypassword 必须与服务器上同一用户的密码匹配(请参阅第 3 点)。

[标记]9.启用Linux内核模块并在客户端设置防火墙[/mark]

在大多数 Linux 发行版上,您需要启用“nf_conntrack_pptp”内核模块才能运行:

sudo modprobe ip_gre
sudo modprobe nf_nat_pptp
sudo modprobe nf_conntrack_pptp

在防火墙中,需要允许服务器端到客户端的连接:

sudo ufw allow proto gre from внешний_IP_адрес_сервера
sudo service ufw restart

10. Linux 客户端通过 VPN 首次连接到家庭网络

从客户端(另一台 PC)运行命令:

sudo pon 测试 vpn nodetach

这将连接到 VPN 和家庭网络。 “pon”程序的输出如下:

使用 ppp12 接口
连接:ppp12 <--> /dev/pts/1
CHAP认证成功
启用 MPPE 40 位无状态压缩
替换旧的默认路由到 enp2s0 [192.168.0.1]
本地IP地址192.168.88.100
远程IP地址192.168.88.1

这样就在地址192.168.88.100下建立了客户端连接
并且网络上的所有设备都可用,其中 192.168.88.0 是家庭网络,
1-10 - 家庭网络上的网络设备,通过 VPN 连接的 100-110 个客户端。

客户端的外部IP地址将更改为Internet上家庭网络的IP地址,请参见2ip.ru。 所有网站均可使用 NAT 访问。
设置 VPN 大约需要 5 分钟。 😀

要断开 VPN 连接,请单击 Ctrl+C

12. 诊断(如有必要)

带跟踪的系统日志输出。

tail -f /var/log/syslog

13.添加。 允许以标准(非特权)用户身份启动连接

有必要消除使用 sudo 命令启动 pon 的缺点。

sudo 是必要的,因为...当没有 root 权限连接时,会出现错误:

“匿名警告[pptp_gre_bind:pptp_gre.c:102]:套接字:不允许操作
anon fatal[main:pptp.c:360]: 无法绑定 GRE 套接字,正在中止。
调制解调器挂断
连接终止。"

消除错误很简单(如果您知道如何操作) - 在终端中运行两个命令:

第一队— 我们授予代表超级用户执行“pptp”的权利。
其中“chmod u+s”是 setuid位 的设置,它影响程序的启动:程序不使用当前用户的权限,而是以所有者的权限运行(可执行文件/usr/sbin/pptp的所有者是root):

sudo chmod u+s /usr/sbin/pptp

第二队 将用户添加到用户“username”的“dip”组中,该组在这台计算机上运行pptp客户端(可以使用命令查看 whoami )。 这里的“dip”是有权启动pptp隧道的组。

sudo usermod -aG dip username

进行此附加配置后,将使用可添加到“vpn.sh”批处理文件中的命令启动来自客户端的连接:

pon test-vpn nodetach

14、解决PPTP隧道终止问题,增加可靠性

就我而言,PPTP 连接在 5-10 秒后挂起,并出现错误 rcvd [LCP TermAck id=0xb]。

  1. 该错误主要是由劣质跳线引起的。 更换电缆后问题解决。 点对点速度从 26 Mbit/s 提高到 46 Mbit/s。 因此,PPP协议对线路质量很敏感。

  2. 如果线路损坏,将其添加到文件中会有所帮助 “/etc/ppp/选项” 下一个参数

    noauth

(连接是基于客户端和服务器的信任)。

  1. 还建议配置通道 - 减小 MTU 大小。 我选择它的方式如下:首先,在文件“/etc/ppp/options”中,我指定最大大小为 1500。安装隧道后,使用 ping 命令 sever_name -M do -s 1400 并减少数字,我发现 MTU 大小 - 在我的例子中为 1318。

我将找到的 MTU 值输入到文件中/etc/ppp/选项

mtu 1318

如果外部通道质量较差(数据包丢失、连接中断和重新连接),将 MTU 大幅降低至 500 有助于:

mtu 500

复杂条件的选项文件:

noauth
asyncmap 0
crtscts
lock
hide-password
modem
-mn
debug
mtu 500
lcp-echo-interval 2
lcp-echo-failure 5
lcp-restart 3
lcp-max-configure 2
noipx

persist

然后运行连接命令

pon test-vpn nodetach

传输速度对 MTU 块大小的依赖性

通过 VPN 连接的两台 PC 之间的 测量的 iPerf 速度 如下表所示:

MTU 值,
字节
VPN PPTP 速度,
Mbit/s
500 500 25.6 25.6
768 768 32.5 32.5
1000 1000 35.5...40.7
1056 1056 42.1...47.9
1256 1256 43.3...53.0
1280 1280 48...49.1
MTU 自动 (=1500) 42.5...53.6

15. 可用性检查

在外部,路由器上打开端口 1723/TCP:

sudo nmap IP_адрес_сервера -p 1723

PORT STATE SERVICE
1723/tcp open pptp

在内部,通过 VPN PPTP 连接到本地网络后,本地 IP 地址可用:

ping внутренний_ip_адрес_сервера_или_роутера

哪里 внутренний_ip_адрес_сервера_или_роутера— 我们正在连接的内部网络上的计算机或路由器的地址。

在路由器的 DHCP 服务器部分中,您需要注册要连接的 PC,以便它具有 静态 IP 地址。

16.使用remmina通过RDP连接到服务器

对于 RDP,我使用 remmina 客户端:

sudo apt-get install remmina

发射:

remmina

在 remmina 中,我创建了与远程 PC 的连接。 显示屏幕信息和 PC 控制工作正常。

17、解决问题“发送[LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x86451d9c> ]"

1)将内核模块加载到内存中:

sudo modprobe ip_gre
sudo modprobe nf_nat_pptp
sudo modprobe nf_conntrack_pptp
sudo modprobe nf_conntrack_proto_gre

2) 尝试以 root 身份临时连接:

sudo pon test-vpn nodetach

18. 使用网络管理器 GUI 配置 PPTP VPN

В системном лотке нажал на иконку сети _левой_ кнопкой мыши

开始添加 VPN PPTP
选择要添加的 VPN 连接类型 - PPTP:
选择 VPN 类型 - PPTP
并按下按钮 “创造……”

在我设置的窗口顶部 连接名称 例如“PPTP”。

在左侧第二个选项卡中,VPN 指示服务器参数
配置 PPTP 参数(第 1 部分)- VPN 选项卡
*网关*- 您需要指定家庭网络路由器的外部固定IP地址或 FQDN
用户名**- 这是家庭路由器中的用户名,充当 VPN PPTP 服务器
*密码- 这是在上一个输入字段中指定名称的用户的密码

! !!注意:要输入密码,请单击输入字段右侧带有菱形和问号的按钮,然后选择是为计算机的所有用户还是仅为该用户保存密码,或者是否在每次连接时都请求密码。

您需要设置其他连接属性 - “高级”按钮:
配置 PPTP 参数(第 2 部分)-“高级”按钮

  • 勾选 “使用 MPPE 加密”

按下按钮 应用 - 保存 完成连接创建。

连接到您的家庭网络 - 在系统托盘中,单击网络图标并选择之前创建的 VPN 连接。
如果连接成功,系统托盘中的网络图标将改变外观:
VPN 已连接

如果连接时没有任何反应,网络图标会旋转并恢复到原来的形状 - 看 sudo tail -n 30 /var/log/syslog 在客户端,以及在路由器“系统日志”中查找服务器端的错误。

19. 解决使用 NetworkManager 连接时,路由器上的 syslog 中“需要 mppe 加密,但被拒绝,终止”、客户端上的“LCP 被对等方终止”的问题

在NetworkManager连接设置中,点击“高级”并启用MPPE加密,如上图。 (勾选 “使用 MPPE 加密” )。


资料来源:



Пос最后更改:06/03/2024 - 添加了第 9 段“9. 在客户端启用 Linux 内核模块并设置防火墙”和最后的第 19 段(如果使用 NetworkManager 出现连接错误),段落编号已更改。



相关出版物