配置 pppd 以接受来自远程对等方的链路本地 IPv6 地址

配置 pppd 以接受来自远程对等方的链路本地 IPv6 地址

我有两个 Raspberry Pi,它们的串行端口相互连接。我已在两者之间建立了 PPP 链路,并成功通过 ICMPV6 ping 通并打开了它们之间的 TCP 套接字。但我不知道如何让“客户端”pppd 接受“服务器”pppd 提供的链路本地 IPv6 地址。我尝试使用静态地址,以便知道远程对等点的链路本地 IP 地址。

在我正在运行的“服务器”上:

pppd file ./ppp-options ipv6 ::1,::2 /dev/ttyAMA0 115200

在“客户端”上,我正在运行:

pppd file ./ppp-options ipv6cp-accept-local /dev/ttyAMA0 115200

但是该ipv6cp-accept-local选项似乎不起作用手册页描述:

使用此选项,pppd 将接受对等方关于本地 IPv6 接口标识符的想法,即使在选项中指定了本地 IPv6 接口标识符。

“客户端”计算机使用随机分配的链接本地地址:

Using interface ppp0
Connect: ppp0 <--> /dev/ttyAMA0
Deflate (15) compression enabled
local  LL address fe80::fd28:565e:1186:02ff
remote LL address fe80::0000:0000:0000:0001

客户端打开调试后的完整输出如下: https://gist.github.com/njh/ab3282f43c72dcf6932b3693eb7dfca4

这是我的配置文件(两者都使用):

nodetach
noauth
persist
local
noip
+ipv6

我正在运行 Raspberry Pi 操作系统,它有 pppd 版本2.4.7安装在两台设备上。

答案1

答案是,Linux 版 pppd 2.4.7 版本存在错误。

解决办法很简单,升级到版本即可2.4.9我已经成功地让“客户端”接受来自“服务器”的接口标识符。

这是客户端上的调试输出:

$ sudo pppd file ./ppp-options ipv6cp-accept-local /dev/ttyAMA0 115200
using channel 368
Using interface ppp0
Connect: ppp0 <--> /dev/ttyAMA0
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x7f793cbe>]
rcvd [LCP ConfReq id=0xb <asyncmap 0x0> <magic 0xecde7250>]
sent [LCP ConfAck id=0xb <asyncmap 0x0> <magic 0xecde7250>]
rcvd [LCP ConfReq id=0xb <asyncmap 0x0> <magic 0xecde7250>]
sent [LCP ConfAck id=0xb <asyncmap 0x0> <magic 0xecde7250>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x7f793cbe>]
sent [LCP EchoReq id=0x0 magic=0x7f793cbe]
sent [IPV6CP ConfReq id=0x1 <addr fe80::0dfd:3c3b:e130:91ce>]
rcvd [LCP EchoReq id=0x0 magic=0xecde7250]
sent [LCP EchoRep id=0x0 magic=0x7f793cbe]
rcvd [LCP EchoRep id=0x0 magic=0xecde7250]
rcvd [IPV6CP ConfReq id=0xb <addr fe80::0000:0000:0000:0001>]
sent [IPV6CP ConfAck id=0xb <addr fe80::0000:0000:0000:0001>]
rcvd [IPV6CP ConfNak id=0x1 <addr fe80::0000:0000:0000:0002>]
sent [IPV6CP ConfReq id=0x2 <addr fe80::0000:0000:0000:0002>]
rcvd [IPV6CP ConfAck id=0x2 <addr fe80::0000:0000:0000:0002>]
local  LL address fe80::0000:0000:0000:0002
remote LL address fe80::0000:0000:0000:0001
Script /etc/ppp/ipv6-up started (pid 7049)
Script /etc/ppp/ipv6-up finished (pid 7049), status = 0x0

相关内容