Amazon предоставляет инструкции о том, как включить IPv6 на RHEL 7 и Centos 7: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-migrate-ipv6.html#ipv6-dhcpv6-rhel
Эти инструкции работают на RHEL 7-7.3 и Centos 7-7.3, но не работают на RHEL 7.4 (и, предположительно, ни на Centos 7.4, когда он станет доступен).
Проблема в том, что файл / etc / sysconfig / network-scripts / ifcfg-eth0
доступен для записи пользователем в более старых версиях, но в RHEL 7.4 этот файл вместо этого управляется cloud-init.
$ sed 1q /etc/sysconfig/network-scripts/ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
Я нахожу очень неожиданным, что простое обновление с 7.3 до 7.4 потребует такого фундаментального изменения в управлении сетью. Я не уверен, относится ли это изменение к Amazon EC2 или нет, я ничего не могу найти в примечаниях к выпуску RHEL 7.4, поэтому оно может относиться к Amazon.
Итак, как вы должны включить IPv6 в RHEL 7.4. и Centos 7.4 в модели cloud-init?
Чтобы настроить DHCPv6 в RHEL 7.4 или CentOS 7
Используя текстовый редактор по вашему выбору, создайте пользовательский файл для пример:
/etc/cloud/cloud.cfg.d/99-custom-networking.cfg
Добавьте следующие строки в свой файл и сохраните изменения:
сеть:
версия: 1
config:
- тип: физический
имя: eth0
подсети:
- тип: dhcp6
Перезагрузите свой экземпляр.
Повторно подключитесь к своему экземпляру и используйте команду ifconfig, чтобы убедиться, что адрес IPv6 настроен на сетевом интерфейсе.
Я создал следующий файл:
$ cat /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
network: {config: disabled}
И отредактировал /etc/sysconfig/network-scripts/ifcfg-eth0
, как и раньше, и все это работает, но не уверен, что это лучший подход.
Я нашел хорошее решение этой проблемы. Я использую terraform для запуска и начальной настройки своих экземпляров с использованием пользовательских данных cloud-init, и следующий файл пользовательских данных EC2 мне подходит:
#cloud-config
preserve_hostname: false
hostname: centos-01
fqdn: centos-01.example.com
manage_etc_hosts: true
write_files:
- path: /etc/cloud/cloud.cfg.d/99-custom-networking.cfg
owner: root:root
permissions: 0600
content: |
network:
version: 1
config:
- type: physical
name: eth0
subnets:
- type: dhcp
- type: dhcp6
power_state:
mode: reboot
delay: now
message: Rebooting post-config
timeout: 30
condition: True
Важными частями этой конфигурации являются write_files
, в котором устанавливается соответствующая конфигурация cloud-init для включения IPv6, а затем power_state
, который запускает немедленную перезагрузку после настройки, которая затем применяет изменения конфигурации сети.
После перезагрузки. , вот как выглядит сетевая конфигурация:
[centos@centos-01 ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=dhcp
DEVICE=eth0
DHCPV6C=yes
IPV6INIT=yes
IPV6_AUTOCONF=no
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
Я доволен решением, хотя я не совсем уверен, почему я не мог просто указать сетевую конфигурацию в своих пользовательских данных напрямую, вместо того, чтобы писать ее в файл и перезагрузитесь. Во всяком случае, это работает и довольно безболезненно.
Я наконец-то нашел решение проблемы.
Нам нужно было добавить внешний IPv6-адрес в / etc / sysconfig / network-scripts / ifcfg-eth0
следующим образом ;
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=dhcp
DEVICE=eth0
DHCPV6C=yes
IPV6INIT=yes
IPV6ADDR="xxxx:xxxx:xxxx:xxx:xx:xxx:xx" <--add the external IPv6 here
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
Сценарии облачной инициализации, которые настраивают сеть, запускаются один раз при начальной загрузке. Если вы можете выяснить, какой модуль его настраивает, вы можете попробовать добавить , всегда
после его имени в файле /etc/cloud/cloud.cfg
, и перезагрузитесь после назначения вашего экземпляра EC2. адрес IPv6.
Если вы хотите правильно настроить IPv6, убедитесь, что ваша подсеть настроена на с автоматическим назначением адресов IPv6. Для этого щелкните правой кнопкой мыши свою подсеть в списке подсетей и выберите «Изменить параметры автоматического назначения IP».
Наконец, когда это сработает, это то, что я вижу в / etc / sysconfig / network
:
NOZEROCONF=yes
DEVTIMEOUT=10
# Created by cloud-init on instance boot automatically, do not edit.
#
NETWORKING=yes
NETWORKING_IPV6=yes
IPV6_AUTOCONF=no
и в / etc / sysconfig / network-scripts / ifcfg-eth0
:
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=dhcp
DEVICE=eth0
DHCPV6C=yes
HWADDR=xx:xx:xx:xx:xx:xx
IPV6INIT=yes
ONBOOT=yes
STARTMODE=auto
TYPE=Ethernet
USERCTL=no