web-dev-qa-db-ja.com

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アドレスを取得する方法はありますか、またはドメイン名レコードで使用できる安定したアドレスを取得する他の方法はありますか?

5
Chris Keller

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

[ipv6]
addr-gen-mode=eui64

16.04のNetworkManagerは、stable-privacy設定にデフォルトのaddr-gen-modeを設定しているようです。 stable-privacyが設定されている場合、ip6-privacyが0に設定されている場合でも、毎回ランダムなアドレスが生成されます。

4
saiarcot895

ここでの他の答えは少し不完全です:NetworkManagerの設定を変更しても、haveがない場合は役に立ちません(実際には問題です。以下を参照) )、およびIPv6プライバシー拡張機能を無効にすることは、実際には多少関係ありません(再度、各安定したIPv6アドレスがブートごとに変更される場合、余分なプライバシーアドレスを削除しても役に立ちません)。

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

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

6
Josh Watzman

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

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

5
user206966