Ipv6

IPv6 PPP 鏈路無法將路由器廣告轉發到本地 LAN

  • November 18, 2014

一個 Debian 伺服器,具有eth0, eth1. eth2ppp0設備:

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 ppp0and eth1

/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顯示ppp0IPv6 鏈路發送RA

interface 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主機。現在,當我嘗試通過請求路由器來強制RAppp0時,我得到:

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數據包轉發ppp0eth1(和任何其他設備)似乎根本不起作用。為什麼?據我了解,任何帶有 DSL 調製解調器的路由器都必須以某種方式將RA從其內部調製解調器設備轉發到連接的物理 LAN 埠,否則任何連接在那裡的主機都不會獲得 IPv6 地址,對嗎?現在路由器和我的 debian 盒子有什麼區別?如果您有任何提示,我將不勝感激。

不應轉發路由器通告。因此,當您發現它們沒有被轉發時,那麼至少該部分正在按預期工作。

你應該在你的路由器中執行你自己的路由器廣告守護程序,這樣它就可以向 LAN 廣告自己。

您的三個 LAN 應該有三個單獨的 /64 前綴。因此,您需要來自 ISP 的路由 /62 或更短。這沒有問題,因為您的 ISP 應該為此目的給您一個較短的前綴(多短取決於您問的人,最初是 /48,但有些人只會分發 /56)。

如果通過 ppp 連結有可用的 DHCPv6 伺服器,則您可以發送 DHCPv6 請求,請求將前綴委派給您。否則,您可能必須實際與人交談。

引用自:https://serverfault.com/questions/645060