Как включить IPv6 в RHEL 7.4 на Amazon EC2

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?

4
задан 3 August 2017 в 15:56
5 ответов

Чтобы настроить DHCPv6 в RHEL 7.4 или CentOS 7

  1. Подключитесь к своему экземпляру, используя общедоступный IPv4-адрес экземпляра.
  2. Используя текстовый редактор по вашему выбору, создайте пользовательский файл для пример:

    /etc/cloud/cloud.cfg.d/99-custom-networking.cfg

  3. Добавьте следующие строки в свой файл и сохраните изменения:

     сеть:
      версия: 1
      config:
      - тип: физический
      имя: eth0
      подсети:
      - тип: dhcp6
     
  4. Перезагрузите свой экземпляр.

  5. Повторно подключитесь к своему экземпляру и используйте команду ifconfig, чтобы убедиться, что адрес IPv6 настроен на сетевом интерфейсе.

Источник: https://docs.aws.amazon. com / AmazonVPC / latest / UserGuide / vpc-migrate-ipv6.html # ipv6-dhcpv6-rhel

5
ответ дан 3 December 2019 в 03:05

Я создал следующий файл:

$ cat /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg 
network: {config: disabled}

И отредактировал /etc/sysconfig/network-scripts/ifcfg-eth0, как и раньше, и все это работает, но не уверен, что это лучший подход.

.
0
ответ дан 3 December 2019 в 03:05

Я нашел хорошее решение этой проблемы. Я использую 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

Я доволен решением, хотя я не совсем уверен, почему я не мог просто указать сетевую конфигурацию в своих пользовательских данных напрямую, вместо того, чтобы писать ее в файл и перезагрузитесь. Во всяком случае, это работает и довольно безболезненно.

1
ответ дан 3 December 2019 в 03:05

Я наконец-то нашел решение проблемы.

Нам нужно было добавить внешний 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
0
ответ дан 3 December 2019 в 03:05

Сценарии облачной инициализации, которые настраивают сеть, запускаются один раз при начальной загрузке. Если вы можете выяснить, какой модуль его настраивает, вы можете попробовать добавить , всегда после его имени в файле /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
1
ответ дан 29 April 2020 в 14:40

Теги

Похожие вопросы