tak*_*mag 10 dhcp ipv6 isc-dhcp dhclient radvd
我的 ISP 刚刚开始 IPv4/IPv6 双栈服务。为了连接IPv4/IPv6 Internet,几乎所有用户通常都使用ISP租用的CPE。但是我想用我的 Linux 路由器而不是这样的 CPE,因为我的路由器有很多角色(很多 iptables 规则和 3 个以太网接口、http 反向代理、http 缓存、memcached、smtp/pop 服务器和 DNS 代理)。我想让它成为一个 IPv4/IPv6 双栈路由器。
我的路由器
我的目标
我现在的配置
/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=xxx.yyy.zzz
# Enable IPv6 routing and stop accept_ra/autoconf.
IPV6FORWARDING=yes
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
/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;
}
Run Code Online (Sandbox Code Playgroud)
结果
在“#service network restart”后,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;
}
Run Code Online (Sandbox Code Playgroud)
题
DHCPv6-PD 客户端已成功委派 /48 前缀。但在那之后,
我猜
根据“$ man dhclient”和“$ man dhclient-script”,dhclient-script似乎用于配置此类设置,并且它提供了一些钩子。但是现在,它对 DHCPv6-PD 客户端没有任何作用。
是的,我可能需要编写一些适合我的 DHCPv6-PD 环境的脚本,尽管我不熟悉 IPv6 网络配置。有人让我知道 dhclient-script 中的上述设置吗?[编辑] 我想知道实用的 dhclient 脚本。
我担心,应该采取一些特殊的考虑。例如,因为每个 IPv6 地址都有首选/有效的生命周期,当我根据委托前缀为 LAN 接口分配全局 IPv6 地址时,我不仅要分配 IPv6 地址,还要分配必须从委托派生的生命周期前缀的首选/有效生命周期?
此外,当 DHCPv6 重新配置发生时,可能需要重新配置 LAN 接口上的 radvd 和 DHCPv6 服务器?应该使用哪个钩子?
[编辑] 当 DHCPv6 重新配置发生时,如何宣布新的和过时的信息?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
Run Code Online (Sandbox Code Playgroud)
我使用 WIDE DHCPv6 客户端,而不是 ISC,所以我不知道具体如何操作,但我希望 ISC 具有与此 WIDE 配置选项等效的功能:
id-assoc pd {
prefix-interface eth0 {
sla-id 1;
sla-len 4;
};
};
Run Code Online (Sandbox Code Playgroud)
基本上,您告诉 DHCP 客户端如何将子网分配给内部接口;上面的配置表示“我将 4 位前缀委托给我 ( sla-len 4
),获取第一个可用子网 ( sla-id 1
) 并将其分配给eth0
( prefix-interface eth0
)。
interface
节设置 radvd(手册页中有很好的示例radvd.conf
可供使用),它就会正常工作。 归档时间: |
|
查看次数: |
33170 次 |
最近记录: |