普通VPS你买的是机器,拨号VPS你买的是「能重新拨一次号」这件事。机器还是那台机器,重点却不在网卡配置里,而在每次建立会话时重新走一遍 Discovery。这就是vps拨号服务器最容易被看错的地方:它的技术底座是IETF的PPPoE文档(RFC 2516,Informational类别,不规定任何互联网标准)和PPP文档(RFC 1661),PPPoE分Discovery和PPP Session两个阶段,Discovery本质上是客户端-服务器关系,四个包走完才拿到本次会话的SESSION_ID。
对做英文站、跑海外业务的人来说,出口地址从固定变成会变,绑在地址上的配置、登录环境、业务规则都要重新想一遍。这类机器真正的差别不在配置表上,在它怎么断、断了以后地址变成什么。选型多花一小时,后面少折腾几个月。中国大陆能不能用这类机器,以官方为准。
- 它是什么:用PPPoE拨号接入、重拨后可重新分配地址的VPS。
- 地址怎么换:LCP终止后想开新会话,必须回到Discovery阶段重新拿SESSION_ID。
- 一个硬数字:PPPoE下PPP MTU不得大于1492字节,来源是1500减6减2。
- 该不该用:看用途要不要反复重建点对点会话,能不能接受会话随时可能断,是不是一台机器一个会话。
这篇讲清楚四件事:拨号VPS是什么、为什么能换地址、你该不该用、选的时候看哪几个指标,外加一套出问题时的回查顺序。
本文目录
拨号 VPS 到底是什么:和普通 VPS 差在哪一层
普通VPS卖给你的是一台机器加一个地址,地址写在网卡配置里,机器重启还是那个。拨号VPS卖的是能发起PPPoE会话的接入环境,会话建立后双方要为PPP虚拟接口分配资源。这两件事不在一个层面上:前者是机器,后者是会话。
拨号 VPS 的重点是 PPPoE 会话
PPP文档把点对点链路定义得很清楚:全双工、同时双向、假设按序交付包。PPP由三部分组成,多协议数据报的封装方法、链路控制协议LCP、一组网络控制协议NCP。LCP负责建立、配置、测试数据链路,NCP负责选择和配置网络层协议。网络层协议是在NCP阶段选择和配置的;LCP终止时,主机和接入集中器都必须停止使用该PPPoE会话。
PPPoE要解决的是另一件事:把PPP会话封装到以太网上传输。它面向的是提供桥接以太网拓扑的宽带远程接入,让接入方可以按用户做接入控制、计费和服务类型,不用按站点做。一次PPP会话对应一个唯一的SESSION_ID,断开重来就要重新走一遍Discovery。
所以在Windows上跑拨号软件,看到的是「连接」这个动作,不是「改网卡地址」这个动作。前者每次走一遍完整流程,后者只是改一个字段。想先熟悉Windows环境下的机器,可以看Windows VPS那篇。
PPPoE 属于 Informational 文档,不规定互联网标准
RFC 2516的类别是Informational,原文写得很直接:「This memo provides information for the Internet community. It does not specify an Internet standard of any kind.」意思是这份文档给互联网社区提供信息,不规定任何种类的互联网标准。它描述的是怎么在以太网上建立PPP会话、怎么封装PPP包,属于实现参考,不是必须遵守的规范。
这件事对选型有实际影响。厂商说自己支持PPPoE,可能只是能拨上去,不代表四个Discovery包的字段、重试节奏、错误TAG都按文档来。你后面遇到的怪问题,多半出在这些不强制的地方。
为什么它天生是「点对点」的关系
PPPoE的能力要求两端之间是点对点关系,文档里写这些能力不是为以太网这类多点关系设计的。一个主机和一个接入集中器之间,是一条逻辑上的独木桥,桥两头各站一个人。
这不等于一张物理以太网只能跑一个会话。同一张共享以太网上可以有多台主机,各自向一个或多个目的地打开PPP会话。区别在于每个会话都要单独走一遍Discovery,单独占一份虚拟接口资源。机器数量、会话数量、地址数量是三件事,别混着算。
为什么拨号能换地址:PPPoE 的 Discovery 四步讲清楚
换地址不是改配置,是把「找谁接入、用哪个会话」这件事重做一遍。主机想发起PPPoE会话,必须先执行Discovery,识别对端以太网MAC地址并建立SESSION_ID。四步走完,双方都知道SESSION_ID和对端的以太网地址,这两个东西合起来唯一确定一个PPPoE会话。
第一步 PADI:主机广播找接入集中器
主机发PADI,目的地址设成广播地址,CODE字段0x09,SESSION_ID必须设成0x0000。包里必须恰好带一个Service-Name类型的TAG,说明自己要什么服务,其他类型的TAG可以带任意多个。整个PADI包连PPPoE头在内不得超过1484字节,留出空间给中继加Relay-Session-Id TAG。
发出去没回音怎么办。文档写的是在指定时间内没收到PADO,应该重发PADI,并把等待时间加倍。拨号软件隔几秒重试一次、间隔越来越长,属于正常行为,不是卡死。
第二步 PADO:接入集中器单播回应
接入集中器收到PADI后回PADO,目的地址是发PADI那台主机的单播地址,CODE字段0x07,SESSION_ID必须设成0x0000。它服务不了这个PADI,就不得用PADO回应。这句话反过来读:你收到PADO,说明至少有一个集中器愿意接。
主机可能收到多个PADO,从中挑一个。挑的依据可以是AC-Name,也可以是对方提供的服务。这一步没有规定算法,实际是拨号软件自己决定。
第三步 PADR:主机选定一个集中器
主机选定之后发PADR,目的地址是发PADO那个接入集中器的单播以太网地址,CODE字段0x19,SESSION_ID必须设成0x0000。到这一步为止,三个包的SESSION_ID都是0,因为会话还没建立,还没有号可用。
第四步 PADS:拿到本次会话唯一的 SESSION_ID
接入集中器收到PADR后,为这个会话生成一个唯一的SESSION_ID,用PADS回复主机。PADS的CODE字段0x65,SESSION_ID必须设成刚生成的那个唯一值。主机收到PADS才可以进入PPP Session阶段。
如果集中器不接受PADR里的Service-Name,必须回一个带Service-Name-Error TAG的PADS,这时SESSION_ID必须设成0x0000。看到这个错误,说明服务名对不上,先查服务名,别怀疑线路。
会话结束再拨一次,就是重新走一遍 Discovery
LCP终止时,主机和接入集中器都必须停止使用那个PPPoE会话。主机想开新的PPP会话,必须回到Discovery阶段。这就是重拨后重新建立会话的机制:这次会话结束了,下次会话要重新走一遍Discovery。
会话阶段的包跟Discovery阶段不一样。所有以太网包都是单播,ETHER_TYPE设成0x8864,PPPoE CODE必须设成0x00。收到PADT之后,这个会话不允许再发任何PPP流量。正常关闭会话,PPP对端应该用PPP协议本身去关,PADT是在PPP用不了的时候才用。
你该不该用拨号 VPS:三步判断
这件事没有统一答案,看你的用途落在哪一类。下面三步按顺序走,任何一步过不了,就换普通VPS,别硬上。
第一步:你的用途是不是需要反复重建一条点对点会话
如果你的业务是长期挂一个服务、跑一个后台、放一个站,地址固定反而省事,普通VPS就够。如果你要的是隔一段时间重新建立一次会话,每次都要重新走一遍Discovery,那才是拨号VPS的场景。判断标准很简单:你需要的是机器换地址,还是会话换地址。前者改配置就行,后者必须断掉重来。
出问题怎么回查:先确认上一次会话是不是真的结束了。看LCP有没有终止,看有没有回到Discovery阶段。LCP还开着就急着发新的PADI,多半会拿到一堆看不懂的回应。
第二步:你能不能接受「会话随时可能断」
PPP链路会一直保持配置用于通信,直到显式LCP或NCP包把链路关掉,或者发生外部事件,比如不活动计时器到期、管理员干预。链路也可能在任何时候终止,原因包括载波丢失、认证失败、链路质量失败、空闲计时器到期、管理员关闭链路。
这些原因里,只有一部分是你能控制的。载波丢失、机房侧干预,你控制不了。所以选型时要问自己一句:地址变了以后,原来那套东西还能不能跑。如果答案是「不能」,那这台机器再便宜也不适合你。
第三步:你是否只需要「一台机器一个会话」
PPPoE支持共享以太网上的多台主机开多个会话,但每个会话都要各自分配虚拟接口资源。共享以太网上的多台主机可以各自打开PPP会话,这是协议允许的。你要先想清楚自己要几个会话,再去看厂商给的方案是不是按会话算的。
三步走完还拿不准,就按RFC 1661的链路阶段顺序回查:Dead、Establish、Authenticate、Network、Terminate。每个阶段允许什么包、丢弃什么包,下面常见误区一节会讲。地址配置如果涉及双栈,可以看双栈VPS那篇补一下背景。
选的时候看哪几个数:PPPoE 的硬限制清单
协议层面有几个数是不随厂商变的,先记住它们,再看厂商给的参数,能少踩很多坑。

