私の ISP (comcast) はプレフィックスを委任し、ルーターはプレフィックス委任 (pd) を LAN に渡しています。私の Debian マシンはプレフィックスを取得し、EUI-64 アドレスを使用して追加しています。これは便利ですが、あまり覚えやすいものではありません。PD プレフィックス内に追加の「バニティ」アドレスがある方が好みです。
詳細:
- PDは(例:2601:8:abcd:abcd/64)
- 私の Linux ボックスは eui-64: 2601:8:abcd:abcd:DEAD:BEff:feEF:CAFE (MAC DE:AD:BE:EF:CA:FE の場合) を自動構成します。
私が希望しているのは、インターフェイス 2601:8:abcd:abcd::2 を静的グローバル アドレスとして手動で作成することですが、Comcast プレフィックス委任が変更された場合は、インターフェイスが新しい委任プレフィックスを採用し、静的サフィックスを使用するようにします。
答え1
あなたが探しているのは次のものだと思います:
ip token set ::dead:beef/64 dev eth0
私の理解では、IP6 アドレスを取得するために通常実行するものを実行する前にこれを実行し、0:0:dead:beef
通常の EUI-64 の代わりに使用されます。
奇妙なことに、これは対応するリンクローカル アドレスを追加せず、代わりにプレフィックス付きの通常の EUI-64 を追加するようですfe80::/64
。これを手動で修正するには、次のコマンドを実行します。
ip addr flush scope link dev eth0
ip addr add fe80::dead:beef/64 dev eth0
必要に応じて、サフィックス、プレフィックス サイズ、およびインターフェイス ( ::dead:beef
、、) を置き換えます。/64
eth0
答え2
今のところ、Network ManagerはほぼすべてのGNU/Linuxディストリビューションでデフォルトで使用されています(http://news.softpedia.com/news/networkmanager-1-4-adds-support-for-setting-ipv6-tokenized-interface-identifiers-507601.shtml)私はこの他の議論をhttps://unix.stackexchange.com/a/403541/259695役に立つかもしれません。トークンは次のように設定できます
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 "::dead:beef" # or "::2" - as you like
これは/etc/sysconfig/network-scripts/ifcfg-eth0に書き込まれ、IPV6_TOKEN=::dead:beef
再起動後も存続します。これをすぐに適用するには、次のようにしてインターフェースを再起動します。
nmcli connection up id eth0 # restart
答え3
ネットワーク プレフィックスをアナウンスすることに加えて、ステートフル DHCPv6 サービスを使用する必要があります。
DHCPv4と同様に、ステートフルモードのDHCPv6サーバーは、必要な範囲からホストにアドレスを割り当てます。これは、たとえば2601:8:abcd:abcd::10-2601:8:abcd:abcd::99のように非常に狭い範囲になることもあります。私はdnsmasq私のルーターで。
通常、DHCPv6 によって割り当てられたアドレスに加えて、ホストは引き続きユニキャスト IPv6 アドレスを自律的に生成します。各インターフェイスには 2 つ (またはそれ以上) のユニキャスト IPv6 アドレスがあります。ルーターの設定を変更することで、この動作をオフにできます。自律アドレス構成フラグを無効にすると、この動作は有効になります。ただし、大多数の Android デバイスは IPv6 アドレスを取得できなくなります。Android (少なくとも KitKat 4.4.4 では) は、依然として DHCPv6 を適切にサポートしていません...
答え4
この質問にまだ答えられていないなんて信じられません!
素晴らしいユルゲンの回答ただし、NetworkManager ではなく networkd を使用してネットワークをレンダリングするサーバーには適用されません。
自己調整型の半静的IPv6を必要とするサーバーの場合は、次の行を追加する必要があります。
ipv6-address-token: "::ace:face"
netplan yamlのインターフェース記述に追加します。例:
network:
version: 2
ethernets:
eth0:
dhcp4: false
dhcp6: false
ipv6-address-token: "::ace:face"
addresses:
- <ipv4 static address>
nameservers: ...
/etc/sysctl.conf
ただし、IP 転送が有効になっている場合は、networkd によるデフォルトの無効化をオーバーライドするために、次の行を追加する必要がありますaccept_ra
。このロジック (ルーターの場合は、他のルーターからの ra を受け入れない) は理にかなっていますが、場合によっては適用されません。
net.ipv6.conf.eth0.accept_ra=2
sysctl conf の行は、IP 転送設定にかかわらず、ルーター通知 (ra) の受け入れを強制します。ra は委任されたプレフィックスを通知するため、これは不可欠です。
netplanのIPv6アドレストークンテンプレートの行は、ルータが提供するプレフィックスと指定したアドレスを使用してIPv6アドレスを生成するためのものです。つまり、次のような形式のアドレスになります。
<delegated prefix>::ace:face/<bit length of netmask>
それでも、完全に静的ではありませんが予測可能であり、プレフィックスが変更されたときにすべてのサーバーを再構成する必要はありません。