我的ISP刚刚启动了IPv4 / IPv6双栈服务。 为了连接IPv4 / IPv6互联网,几乎所有用户通常都使用ISP租用的CPE。 但我想用我的Linux路由器,而不是这样的CPE,因为我的路由器有这么多的angular色(很多iptables规则和3以太网接口,http反向代理,httpcaching,memcached,smtp / pop服务器和DNS代理)。 我想让它成为一个IPv4 / IPv6双栈路由器。
我的路由器
我的目标
我目前的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前缀。 但在此之后,
我猜
根据“$ 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客户端,而不是ISC,所以我不知道如何具体做,但我期望ISC有一些相当于这个WIDEconfiguration选项:
id-assoc pd { prefix-interface eth0 { sla-id 1; sla-len 4; }; };
基本上,您告诉DHCP客户端如何将子网分配给内部接口; 上面的configuration说“我得到4位的前缀委托给我( sla-len 4
),采取第一个可用的子网( sla-id 1
),并将其分配给eth0
( prefix-interface eth0
)。
interface
节来设置radvd(在radvd.conf
手册页中有很好的例子),它就会正常工作。 Wombie已经给出了用于设置radv和路由的相同的答案。 Inet6被devise为不需要DHCP服务器就可以进行自我configuration。
我不使用DHCPv6,因为它可以由radvd和zeroconf处理。 radvd可以configuration为提供名称服务器,并可以通过/etc/resolv.conf通告服务器。 新版本的radvd也实现了分发search列表。
我configuration了avahi-daemon来将名称服务和服务器分发给客户端。 你将需要客户能够做服务发现。 我没有做过多的服务发现testing,因为我全面运行双栈networking。