16.04 で安定した IPv6 アドレスを取得するにはどうすればよいですか?

16.04 で安定した IPv6 アドレスを取得するにはどうすればよいですか?

私は自宅のサーバーを指すドメイン名を持っています。Wily までのすべての Ubuntu リリースでは、デフォルトで AAAA レコードに使用できる安定した EIU-64 アドレスがありました。しかし、Xenial をインストールした後、デフォルトでは安定したアドレスを取得できないようです。

joejoe@myserver:~$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:24:1d:d2:e3:f4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.101/24 brd 192.168.0.255 scope global enp2s0
       valid_lft forever preferred_lft forever
    inet6 2601:280:3068:2945:74ed:b303:6474:6e29/64 scope global temporary dynamic
       valid_lft 6965sec preferred_lft 3363sec
    inet6 2601:280:3068:2945:ac34:ea15:4340:29a4/64 scope global temporary deprecated dynamic
       valid_lft 6965sec preferred_lft 0sec
    inet6 2601:280:3068:2945:bdfd:6253:b07e:1308/64 scope global mngtmpaddr noprefixroute dynamic
       valid_lft 6965sec preferred_lft 6965sec
    inet6 fe80::dc3e:6127:bd4e:18b/64 scope link
       valid_lft forever preferred_lft forever

ご覧のとおり、すべてのinet6アドレスのscope global有効期間は限られています。EIU-64 アドレスを取り戻す方法はありますか? または、ドメイン名レコードで使用できる安定したアドレスを取得する他の方法はありますか?

答え1

私はこれを理解しました。 内の各接続に対して/etc/NetworkManager/system-connections/、次のプロパティを設定する必要があります。

[ipv6]
addr-gen-mode=eui64

stable-privacy16.04 の NetworkManager では、設定に がデフォルトとして設定されているようですaddr-gen-mode

答え2

ここでの他の回答は少し不完全です。NetworkManagerの設定を変更しても、持っている1 つ (これが実際に問題です。以下を参照)、IPv6 プライバシー拡張機能を無効にすることは、実際にはあまり関係ありません (繰り返しますが、安定しているはずの IPv6 アドレスが起動ごとに変わる場合、余分なプライバシー アドレスを削除しても役に立ちません)。

詳細はこのスレッド16.04 のデフォルトの新規インストールでは、有線接続を使用している場合に若干の見落としがあります。NetworkManager は自動的に「一時的な」構成を生成しますが、これはうまく機能しますが、まさに一時的なものです。つまり、一貫性のある IPv6 アドレスにハッシュするために使用される GUID は保存されず、起動するたびに新しいアドレスが取得されます。NetworkManager にアクセスし、有線接続で「編集」を押して変更せずに保存するだけで、保存された GUID を含む実際の NM 構成が生成され、起動するたびに同じ IPv6 アドレスが取得されます。

このアドレスはRFC7217アドレス(GUID、プレフィックスなどの暗号ハッシュ)なので、起動するたびに安定しますが、MACアドレスを直接アドレスに含めるものではありません。これらのEUI64アドレスのいずれかが必要な場合は、この質問に対する他の回答それを変更する方法の詳細。

答え3

Ubuntu 16.04 および以前のリリースでは、デフォルトで EIU-64 が使用されていたため、サーバーでは無効にする必要があります。デスクトップではプライバシー アドレスを使用できて満足しています。

したがって、次のようなものが必要です:

    sysctl -w net.ipv6.conf.all.use_tempaddr=0
    sysctl -w net.ipv6.conf.default.use_tempaddr=0
    sysctl -w net.ipv6.conf.default.use_tempaddr=0
    sysctl -w net.ipv6.conf.<devname>.use_tempaddr=0

次に ifdown/ifup を実行します。私の場合の結果では、MAC/IPv6 の関係に注意してください。

$ ifconfig enp3s0 | egrep 'HWaddr|Global'
enp3s0    Link encap:Ethernet  HWaddr 74:d0:2b:90:8b:90  
          inet6 addr: 2501:300:d008:61c8:76d0:2bff:fe90:8b90/64 Scope:Global

一部のインターフェースでのみ有効にする必要がある場合は、特定のインターフェースに名前を付けることができます。リストは次のように表示できます。

$ sysctl -a | grep tempaddr

実稼働サービスにはネットワーク マネージャーはお勧めしません。たとえば、/etc/sysctl.conf などの他のものとうまく連携しません。これを実行するには、/etc/networking/interfaces に静的アドレスまたは自動構成されたアドレスのエントリが必要です。私は次のように使用しています。

auto enp3s0 
iface enp3s0 inet dhcp
iface enp3s0 inet6 auto
pre-up modprobe ipv6

もちろん、お好みに合わせて調整してください。

関連情報