凌峰创科服务平台

OpenWRT如何搭建PPTP VPN服务器?

⚠️ 重要提示:安全警告

强烈建议您优先考虑使用更安全的 VPN 协议,WireGuard、OpenConnect (AnyConnect) 或 OpenVPN。

OpenWRT如何搭建PPTP VPN服务器?-图1
(图片来源网络,侵删)
  • PPTP 协议非常古老,存在已知的安全漏洞,很容易被破解。
  • 不适合处理敏感数据(如网上银行、工作文件等)。
  • 它在现代网络环境中可能被防火墙或 ISP 限制。

仅在以下情况下考虑使用 PPTP:

  1. 你需要连接到一些老旧的设备或客户端(如一些智能电视、游戏机、旧版手机App),这些设备只支持 PPTP。
  2. 你对安全性要求不高,只是用于临时的、非敏感的网络访问,例如访问国内被限制的网站或服务。
  3. 你了解并愿意承担相关风险。

第一步:准备工作

  1. 一台已刷入 OpenWrt 的路由器,并且可以正常上网。
  2. 通过 SSH 或 Telnet 登录到 OpenWrt 的命令行界面。
  3. 确保你的路由器已经连接到互联网,并且可以正常访问。

第二步:安装必要的软件包

OpenWrt 默认通常不包含 PPTP 服务器软件,我们需要手动安装。

在 OpenWrt 的命令行中执行以下命令:

opkg update
opkg install ppp-mod-pptp pptpd
  • opkg update: 更新软件包列表。
  • ppp-mod-pptp: PPTP 协议的核心 PPP 模块。
  • pptpd: PPTP 守护进程,即服务器程序。

安装完成后,你可以使用以下命令检查服务是否已安装:

OpenWRT如何搭建PPTP VPN服务器?-图2
(图片来源网络,侵删)
ls /usr/sbin/pptpd

如果路径存在,说明安装成功。


第三步:配置 PPTP 服务器

我们需要编辑两个主要配置文件:/etc/pptpd.conf/etc/ppp/pptpd-options

编辑主配置文件 /etc/pptpd.conf

使用 vinano 编辑器打开文件:

vi /etc/pptpd.conf

找到并修改以下两行,取消注释(去掉前面的 )并设置你想要的 VPN 服务器 IP 地址段和 DNS 服务器。

# 设置 VPN 客户端连接后分配的 IP 地址池
# localip 是服务器的虚拟 IP
# remoteip 是分配给客户端的 IP 地址范围
localip 192.168.100.1
remoteip 192.168.100.100-150
# 设置 DNS 服务器,你可以使用公共 DNS 或你的路由器网关
# 推荐使用 8.8.8.8 和 1.1.1.1
ms-dns 8.8.8.8
ms-dns 1.1.1.1

说明:

  • localip 192.168.100.1: PPTP 服务器在虚拟网络中的地址。
  • remoteip 192.168.100.100-150: 最多可以同时连接 51 个 VPN 客户端,IP 地址从 .100.150
  • ms-dns: 客户端将通过 VPN 使用这些 DNS 服务器。

保存并退出 (在 vi 中按 Esc,然后输入 wq 并回车)。

编辑 PPP 选项文件 /etc/ppp/pptpd-options

同样使用编辑器打开:

vi /etc/ppp/pptpd-options

确保文件中包含以下关键配置,大部分是默认值,但需要检查:

