IPCP DNS:配置拒绝

网络工程 dns pppoe 公私合营
2022-03-06 05:28:17

我正在使用在嵌入式系统上运行的 VxWorks PPP 服务器。IPCP DNS 协商似乎有问题。每次 PPP 服务器向客户端提供 IPCP 时,客户端似乎拒绝 DNS1 和 DNS2 字段并接受 IP 地址。

我尝试使用 Windows 拨号连接(使用“自动请求 dns”选项)和 Ubuntu pppoed 客户端(使用“usepeerdns”选项)。在这两种情况下,客户端都配置为从 PPP 服务器获取 DNS。

数据包顺序如下:

  1. 客户端发送 IPCP 配置请求,其中 IP、DNS1 和 DNS2 设置为 0。
  2. 服务器在选项字段中发送带有相关 IP、DNS1 和 DNS2 的 IPCP 配置请求。
  3. 客户端在负载中发送带有 DNS1 和 DNS2 的配置拒绝(代码 0x04)。
  4. 服务器仅使用 IP 发送 IPCP 配置请求。握手以 ACK 完成,双方仅同意 IP 地址。

我不确定这是哪里出错了。

任何帮助深表感谢!谢谢!

1个回答

在 IPCP(如 L​​CP 和相关协议)中有两种协商,一种用于链路的每个方向。您的第 1 步是客户端请求 IP 和 DNS,第 2 步不是服务器响应此请求,而是服务器请求其自己的 IP 和 DNS(另一个协商)。在步骤 3 中,客户端拒绝,因为它不想向服务器提供 DNS。

您确定您看到所有交换的 IPCP 数据包吗?在您的序列中,服务器永远不会响应客户端请求。

你应该看到类似的东西(只是一种常见的情况,这可能会有所不同):

client conf
 C>S req IP=0.0.0.0, DNS1=0.0.0.0, DNS2=0.0.0.0  # client asks
 C<S nak IP=a.b.c.d, DNS1=e.f.g.h, DNS2=i.j.k.l  # server suggests values
 C>S req IP=a.b.c.d, DNS1=e.f.g.h, DNS2=i.j.k.l  # client requests suggested values
 C<S ack IP=a.b.c.d, DNS1=e.f.g.h, DNS2=i.j.k.l  # servers acks

另一个谈判(可能是交错的)可能是这样的:

 server conf
 S>C req IP=v.w.x.y.z  # server informs about its IP
 S<C ack IP=v.w.x.y.z  # client acks the server IP address

IPCP 在 RFC1332 中有描述,但它说

IPCP 使用与链路控制协议 (LCP) 相同的数据包交换机制。

因此,必须阅读 rfc1661 以了解谈判是如何发生的。