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を有効にするにはどうすればよいですか?
RHEL 7.4またはCentOS 7でDHCPv6を構成するには
任意のテキストエディタを使用して、カスタムファイルを作成します。次に例を示します。
/etc/cloud/cloud.cfg.d/99-custom-networking.cfg
次の行をファイルに追加し、変更を保存します。
network:
version: 1
config:
- type: physical
name: eth0
subnets:
- type: dhcp6
インスタンスを再起動します。
インスタンスに再接続し、ifconfigコマンドを使用して、IPv6アドレスがネットワークインターフェースに構成されていることを確認します。
ソース: https://docs.aws.Amazon.com/AmazonVPC/latest/UserGuide/vpc-migrate-ipv6.html#ipv6-dhcpv6-rhel
私はこれに対する良い解決策を見つけました。私は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
さて、私は次のファイルを作成しました:
$ cat /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
network: {config: disabled}
そして編集された/etc/sysconfig/network-scripts/ifcfg-eth0
以前と同じですが、すべて機能しますが、これが最善の方法かどうかはわかりません。