web-dev-qa-db-ja.com

Amazon EC2のRHEL 7.4でIPv6を有効にする方法

Amazonは、RHEL 7およびCentos 7でIPv6を有効にする方法の説明を提供しています。 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に固有のものかどうかはわかりません。RHEL7.4リリースノートには何も記載されていないため、Amazonに固有のものである可能性があります。

では、Cloud-initモデルのRHEL 7.4およびCentos 7.4でIPv6を有効にするにはどうすればよいですか?

4

RHEL 7.4またはCentOS 7でDHCPv6を構成するには

  1. インスタンスのパブリックIPv4アドレスを使用してインスタンスに接続します。
  2. 任意のテキストエディタを使用して、カスタムファイルを作成します。次に例を示します。

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

  3. 次の行をファイルに追加し、変更を保存します。

    network:
      version: 1
      config:
      - type: physical
        name: eth0
        subnets:
          - type: dhcp6
    
  4. インスタンスを再起動します。

  5. インスタンスに再接続し、ifconfigコマンドを使用して、IPv6アドレスがネットワークインターフェースに構成されていることを確認します。

ソース: https://docs.aws.Amazon.com/AmazonVPC/latest/UserGuide/vpc-migrate-ipv6.html#ipv6-dhcpv6-rhel

5
Al Pooley

私はこれに対する良い解決策を見つけました。私は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
guzzijason

私は最終的に問題の解決策を特定しました。

次のように、外部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

さて、私は次のファイルを作成しました:

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

そして編集された/etc/sysconfig/network-scripts/ifcfg-eth0以前と同じですが、すべて機能しますが、これが最善の方法かどうかはわかりません。

0