web-dev-qa-db-ja.com

cloud-initはipv6をセットアップできません

OVHからパブリッククラウドVPSを購入し、ipv6をセットアップしようとしています。また、ドキュメントでipv6の設定方法について チュートリアル を見つけました。 VPSを再起動するまで機能します。

このチュートリアルでは、このファイル/ etc/sysconfig/network-scripts/ifcfg-eth0を更新するように求められていますが、そのファイル内には「インスタンスの起動時にcloud-initによって自動的に作成されます。編集しないでください」と表示されます。私もOVHのサポートに連絡しようとしましたが、彼らはそれについて私を助けることができないと答え、ここで尋ねることを提案しました。

誰かがこれを手伝ってくれる?私はcloud-initを使ったことがなく、ifcfg-eth0を生成する構成がどこにあるのかさえ知りません。

OS:Centos7

2
kironet

私の特定のケースでは、ルーターがDHCPを介してサーバーで実行されているVMにIPv6アドレスをリースしているため(前提として)、ハードコーディングしたり、IP構成を生成したりする必要はありません。動的に生成されたアドレスについてDNSサーバーに通知する必要があります。

以下のスニペット(私のcloud-configスクリプトから)は/etc/sysctl.confを作成し、Centos7を実行しているVM)でIPv6を有効にします。また、現在のIPv6を更新するシェルスクリプトも作成します。アドレスを FreeDNS 15分ごとに、ダイナミックとしてマークされたAAAAレコードをセットアップするときに取得できるFQDNとDDNSキーが必要です。

local fqdn="vm.example.com"
local ddnspasswd='obtain-ddns-key-at-dns.he.net'
cat > user-data <<EOF
    # configure IPv6
    write_files:
      - content: |
            net.ipv6.conf.all.disable_ipv6 = 0
            net.ipv6.conf.default.disable_ipv6 = 0
        path: /etc/sysctl.conf
        owner: root:root
        permissions: 0600
      - content: |
            #!/bin/bash

            function ddns_update_ipv4 {
              local fqdn="${fqdn}"
              local ddnspasswd="${ddnspasswd}"

              /usr/bin/curl -4 "https://dyn.dns.he.net/nic/update" -d "hostname=\${fqdn}" -d "password=\${ddnspasswd}" >> /dev/null 2>&1
              local STATUS=\$?

              if [[ \$STATUS -ne 0 ]]; then
                    echo "IPv4 DNS update failed, return code: \$STATUS" >> /var/log/ddns.log
                    return 1
              fi

              return 0
            }

            function ddns_update_ipv6 {
              local fqdn="${fqdn}"
              local ddnspasswd="${ddnspasswd}"

              /usr/bin/curl -6 "https://dyn.dns.he.net/nic/update" -d "hostname=\${fqdn}" -d "password=\${ddnspasswd}" >> /dev/null 2>&1
              local STATUS=\$?

              if [[ \$STATUS -ne 0 ]]; then
                    echo "IPv6 DNS update failed, return code: \$STATUS" >> /var/log/ddns.log
                    return 1
              fi

              return 0
            }


            ddns_update_ipv6
        path: /sbin/ddns-update
        owner: root:root
        permissions: 0500

    # Update IPv6 on FreeDNS (http://dns.he.net/) every 15 mins
    runcmd:
      - systemctl stop network && systemctl start network
      - echo "0,15,30,45 * * * * /sbin/ddns-update" | tee -a /etc/crontab
      - crontab -u root /etc/crontab
EOF
1
Richard Gomes

インスタンスの起動時にIPv6を有効にするためにEC2ユーザーデータを渡す方法については、こちらの回答をご覧ください。

AmazonEC2のRHEL7.4でIPv6を有効にするにはどうすればよいですか

0
guzzijason

これに対する答えはOVHのガイドにはありませんが、次のように機能します。

/etc/cloud/cloud.cfg.d/99-custom-networking.cfgに:追加

network:
    version: 2
    ethernets:
        eth0:
            dhcp: true
            dhcp6: false
            match:
              name: eth0
            addresses:
              - "ADDRESS"
            gateway6: "GATEWAY"

ゲートウェイを設定していることを確認してから、Sudo cloud-init clean -rを使用して再起動して構成を再読み込みしてください

0
Tom B