在CentOS 6机器上,我有一个服务器有2个网卡,eth0和eth1。 eth0的地址是192.168.0.1。
我想创build一个脚本来分析eth0的IP地址,并在启动的时候为eth1分配一个类似的IPv6地址。
在这种情况下,我想eth1有地址fc00 :: 192:168:0:1/64。
我知道,为了分配这个地址,我必须运行命令
ip address add fc00::192:168:0:1/64 dev eth1
不过,我试图find一种方法来计算基于eth0的IP分配给eth1的IP,并让此脚本在启动时运行。
我这样做的原因,而不是静态分配给这两个接口的地址是我试图把这个服务器变成一个虚拟机模板,并自动部署它与新的IP设置。 不幸的是,我正在使用的工具并没有真正支持IPv6。
所以我想我的问题有两个部分:
不知道这是一个好主意,但要小心风,我会做这样的事情:
hexip='fe80::' ip=$(ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1 | sed 's/\./:/g') hexip="${hexip}${ip}" ip address add "$hexip/64" dev eth1
你需要在运行级别3之后运行的启动文件。我认为/etc/rc.local会这样做?
不是你的问题的答案,但一些有很多IPv6经验的人的build议…
这个想法可能看起来有用,但是在实践中,例如只需占用IPv4地址的最后部分,并在ifcfg-eth0中手动configuration即可。
我的一台机器是83.247.10.7 ,它所在的IPv6子网是2001:9e0:803::/64 。 这个机制会给它2001:9e0:803:0:83:247:10:7 。 我只是手动给它2001:9e0:803::7 。 更容易:)这是我的ifcfg-eth0 :
DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=83.247.10.7 NETMASK=255.255.255.224 IPV6INIT=yes IPV6ADDR=2001:9e0:803::7/64
这两个额外的行不会杀了你,并且比一些脚本,试图自动做这个微不足道的好多了。
你在这个问题中的例子使用fc00::这是一个不存在的子网,你不会在现实生活中看到,这使得这个想法看起来不错。 用真正的地址这个想法不会有太大的帮助,甚至可能使情况变得更糟……
您实际上可以简单地将您的IPv4地址后缀到一个IPv6前缀; IPv6支持这种混合表示法。 2001:0DB8 :: 192.168.1.1是一个完全有效的IPv6地址,不需要将其转换为hex或replace点。
当然,你想testing这个 – 只是因为它是有效的IP并不意味着CentOS正确处理它。
一个可能改进的build议。
提取IPv4地址的子网位和主机ID位。 使用主机ID位作为IPv6主机的偏移量; 使用子网位作为某个映射的查找,以使用适当的IPv6前缀。 这样,您就可以灵活地使您的networking拓扑相匹配。
但实际上,这应该都是IPAM解决scheme的一部分,并且虚拟机应该使用DHCP和DHCPv6来接收它们的寻址。 但是,由于这是一个虚拟设备,也许这是依靠基础设施,你不能指望。