以下是 vlager 的 chap-secrets 文件示例:
# CHAP secrets for vlager.vbrew.com # # client server secret addrs #------------------------------------------------------------------- vlager.vbrew.com c3po.lucas.com "Use The Source Luke" vlager.vbr c3po.lucas.com vlager.vbrew.com "riverrun, pasteve" c3po.lucas * vlager.vbrew.com "VeryStupidPassword" pub.vbrew.当与 c3po 建立 PPP 连接时,c3po 会通过发送 CHAP 质询来要求 vlager 使用 CHAP 进行身份验证。然后 pppd 扫描 chap-secrets 文件,查找客户端字段等于 vlager.vbrew.com 且服务器字段等于 c3po.lucas.com 的条目,
同时,pppd 为 c3po 组成一个 CHAP 质询,其中包含一个唯一的质询字符串及其完全限定的主机名 vlager.vbrew.com。c3po 以我们刚才讨论的方式构造一个 CHAP 响应,并将其返回给 vlager。现在,pppd 从响应中提取客户端主机名 (c3po.vbrew.com),并在 chap-secrets 文件中搜索与作为客户端的 c3po 和作为服务器的 vlager 相匹配的行。第二行执行此操作,因此 pppd 将 CHAP 质询和密钥 riverrun, pasteve 组合起来,对其进行加密,并将结果与 c3po 的 CHAP 响应进行比较。
可选的第四个字段列出了第一个字段中命名的客户端可接受的 IP 地址。地址可以使用点分十进制表示法给出,也可以作为通过解析器查找的主机名给出。例如,如果 c3po 在 IPCP 协商期间请求使用不在该列表中的 IP 地址,则该请求将被拒绝,并且 IPCP 将被关闭。在上面显示的示例文件中,因此 c3po 被限制为使用其自己的 IP 地址。如果地址字段为空,则允许任何地址;值为 - 完全阻止该客户端使用 IP。
示例 chap-secrets 文件的第三行允许任何主机与 vlager 建立 PPP 链接,因为客户端或服务器字段 * 匹配任何主机名。唯一的要求是它知道密钥,并使用 pub.vbrew.com 的地址。带有通配符主机名的条目可以出现在密钥文件中的任何位置,因为 pppd 将始终使用适用于服务器/客户端对的最具体的条目。
关于 pppd 如何获取在密钥文件中查找的主机名,有一些话要说。如前所述,远程主机名始终由对等方在 CHAP 质询或响应数据包中提供。默认情况下,本地主机名将通过调用 gethostname(2) 函数派生。如果您已将系统名称设置为不完全限定的主机名,则必须使用 domain 选项向 pppd 额外提供域名
# pppd ...domain vbrew.com这将把 Brewery 的域名附加到 vlager,用于所有与身份验证相关的活动。其他修改 progpppd 对本地主机名理解的选项是 usehostname 和 name。当您在命令行上使用 ``local:varremote'' 提供本地 IP 地址,并且 local 是一个名称而不是点分十进制时,pppd 将使用此名称作为本地主机名。有关详细信息,请参阅 pppd(8) 手册页。