私のネットワークのルーターは、ISPによって割り当てられたIPv6プレフィックスを展開します。このプレフィックスは動的ですが、「非常に粘着性」です。
私のコンピュータはRAに宣伝されたプレフィックスを自動的にインポートしますが、ランダムプレフィックスを作成したりMACアドレスに基づいている代わりに、ユーザーが指定したローカル部分と組み合わせたいと思います。これを行う簡単な方法はありますか?
答え1
これを行う方法は2つあります。 1つは簡単な長さ、1つは難しい道です。
最も簡単な方法は、ネットワーク上でDHCPv6サーバーを実行し、各デバイスにホストアドレスを直接割り当てることです。または、サーバーにホスト部分を選択させるようにしてください。私が見たDHCPv6サーバーは、プレフィックスが変更されても同じホスト部分を保持します。
難しい方法は使用することですip token
トークン化されたインターフェイス識別子を設定します。これは以下のように説明される。
IPv6トークン化されたインターフェイス識別子のサポートは、よく知られているホスト部分アドレスをノードに割り当て、ルータ広告からグローバルネットワークプレフィックスを取得するために使用されます。トークン化された識別子のデフォルトの宛先は、DHCPv6またはSLAACを使用するのではなく、通常は手動でアドレスを設定するサーバープラットフォームです。トークン化された識別子を使用すると、ホストはSLAACを使用してネットワークプレフィックスを確認し続けることができますが、ネットワークプレフィックスが変更されると自動的に番号が簡単に再割り当てされます。トークン化されたIPv6識別子は、ドラフト:<draft-chown-6man-tokenized-ipv6-identifiers-02>に記載されています。
これが難しいのは、Linuxにこの機能が含まれていますが、私が知っている限り、Linuxディストリビューションには手動またはDHCP構成アドレスに対して行うように、これらの構成を永続化し、起動時に適用するサポートが含まれていないためです。そのため、一部のディストリビューションでこれを行うまでは正常に動作しないことがあります。 NetworkManagerとsystemd-networkdでIPv6トークンを設定できるようになりました。最近の回答には特定の設定手順があります。
最後に、ISPが時々プレフィックスを変更する場合は、ネットワーク上で一意のローカルアドレスを使用することをお勧めします。これにより、すべてのデバイスが常に変更されないアドレスを持つようになり、互いに通信できます。一部のIPv6対応ホーム/SOHOルータ(OpenWrtなど)には、ホームネットワーク全体でULAを有効にするオプションがあります。自宅に複数のルーターがある場合は、ISPに接続されているルーターでこの機能を有効にする必要があります。
答え2
Michaelは非常に良い要約を提供し、Plugwashの最近のヒントは、CentOS 7 / RHEL(システムとネットワーク管理者)のソリューションを数時間検索した後に見つけることができます。 nmcliに慣れたら(私は主にifcfgとipを使用しています)、うまく適用できます。
しかしもっと深く掘り下げるとhttps://developer.gnome.org/NetworkManager/stable/settings-ipv6.htmlNetworkManagerはIPv6トークン化されたインターフェイス識別子をプロパティとして直接サポートします(2016年8月バージョン1.4に基づく)。http://news.softpedia.com/news/networkmanager-1-4-adds-support-for-setting-ipv6-tokenized-interface-identifiers-507601.shtml)。
したがって、Network Manager IPv6設定を無視に設定する必要はありませんが、設定を無視に設定する必要があります。
nmcli connection modify eth0 ipv6.method "auto" # if not already
nmcli connection modify eth0 ipv6.addr-gen-mode "eui64" # use interface token
nmcli connection modify eth0 ipv6.token "::2"
IPV6_TOKEN=::2
再起動後も維持されるように /etc/sysconfig/network-scripts/ifcfg-eth0 に書き込まれます。今すぐこの機能を適用するには、インターフェイスを再起動してください。
nmcli connection up id eth0 # restart
答え3
Linuxがこの機能をサポートしていることを確認し、低レベルのコマンドを指摘したMichaelに感謝します。この回答では、Debian Stretchデスクトップで実際に動作させる方法を説明します(systemdとネットワーク管理者を使用)。
まず、Network Managerで接続を編集し、IPv6設定を無視に設定します。
次に、/etc/NetworkManager/dispatcher.d/pre-up.d/iptoken ファイルを作成します。ファイルはrootが所有し、権限755を持ち、次のコンテンツを含める必要があります。
#!/bin/sh
ip token set ::2 dev eth0
eth0を目的のデバイスに置き換え、::2を希望のサフィックスに置き換えます。
答え4
Linuxではsystemd-network
。
次の場所に.network
ファイルを作成してください/etc/systemd/network/somename.network
。
[Match]
Name=e*
[Network]
DHCP=yes
IPv6Token=::1
で始まるすべてのインターフェイスを一致させるのではなく、完全なインターフェイス名を入力できますe*
。e
これにより DHCP{v4,v6} が有効になり、::1
サフィックスとして使用されます。すべてのIPv6アドレスを選択できますが、最初の64ビットは0に設定する必要があります。
その後、起動して起動しますsystemd-networkd.service
。