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


10

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

我的路由器

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

我的目标

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

我当前的配置

/ etc / sysconfig / network

NETWORKING=yes
HOSTNAME=xxx.yyy.zzz

# Enable IPv6 routing and stop accept_ra/autoconf.
IPV6FORWARDING=yes

/ etc / sysconfig / network-scripts / 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;
}

结果

在“#服务网络重新启动”之后,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默认路由?
  • 如何基于委托前缀为每个LAN I / F(eth1和eth2)分配全局IPv6地址和/ 64子网?
  • 如何触发radvd在每个LAN I / F(eth1和eth2)上宣布RA?
  • 如何在每个LAN I / F上触发DHCPv6服务器(dhcpd6),以宣布从ISP的DHCPv6服务器接收到的其他网络信息(名称服务器,域搜索列表和sip服务器地址)?

我猜

根据“ $ man dhclient”和“ $ man dhclient-script”,dhclient-script似乎用于配置此类设置,并且提供了一些挂钩。但是现在,它对DHCPv6-PD客户端不起作用。

是的,尽管我对IPv6网络配置不熟悉,但我可能必须编写一些适合我的DHCPv6-PD环境的脚本。有人让我知道dhclient-script中的上述设置吗?[编辑]我想了解实用的dhclient-script。

我担心,应该特别注意一些事项。例如,由于每个IPv6地址都有首选/有效生存期,因此当我基于委托前缀将全局IPv6地址分配给LAN接口时,不仅要分配一个IPv6地址,还要分配其生存期(必须从委托中派生)前缀的首选/有效寿命?

另外,在进行DHCPv6重新配置时,可能必须重新配置LAN接口上的radvd和DHCPv6服务器。应该使用哪个挂钩?

[编辑]进行DHCPv6重新配置时,如何宣布新信息和过时信息?radvd自动宣布以前的前缀已过时?DHCPv6服务器自动宣布以前的名称服务器已过时?

Answers:


4

我不知道您问题的答案,但我只想警告您有关使用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

2
实际上,您希望accept_ra为2(即使启用了路由也可以接受)。否则,内核将在路由器上忽略它。
Kyle Butt 2012年

2
  • 在使用DHCPv6 PD获取其他子网之前,应使用默认(上游)Internet连接来设置IPv6默认路由。您没有提到您实际上是如何连接上游的,所以我在这里没有帮助。
  • 我使用的是WIDE DHCPv6客户端,而不是ISC,所以我不知道具体如何做,但是我希望ISC具有与此WIDE配置选项等效的功能:

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

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

  • 使用适当的interface节设置radvd (radvd.conf手册页中有很多很好的示例可以使用),它会正常工作。
  • 我不能在那帮你 除了测试之外,我不使用DHCPv6服务(我从DHCP服务器获得了所有DHCP信息)。

感谢您的回答。1.如何连接上游只是将以太网电缆连接到FTTH GE-PON。到目前为止,尚无办法通过DHCPv6指定默认的IPv6路由,我不得不考虑将DHCPv6服务器的链接本地地址作为默认路由。
takaomag 2011年

2.尽管我没有提及,但我使用ISC dhclient的原因是我的路由器必须在其请求和请求消息中发送DHCPv6选项16(供应商类),以便获得包括某些内容的特定于供应商的信息选项ISP特定的信息(SIP电话号码,固件服务器地址)。我知道如何在ISC dhclient中设置选项16,但在WIDE-dhcpv6中却不知道。而且我在ISC dhclient中找不到“ id-assoc”这样的设置。
takaomag 2011年

2
3,4。我也许能够根据来自DHCPv6服务器的信息(前缀等)编写一些不良的脚本来构建radvd.conf和dhcpd6.conf。但是,当发生DHCPv6重新配置时,如何宣布新信息和过时信息?radvd自动宣布以前的前缀已过时?DHCPv6服务器自动宣布以前的名称服务器已过时?
takaomag 2011年

无论如何,我想了解实用的dhclient-script。
takaomag 2011年

不要在回答的注释中添加所有这些信息;将其添加到您的问题中
womble

-1

Wombie给出了我用于设置radv和路由的相同答案。Inet6旨在进行自我配置,而无需DHCP服务器。

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

我将avahi-daemon配置为将名称服务和服务器分发给客户端。您将需要客户端能够进行服务发现。当我全面运行双堆栈网络时,我没有做太多的服务发现测试。


即使使用DHCPv6服务器还是radvd,我也必须编写一些脚本来根据DHCPv6服务器的信息(前缀等)动态地构建dhcpd6.conf或radvd.conf。但是,当发生DHCPv6重新配置时,如何向LAN侧主机通告新信息和过时信息?如果仅基于DHCPv6服务器的新信息动态地构建新的dhcpd6.conf或radvd.conf,radvd会自动宣布先前的前缀已过时吗?DHCPv6服务器自动宣布以前的名称服务器已过时?
takaomag 2011年

radvd可以使用:: / 64前缀从界面自动获取其地址。您无需重写配置。DNS服务器和搜索列表应为静态数据。IPv6自动配置旨在处理迁移地址。我不知道您的ISP对过渡的支持程度。我没有看过DHCPv6。
BillThor 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.