我有两个 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