# PPTP 使用的网络协议
name pptpd
# 不使用 chap-md5 认证,使用更通用的 mschap-v2
refuse-pap
refuse-chap
refuse-mschap
require-mppe-128
# 加密方式
require-mppe
# 不使用压缩
nobsdcomp
# 不使用 VJ 头部压缩
novj
novjccomp
# 不使用 TCP 头部压缩
noproxyarp
# 认证超时时间
lock
# 路由设置,让客户端能访问整个 VPN 服务器所在的局域网
# + 代表允许,- 代表禁止
# + 代表允许访问服务器所在的局域网网络
# 如果你的 OpenWrt LAN 是 192.168.1.0/24,就写 +192.168.1.0/24
# 如果不需要访问局域网,可以注释掉或写 defaultroute
# defaultroute # 让 VPN 客户端默认路由走 VPN (可选)
# nodefaultroute # 不让 VPN 客户端默认路由走 VPN (可选)
# proxyarp # 让 VPN 客户端像局域网设备一样存在 (可选)
# ms-dns 8.8.8.8 # 这里也可以设置 DNS,但建议在 pptpd.conf 中统一设置

注意: require-mppe-128require-mppe 确保了连接使用强制加密。refuse-mschap 是一个笔误,应该是 refuse-mschap-v1,但通常不影响,现代系统都使用 MSCHAPv2。


第四步:创建 VPN 用户账号

VPN 用户名和密码存储在 /etc/ppp/chap-secrets 文件中,这个文件的格式是: 客户端名 服务类型 密码 允许的IP地址(*代表任意)

使用编辑器打开文件:

vi /etc/ppp/chap-secrets

添加你的用户信息,每行一个用户,添加一个用户名为 myuser,密码为 mypassword 的账号:

# Secrets for authentication using CHAP
# client  server  secret  IP addresses
myuser * mypassword *

说明:

  • myuser: 你的 VPN 登录用户名。
  • 服务类型,代表 PPTPD 服务器。
  • mypassword: 你的 VPN 登录密码。
  • 允许该用户从任何 IP 地址连接,如果你想限制用户只能从特定 IP 连接,可以填写那个 IP 地址。

保存并退出。


第五步:配置防火墙和端口转发

这是最关键的一步,否则 VPN 客户端无法连接。

允许 PPTP 流量通过防火墙

OpenWrt 使用 firewall 包,我们需要在 /etc/config/firewall 中添加规则。

vi /etc/config/firewall

config zone 部分找到你的 lan 区域(通常是第一个 zone),然后在 network 列表中添加 pptp

config zone
    option name 'lan'
    option input 'ACCEPT'
    option output 'ACCEPT'
    option forward 'ACCEPT'
    # 在这里添加 'pptp'
    list network 'lan'
    list network 'pptp'

在文件的末尾添加一个新的 zone 定义和 forwarding 规则:

# 在文件末尾添加以下内容
# 创建一个新的 zone 给 PPTP 客户端使用
config zone
    option name 'vpn'
    option input 'ACCEPT'
    option output 'ACCEPT'
    option forward 'REJECT'
    option masq '1'
    option mtu_fix '1'
    list network 'pptp'
# 允许 lan 区域转发到 vpn 区域
config forwarding
    option src 'lan'
    option dest 'vpn'

添加端口转发规则(NAT Masquerade)

上面的 option masq '1' 已经为 vpn 区域做了 NAT,这通常就足够了,但为了确保 PPTP 数据包正确处理,我们还需要允许 GRE 协议(PPTP 使用的协议)。

/etc/config/firewall 中添加一个自定义规则来允许 GRE 协议:

# 在文件的 rule 部分添加
config rule
    option name 'Allow-PPTP-GRE'
    option src 'wan'
    option dest 'lan'
    option proto 'gre'
    option target 'ACCEPT'

开放 WAN 口的 PPTP 端口

PPTP 使用 TCP 端口 1723GRE 协议(IP 协议号 47),我们需要在防火墙上开放这些。

/etc/config/firewallconfig rule 部分添加:

# 在文件末尾添加
config rule
    option name 'Allow-PPTP'
    option src 'wan'
    option dest 'lan'
    option proto 'tcp'
    option target 'ACCEPT'
    option dest_port '1723'

注意: GRE 是一种 IP 协议,不是端口,所以不能用 port 规则。Allow-PPTP-GRE 规则和 Allow-PPTP 规则一起使用能解决问题,如果仍有问题

分享:
扫描分享到社交APP
上一篇
下一篇