具有eth0 , eth1 Debian服务器。 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
转发function无处不在:
/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 (=路由器通告)在任何设备上被接受,但是为了在ppp0和eth1设置accept_ra = 2 :
/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连接build立成功,在/ etc / ppp / peer / myProviderconfiguration文件中设置了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
public 2003:42:e67f:d3ca::/64前缀具有到ppp0设备的路由。 radvd安装并运行, radvdump显示ppp0 IPv6链路发送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
在服务器主机上,我可以成功地从互联网ping一台主机。 现在,当我尝试通过请求路由器为ppp0强制RA时 ,我得到:
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上的所有节点都configuration了SLAAC,但是当我尝试在eth1请求时,我得到:
Soliciting ff02::2 (ff02::2) on eth1... Timed out. Timed out. Timed out. No response.
不知何故,从ppp0向eth1 (以及任何其他设备)转发RA数据包似乎根本不起作用。 为什么? 据我所知,任何DSL调制解调器的路由器都必须以某种方式将RA从内部调制解调器设备转发到所连接的物理LAN端口,否则在那里连接的任何主机都不会获得IPv6地址,对吧? 现在路由器和我的debian盒之间的区别在哪里? 我会感激你的任何提示。
路由器广告不应该被转发。 所以当你发现他们没有被转发时,那么至less那部分是按照预期工作的。
你应该在你的路由器上运行你自己的路由器通告守护进程,这样它就可以把自己通告给局域网。
您的三个LAN应该有三个单独的/ 64前缀。 所以你需要从你的ISP路由/ 62或更短。 这是没有问题的,因为你的ISP应该给你一个较短的前缀(这个短取决于你问的对象,原来是/ 48,但是有些只能提供一个/ 56)。
如果在ppp链路上有一个DHCPv6服务器可用,则可以发送一个DHCPv6请求,要求将一个前缀委托给您。 否则,你可能不得不实际与一个人交谈。
这种IP设置的结构通常是: