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 OS,它在兩個設備上都安裝了pppd 版本2.4.7 。
答案原來是 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