注意:Rocky Linux为CentOS创始人出走后另外单独开的项目,也可以理解为CentOS,大致相同,本示例两个网卡都在同一个vpc下,并且已确定开启公网ipv6访问能力

首先,/etc/sysconfig/network-scripts下默认只会有一个网卡配置文件,我们需要新加一个网卡配置文件,同时最好再配置好两个默认路由的文件,这样这个路径下就有这些文件了:ifcfg-eth0 ifcfg-eth1 route-eth0 route-eth1

其中各个文件的内容:

ifcfg-eth0:

# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=dhcp
DEVICE=eth0
HWADDR=网卡0MAC地址
ONBOOT=yes
PERSISTENT_DHCLIENT=yes
TYPE=Ethernet
USERCTL=no
DHCPV6C=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes

ifcfg-eth1:

# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=dhcp
DEVICE=eth1
HWADDR=网卡1MAC地址
ONBOOT=yes
PERSISTENT_DHCLIENT=yes
TYPE=Ethernet
USERCTL=no
DHCPV6C=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes

route-eth0:(包含ipv6默认路由)

##ipv4
0.0.0.0/0 via 10.0.0.1 dev eth0 table 10
##ipv6
::/0 via fe80::feee:ffff:feff:ffff dev eth0 table 30

route-eth1:(包含ipv6默认路由)

##ipv4
0.0.0.0/0 via 10.0.0.1 dev eth1 table 20
##ipv6
::/0 via fe80::feee:ffff:feff:ffff dev eth1 table 40

随后去创建四张张路由表,id分别为10、20、30、40,名字为t1、t2、t3、t4:

echo "10 t1" >> /etc/iproute2/rt_tables
echo "20 t2" >> /etc/iproute2/rt_tables
echo "30 t3" >> /etc/iproute2/rt_tables
echo "40 t4" >> /etc/iproute2/rt_tables

因为红帽在7以上把/etc/sysconfig/network-scripts下把rule-$ethname这个配置文件给砍了,所以策略路由想要实现开机直接加载没法再到这里面去写了,只能去编辑/etc/rc.d/rc.local这个开机脚本实现了,在配置文件末添加一下以下内容,注意ip根据实际情况修改

#ipv4 rule
ip rule add from 10.0.0.15 table 10
ip rule add from 10.0.0.7 table 20

#ipv6 rule
ip -6 rule add from 2402:4e00:101a:b601:0:9a2f:50d4:b65 table 30
ip -6 rule add from 2402:4e00:101a:b601:0:9a2f:5113:1208 table 40

确定一下系统的各个ipv6参数是开启的(/etc/sysctl.conf)

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

重启一下网络管理服务

注意:请先通过systemctl status NetworkManager和systemctl status network确定一下是哪个服务在管理网络,然后再重启一下对应的网络管理服务

systemctl restart NetworkManager或者systemctl restart network

可以通过以下命令看看路由与策略路由生效没(不想看就跳过,有问题可以通过这些命令排查)

ipv4查看路由表

ip route list table 表id

ipv6查看路由表

ip -6 route list table 表id

ipv4查看策略路由

ip rule list table 表id

ipv6查看路由表

ip -6 rule list table 表id

然后,此时可以通过ip a查看下是否有非fe开头的ipv6地址,以及通过ping6 www.baidu.com试试能从服务器通过ipv6联通外界不

随后可以通过外界有ipv6的服务器或者本地客户端ping6一下服务器的两个公网ipv6地址

最后说明一下,官网那个ipv6的文档有问题,网卡配置文件只加一个DHCPV6C=yes没用,根据红帽官方文档说明,是这样配置的:

DEVICE=enp1s0
BOOTPROTO=none
ONBOOT=yes
IPV6INIT=yes
IPV6ADDR=2001:db8::2/48

如果只有个DHCPV6C=yes会导致ipv6时有时无