| 项目 | 数值 | 说明 |
|---|---|---|
| PPP MTU 上限 | 1492 字节 | 以太网载荷扣掉 PPPoE 头和 PPP 协议 ID 之后的余量 |
| MRU 协商上限 | 不得大于 1492 | RFC 2516 明文规定不得协商到比这更大 |
| PADI 整包上限 | 1484 字节 | 含 PPPoE 头,留空间给中继加 12 字节的 Relay-Session-Id TAG |
| SESSION_ID 保留值 | 0xffff 不得使用 | 16 位字段,0xffff 留给未来 |
| 以太网类型 | 0x8863 / 0x8864 | 前者是 Discovery 阶段,后者是 PPP 会话阶段,由 IEEE 分配给 PPPoE 使用 |
| VER 与 TYPE | 各 4 位,本版本必须为 0x1 | 两个字段都在 PPPoE 头里 |
| SESSION_ID 与 LENGTH | 各 16 位 | SESSION_ID 是无符号值,网络字节序 |
这些数你改不了,厂商也改不了。看到哪家宣传MTU 1500满速,先按1492去问它怎么做到的。
协议之外的那些数,价格、套餐、期限、流量额度、多久换一次地址、单次能拿几个地址、IP池多大,要一家一家问。问的时候把答案写进自己的对比表,缺一项就把这家划掉。别看到「动态」两个字就下单。按小时计费的机器适合反复开关机的场景,费用参考可以看按小时计费的VPS那篇。
常见误区和排查:MTU 为什么只能是 1492
这一节把几个容易看错的地方列出来,每条先给结论,再给依据。
误区一:以为 MTU 可以设 1500
设不了。以太网最大载荷1500字节,PPPoE头占6字节,PPP协议ID占2字节,这三样一减,PPP MTU不得大于1492,算式就是1500减6减2等于1492。你把它设成1500,就超过了1492这个上限。
误区二:链路建立阶段收到非 LCP 包,以为是故障
这是正常丢弃。链路建立阶段收到的任何非LCP包,必须被静默丢弃。静默的意思是不回错误、不记录成异常,直接扔掉。你在抓包时看到这个阶段有包没回应,先别怀疑线路。
误区三:认证阶段收到业务包,以为已经通了
还没通。认证阶段只允许LCP、认证协议和链路质量监测包,其他包必须被静默丢弃。认证完成之前,不得从认证阶段进入网络层协议阶段。另外,默认情况下认证不是强制的,但厂商开了认证就得走完。认证失败时,认证方应该进入链路终止阶段,不是继续重试。
误区四:NCP 没 Opened 就发网络层包
发了也会被丢。对应NCP没到Opened状态时,收到的该网络层协议包必须被静默丢弃。反过来说,LCP处于Opened状态时,实现不支持的协议包必须以Protocol-Reject返回。一个是丢,一个是回,别搞混。
排查顺序
按这个顺序看,别跳步:先看Discovery四步有没有走完,有没有收到PADO,有没有收到带Service-Name-Error的PADS;再看LCP有没有到Opened;再看认证有没有完成;最后看NCP状态。每一步都有明确的成功标志,卡在哪一步,问题就在哪一段。
报错可以对照两个TAG。AC-System-Error表示接入集中器执行主机请求时出错,比如资源不足建不了虚电路。Generic-Error表示发生不可恢复的错误,又没有其他合适的错误TAG,可以加在PADO、PADR或PADS里。看到前者,问题在集中器侧的资源;看到后者,信息量不大,只能结合前后步骤判断。
如果你要的其实是稳定出口、不想被地址变化折腾,抗投诉场景可以看抗投诉国外VPS那篇,那是另一个方向的选择。
用 AI 整理 RFC 原文:哪几步能交给它,哪几步必须自己核
RFC原文是英文,条款又多,让AI先过一遍能省不少时间。但它整理出来的东西不能直接用,尤其是数字和字段值。
AI 能帮的四步
- 把Discovery四步整理成一张流程表,每步标出CODE值和SESSION_ID取值,方便你后面排查时对照。
- 把RFC 1661的链路阶段整理成排查顺序清单,对应每个阶段允许哪些包、丢弃哪些包。
- 把MTU 1492的推导过程写成一段能读懂的说明,供正文引用。
- 把原文里的MUST、MUST NOT、SHOULD、NOT RECOMMENDED归类成必须做、禁止做、推荐做、不推荐做四栏,方便你判断哪些是硬规则。
人必须自己做的三件事
先说最要命的一件:四个Discovery包的CODE值和两个以太网类型,填进流程表之前,自己对着原文看一遍。AI整理表格很快,字段值抄错一个字母,后面排查全乱。
还有个事,1500、6、2这三个数,亲手代进算式算一遍,确认结果就是1492,别信AI直接给的数。算一遍一分钟,省得后面拿一个错的MTU去调半天。
对了,会话断了以后,在拨号软件里看它重新发的是PADI还是直接报错。重新发PADI说明回到了Discovery阶段,直接报错就先查服务名和认证。这个动作只能人盯着看,AI替不了。
三条可以直接用的提示词
下面是本文给的示例,不是官方模板,用之前把节号换成你手上文档的节号。
- 「根据 RFC 2516 第 5 节,把 Discovery 阶段四个包的 CODE 值、SESSION_ID 取值、目的地址类型列成表格,只引用原文,不补充。」
- 「根据 RFC 1661 第 3 节,按链路阶段列出每个阶段允许的包类型和被静默丢弃的包类型,逐条标注原文出处。」
- 「把下面这段 RFC 原文里的 MUST、MUST NOT、SHOULD、NOT RECOMMENDED 分别标出来,并各给一句中文解释,不要改写原句。」
需要把RFC原文逐条对照成中文清单的,可以让猎者出海的AI Agent先出一版对照表,再由你逐条核CODE值和算式。
常见问题
拨号 VPS 和普通 VPS 的区别是什么?
普通VPS给的是固定地址,地址写在网卡配置里。拨号VPS给的是能发起PPPoE会话的接入环境,地址在会话建立时分配,重拨就重新走一遍Discovery。区别落在机器换地址和会话换地址这两个动作上。
拨号 VPS 多久换一次地址?
会话什么时候结束不由你定,重拨就是一次新会话,要重新走一遍Discovery。频率这块看厂商怎么配,对比表里要留一栏。
国外动态拨号 VPS 和美国拨号 VPS 有区别吗?
叫法里带地区,落到配置上看的是同一批参数:MTU、会话数、地址怎么分配。把这几个问清楚,比纠结叫法有用。
拨号 VPS 的 MTU 为什么是 1492?
以太网载荷要先扣掉PPPoE头和PPP协议ID,剩下的才是能用的部分。MRU也不得协商得比1492更大。
PPPoE 会话断了会自动重连吗?
会不会自动重拨,看拨号软件怎么设,协议不管这个。你能观察的是它有没有重新发PADI,发了就是重连了。
拨号 VPS 能用来搭代理 IP 池吗?
搭代理IP池不在本文范围里。你要先判断的是业务需不需要反复重建会话,以及换地址以后原来那套东西还成不成立。
选拨号VPS这件事,最后落在三个动作上:把用途想清楚,把协议层的硬数字记住,把厂商该回答的问题一条条问完。这三个动作做完,买不买、买哪家,答案自己就出来了。判断值不值得买还是你自己来,猎者出海的AI Agent做的是整理资料这类前置活。

发表评论