IPv6 PPP 鏈路無法將路由器廣告轉發到本地 LAN
一個 Debian 伺服器,具有
eth0
,eth1
.eth2
,ppp0
設備:2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff 4: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff 63: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3 link/ppp
隨處啟用轉發:
/proc/sys/net/ipv6/conf ~ all/forwarding=1 default/forwarding=1 eth0/forwarding=1 eth1/forwarding=1 eth2/forwarding=1 ppp0/forwarding=1
並且 autoconf 也被啟動:
/proc/sys/net/ipv6/conf ~ all/autoconf=1 default/autoconf=1 eth0/autoconf=0 eth1/autoconf=1 eth2/autoconf=1 ppp0/autoconf=1
任何設備都接受進一步的RA (=Router Advertisement),但設置**accept_ra=2 for at leat
ppp0
andeth1
:/proc/sys/net/ipv6/conf ~ all/accept_ra=1 default/accept_ra=1 eth0/accept_ra=1 eth1/accept_ra=2 eth2/accept_ra=0 lo/accept_ra=1 ppp0/accept_ra=2
PPP 連接已成功建立,在*/etc/ppp/peer/myProvider配置文件中設置了ipv6 ::dead:beef*選項:
63: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qlen 3 inet6 2003:42:e67f:d3ca:6105:155:f2b3:71f0/64 scope global temporary dynamic valid_lft 14266sec preferred_lft 1666sec inet6 2003:42:e67f:d3ca::dead:beef/64 scope global dynamic valid_lft 14266sec preferred_lft 1666sec inet6 fe80::dead:beef/10 scope link valid_lft forever preferred_lft forever
並且設置了到提供者的連結本地地址的預設路由:
2003:42:e67f:d3ca::/64 dev ppp0 proto kernel metric 256 expires 13559sec fe80::/64 dev ppp0 proto kernel metric 256 fe80::/10 dev ppp0 metric 1 fe80::/10 dev eth1 proto kernel metric 256 fe80::/10 dev ppp0 proto kernel metric 256 fe80::/10 dev eth0 metric 1024 default via fe80::90:1a10:1b2:b780 dev ppp0 proto kernel metric 1024 expires 1789sec
公共
2003:42:e67f:d3ca::/64
前綴具有到ppp0
設備的路由。 radvd安裝並執行,radvdump顯示ppp0
IPv6 鏈路發送RAinterface ppp0 { AdvSendAdvert on; # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump AdvManagedFlag off; AdvOtherConfigFlag on; AdvReachableTime 0; AdvRetransTimer 0; AdvCurHopLimit 0; AdvDefaultLifetime 1800; AdvHomeAgentFlag off; AdvDefaultPreference medium; AdvLinkMTU 1492; prefix 2003:42:e67f:d3ca::/64 { AdvValidLifetime 14400; AdvPreferredLifetime 1800; AdvOnLink on; AdvAutonomous on; AdvRouterAddr off; }; # End of prefix definition }; # End of interface definition
從伺服器主機我可以成功地從 Internet ping6主機。現在,當我嘗試通過請求路由器來強制RA
ppp0
時,我得到:Soliciting ff02::2 (ff02::2) on ppp0... Hop limit : undefined ( 0x00) Stateful address conf. : No Stateful other conf. : Yes Router preference : medium Router lifetime : 1800 (0x00000708) seconds Reachable time : unspecified (0x00000000) Retransmit time : unspecified (0x00000000) MTU : 1492 bytes (valid) Prefix : 2003:42:e67f:d3ca::/64 Valid time : 14400 (0x00003840) seconds Pref. time : 1800 (0x00000708) seconds
我期望的是所有節點都
eth1
配置了 SLAAC,但是當我嘗試請求時,eth1
我得到:Soliciting ff02::2 (ff02::2) on eth1... Timed out. Timed out. Timed out. No response.
- 我不想使用DHCPv6,而是通過radvd使用**SLAAC
- 我想避免 bash kung fu 從提供程序中刪除實際前綴(例如:從rdisc6 輸出)以自行調整radvd.conf文件(例如:在 if-up 事件中)
- 橋接設備不是解決方案。PPP 設備是虛擬的,無法橋接。
不知何故,將RA數據包轉發
ppp0
到eth1
(和任何其他設備)似乎根本不起作用。為什麼?據我了解,任何帶有 DSL 調製解調器的路由器都必須以某種方式將RA從其內部調製解調器設備轉發到連接的物理 LAN 埠,否則任何連接在那裡的主機都不會獲得 IPv6 地址,對嗎?現在路由器和我的 debian 盒子有什麼區別?如果您有任何提示,我將不勝感激。
不應轉發路由器通告。因此,當您發現它們沒有被轉發時,那麼至少該部分正在按預期工作。
你應該在你的路由器中執行你自己的路由器廣告守護程序,這樣它就可以向 LAN 廣告自己。
您的三個 LAN 應該有三個單獨的 /64 前綴。因此,您需要來自 ISP 的路由 /62 或更短。這沒有問題,因為您的 ISP 應該為此目的給您一個較短的前綴(多短取決於您問的人,最初是 /48,但有些人只會分發 /56)。
如果通過 ppp 連結有可用的 DHCPv6 伺服器,則您可以發送 DHCPv6 請求,請求將前綴委派給您。否則,您可能必須實際與人交談。