如何通过DHCPv6-PD服务器基于委托前缀configurationradvd,dhcpd6,路由和/ 64子网?

我的ISP刚刚启动了IPv4 / IPv6双栈服务。 为了连接IPv4 / IPv6互联网,几乎所有用户通常都使用ISP租用的CPE。 但我想用我的Linux路由器,而不是这样的CPE,因为我的路由器有这么多的angular色(很多iptables规则和3以太网接口,http反向代理,httpcaching,memcached,smtp / pop服务器和DNS代理)。 我想让它成为一个IPv4 / IPv6双栈路由器。

我的路由器

  • CentOS6.0 i686
  • eth0为WAN
  • eth1,2为LAN
  • ISC dhcp(版本4.1.1)由CentOS更新回来的“#yum install dhcp”安装
  • 由CentOS-base回购“#yum install radvd”安装的radvd(版本1.6)
  • [编辑]我使用ISC dhclient的原因是,我的路由器必须在其请求和请求消息中发送DHCPv6选项16(供应商类别),以便获得包括一些ISP特定信息的供应商特定信息选项( SIP电话号码,固件服务器地址)。 我知道如何在ISC dhclient中设置选项16,但不知道它在WIDE-dhcpv6中。 而我无法在ISC dhclient中find“id-assoc”这样的设置。

我的目标

  • / 48前缀委托给eth0上的DHCPv6-PD(DHCPv6前缀委派)客户端(dhclient)。
  • IPv6默认路由设置为ISP。 我必须考虑ISP的DHCPv6服务器的链路本地地址作为默认路由。
  • 一个/ 64子网和一个全局地址(在委托前缀中)分配给每个LAN I / F(eth1 / eth2)。
  • eth1和eth2上的radvd根据分配的/ 64子网宣布RA。
  • eth1和eth2上的dhcpd6宣布从ISP的DHCPv6服务器收到的附加networking信息(名称服务器,域名search列表和SIP服务器地址)。

我目前的configuration

的/ etc / SYSCONFIG /networking

NETWORKING=yes HOSTNAME=xxx.yyy.zzz # Enable IPv6 routing and stop accept_ra/autoconf. IPV6FORWARDING=yes 

在/ etc / sysconfig / network中的脚本/的ifcfg-eth0的

 DEVICE="eth0" ONBOOT=yes TYPE=Ethernet BOOTPROTO=none # Enable DHCPv6-PD client. DHCPV6C=yes DHCPV6C_OPTIONS="-P -cf /etc/dhcp/dhclient6.conf" # Disable make_resolv_conf function in /sbin/dhclient-script. PEERDNS=no 

/etc/dhcp/dhclient6.conf

 script "/sbin/dhclient-script"; interface "eth0" { send dhcp6.reconf-accept; also request dhcp6.vendor-opts, dhcp6.sip-servers-names, dhcp6.sip-servers-addresses, dhcp6.sntp-servers; } 

结果

在“#服务networking重启”后,DHCPv6-PD客户端似乎成功完成。

 lease6 { interface "eth0"; ia-pd xx:xx:xx:xx { starts 1312464004; renew 7200; rebind 10800; iaprefix 24xx:xxxx:xxxx::/48 { starts 1312464004; preferred-life 12600; max-life 14400; } } option dhcp6.client-id xx:xx:xx:xx:xx:xx:xx:xx:xx:xx; option dhcp6.server-id xx:xx:xx:xx:xx:xx:xx:xx:xx:xx; option dhcp6.reconf-accept ; option dhcp6.sip-servers-addresses 24xx:xxxx:xxxx:xxxx::1; option dhcp6.name-servers 24xx:xxxx:xxxx:xxxx::3,24xx:xxxx:xxxx:b::3; option dhcp6.domain-search "xxx.jp.", "yyy.jp."; option dhcp6.sntp-servers 24xx:xxxx:xxxx:xxxx::a,24xx:xxxx:xxxx:b::b; } 

