У меня есть несколько IPv6-адресов на сервере CentOS 7, и мне нужно сделать конкретный адрес v6 адресом по умолчанию, используемым при маршрутизации. Мне удалось это сделать, изменив таблицу маршрутов.
ip -6 route del default
ip -6 route add default via 2001:470:xxxx:xx::1 src 2001:470:xxxx:xx::6
Проблема заключается в том, что каждый раз при перезапуске сетевого интерфейса или самого сервера изменение маршрута IPv6 по умолчанию теряется. Как сделать это изменение постоянным, чтобы оно сохранялось постоянно?
Когда сетевые сценарии 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
Одно место, куда вы можете положить его, - это /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
По умолчанию он не существует, поэтому вам нужно будет создать его и установить разрешения, чтобы сделать его исполняемым.