IPv6アドレッシング、動的プレフィックス、静的ローカルパーツ


10

ネットワーク上のルーターは、ISPによって割り当てられたIPv6プレフィックスを渡します。このプレフィックスは動的ですが、「かなり粘着性があります」。

自分のマシンにRAでアドバタイズされたプレフィックスを自動的に取得させたいが、ランダムに生成したり、MACアドレスに基づいて生成したりするのではなく、ユーザー指定のローカルパーツと組み合わせたい。それを行う簡単な方法はありますか?


1
これを実行できるオペレーティングシステムは見たことがありません:(
Sander Steffann 2017年

@SanderSteffann Linuxを使用したことはありませんか?
マイケルハンプトン

1
@Michael IIDトークンを設定できるOSを見たことがありません。技術的にはカーネルはそれを行うことができますが、(ディストリビューションのように)OSはそれをサポートしていません:(
Sander Steffann 2017年

回答:


11

これを行うには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に接続するルーターでこれを有効にする必要があります。


実際に質問を引き起こした問題は、ISPルーターが短い有効期間でRAを送信することでした。これはプライバシーアドレスに大きな問題を引き起こします。OTOH私は自分のMACアドレスを世界に公開するという考えはあまり好きではありません。
プラグウォッシュ2017年

静的なローカル部分は、おかげで私のMACアドレスを明らかにすることなくプライバシーアドレスの問題を回避します。
プラグウォッシュ2017年

複数の「動的静的」IPv6アドレスを設定するために単一のインターフェースに複数のトークンを追加する方法を知っていますか?
wedi

@wedi Linuxは、インターフェースごとに1つのトークンのみをサポートします。それが何であれ、IPv6トークンはおそらく問題の解決策ではありません。
マイケルハンプトン

6

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

3

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を必要なサフィックスに置き換えます。


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ます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.