ネットワーク上のルーターは、ISPによって割り当てられたIPv6プレフィックスを渡します。このプレフィックスは動的ですが、「かなり粘着性があります」。
自分のマシンにRAでアドバタイズされたプレフィックスを自動的に取得させたいが、ランダムに生成したり、MACアドレスに基づいて生成したりするのではなく、ユーザー指定のローカルパーツと組み合わせたい。それを行う簡単な方法はありますか?
ネットワーク上のルーターは、ISPによって割り当てられたIPv6プレフィックスを渡します。このプレフィックスは動的ですが、「かなり粘着性があります」。
自分のマシンにRAでアドバタイズされたプレフィックスを自動的に取得させたいが、ランダムに生成したり、MACアドレスに基づいて生成したりするのではなく、ユーザー指定のローカルパーツと組み合わせたい。それを行う簡単な方法はありますか?
回答:
これを行うには2つの方法があります。1つは簡単な方法で、もう1つは難しい方法です。
簡単な方法は、ネットワーク上でDHCPv6サーバーを実行し、各デバイスにホストアドレスを自分で割り当てることです。または、サーバーにホスト部分を選択させます。私が見たDHCPv6サーバーは、プレフィックスが変更されても、同じホスト部分を保持します。
難しい方法は、を使用ip token
してトークン化されたインターフェイス識別子を設定することです。これは次のように説明されます。
IPv6トークン化されたインターフェイス識別子のサポートは、ルーターアドバタイズメントからグローバルネットワークプレフィックスを取得しながら、既知のホストパーツアドレスをノードに割り当てるために使用されます。トークン化された識別子の主なターゲットは、DHCPv6やSLAACを使用するのではなく、通常アドレスが手動で構成されるサーバープラットフォームです。トークン化された識別子を使用することで、ホストはSLAACを使用してネットワークプレフィックスを決定できますが、ネットワークプレフィックスが変更された場合、自動的に番号が自動的に付け直されます。トークン化されたIPv6識別子については、ドラフト<draft-chown-6man-tokenised-ipv6-identifiers-02>で説明されています。
これが難しい方法である理由は、Linuxにこの機能が含まれているにもかかわらず、手動またはDHCPで構成されたアドレスの場合のように、このような構成を永続化してブート時に適用するためのサポートがLinuxディストリビューションに含まれていないためです。ですから、いくつかのディストリビューションでうまくいくまで、それはおそらくあなたにとってはあまりうまくいきません。NetworkManagerおよびsystemd-networkdでIPv6トークンを構成できるようになりました。最近の回答には、特定の構成手順があります。
最後に、ISPが時々プレフィックスを変更する場合は、ネットワーク内で一意のローカルアドレスを使用することを検討してください。このようにして、すべてのデバイスに常に変更されることのないアドレスがあり、それらのアドレスを使用して相互に通信できます。一部のIPv6をサポートするホーム/ SOHOルーター(OpenWrtなど)には、ホームネットワーク全体でULAを有効にするオプションがあります。家に複数のルーターがある場合、ISPに接続するルーターでこれを有効にする必要があります。
Michaelは非常に良い要約を行い、プラグウォッシュの最近のヒントは、CentOS 7 / RHEL(systemdおよびネットワークマネージャーも)ソリューションを数時間探した後、私が見つけた最高のものでした。nmcliに慣れた後(主にifcfgとipをまだ使用していました)-うまく適用できました。
ただし、https: //developer.gnome.org/NetworkManager/stable/settings-ipv6.html NetworkManagerは、プロパティとしてIPv6トークン化されたインターフェイス識別子を直接サポートしています(リリース1.4 2016年8月http://news.softpedia.com/からnews / networkmanager-1-4-adds-support-for-setting-ipv6-tokenized-interface-identifiers-507601.shtml)。
したがって、ネットワークマネージャーの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
Linuxがこの機能をサポートしていることを確認し、低レベルのコマンドを指してくれたMichaelに感謝します。この回答では、Debianストレッチデスクトップ(systemdとnetwork-managerを使用)で実際に機能させる方法について説明します。
まず、ネットワークマネージャーで接続を編集し、IPv6設定を無視するように設定します。
次に、ファイル/etc/NetworkManager/dispatcher.d/pre-up.d/iptokenを作成します。ファイルは、root、権限755、および次の内容で所有されている必要があります。
#!/bin/sh
ip token set ::2 dev eth0
eth0を必要なデバイスに置き換え、:: 2を必要なサフィックスに置き換えます。
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ビットはゼロに設定する必要があります。
この後、を有効にして起動しsystemd-networkd.service
ます。