DHCPv6-PD客户端已成功授权/ 48前缀。 但在此之后,

  • 如何在路由器的路由表中设置IPv6默认路由?
  • 如何根据委托前缀为每个局域网I / F(eth1和eth2)分配全局IPv6地址和/ 64子网?
  • 如何触发radvd在每个局域网I / F(eth1和eth2)上宣布RA?
  • 如何触发每个局域网I / F上的DHCPv6服务器(dhcpd6),以宣布从ISP的DHCPv6服务器接收到的额外networking信息(名称服务器,域名search列表和SIP服务器地址)?

我猜

根据“$ man dhclient”和“$ man dhclient-script”, dhclient-script似乎被用来configuration这样的设置,并且它提供了一些钩子。 但现在,它对DHCPv6-PD客户端没有任何作用。

是的,我可能不得不写一些适合我的DHCPv6-PD环境的脚本,尽pipe我不熟悉IPv6networkingconfiguration。 任何人都可以让我知道dhclient脚本中的上述设置? [编辑]我想知道实用的dhclient脚本。

我担心,应该特别考虑一下。 例如,由于每个IPv6地址具有首选/有效的生命周期,所以当根据委托前缀将全局IPv6地址分配给LAN接口时,我不仅必须分配IPv6地址,而且还必须分配必须从委托前缀的首选/有效的生命期?

而且,当DHCPv6重新configuration发生时,LAN接口上的radvd和DHCPv6服务器可能需要重新configuration? 应该使用哪个钩子?

[编辑]当DHCPv6重新configuration发生,如何宣布新的和过时的信息? radvd自动公布前一个前缀是否过时? DHCPv6服务器自动公布以前的名字 – 服务器是否过时?

我不知道你的问题的答案,但我只是想警告你使用DHCP服务器地址作为你的默认路由器。 如果这样做是偶然的…在IPv6中,默认路由由RA而不是由DHCP来传递。

您将需要启用转发,接受RA和发送RS。 这里的一个问题是,包含在Centos6中的内核不允许你这样做。 当启用转发时,接受RA和发送RS被禁用。 应该有一个CentosPlus内核与相关的补丁虽然。 请参阅http://lists.centos.org/pipermail/centos/2011-April/thread.html#109756上的邮件列表主题/消息

相关的sysctl.conf设置是:

 net.ipv6.conf.all.forwarding=1 net.ipv6.conf.eth0.accept_ra=2 net.ipv6.conf.eth0.accept_ra_defrtr=1 net.ipv6.conf.eth0.router_solicitations=1 
  • 在使用DHCPv6 PD获取其他子网之前,应该通过任何获得默认(上行)Internet连接的方式设置IPv6默认路由。 你没有提到你是如何连接上游的,所以我不能帮你。
  • 我使用广泛的DHCPv6客户端,而不是ISC,所以我不知道如何具体做,但我期望ISC有一些相当于这个WIDEconfiguration选项:

     id-assoc pd { prefix-interface eth0 { sla-id 1; sla-len 4; }; }; 

    基本上,您告诉DHCP客户端如何将子网分配给内部接口; 上面的configuration说“我得到4位的前缀委托给我( sla-len 4 ),采取第一个可用的子网( sla-id 1 ),并将其分配给eth0prefix-interface eth0 )。

  • 使用相应的interface节来设置radvd(在radvd.conf手册页中有很好的例子),它就会正常工作。
  • 我帮不了你 除了testing,我不使用DHCPv6服务(我从我的DHCP服务器获取所有的DHCP信息)。

Wombie已经给出了用于设置radv和路由的相同的答案。 Inet6被devise为不需要DHCP服务器就可以进行自我configuration。

我不使用DHCPv6,因为它可以由radvd和zeroconf处理。 radvd可以configuration为提供名称服务器,并可以通过/etc/resolv.conf通告服务器。 新版本的radvd也实现了分发search列表。

我configuration了avahi-daemon来将名称服务和服务器分发给客户端。 你将需要客户能够做服务发现。 我没有做过多的服务发现testing,因为我全面运行双栈networking。