我在 CentOS 7 服务器上有多个 IPv6 地址,需要将特定的 v6 地址设为路由中使用的默认地址。我可以通过修改路由表来做到这一点。
ip -6 route del default
ip -6 route add default via 2001:470:xxxx:xx::1 src 2001:470:xxxx:xx::6
问题是每次重新启动网络接口或服务器本身时,对默认 IPv6 路由的更改都会丢失。我如何才能使此更改持久化,从而永久保留?
答案1
当 Red Hat 的网络脚本设置了 中配置的多个 IPv6 地址时/etc/sysconfig/network-scripts/ifcfg-*
,无论出于何种原因,它们都会以相反的顺序应用,以便最后的列出的地址IPV6ADDR_SECONDARIES
将成为传出连接的默认地址。反转列出的 IPv6 地址的顺序通常足以修复此问题。
回答唯一模糊相关的赏金问题:可以通过将 IPv6 静态路由添加到相应的 来设置。此文件的格式与省略该位的命令/etc/sysconfig/network-scripts/route6-*
相同,例如:ip route add
default via 2001:db8:dead:beef:: dev eno1
2001:db8:deca:fbad::/64 via 2001:db8:dead:beef::8bad:f00d dev eno1
答案2
您可以将其放置在/sbin/ifup-local
接口出现时运行的文件中。
#!/bin/sh
if [[ "$1" == "eth0" ]]
then
ip -6 route del default
ip -6 route add default via 2001:470:xxxx:xx::1 src 2001:470:xxxx:xx::6
else
#DO_NOTHING
fi
它默认不存在,因此您需要创建它并设置权限以使其可执行。