web-dev-qa-db-ja.com

Debian / Ubuntuでの静的IPv6アドレスアドバタイズとIPv6 autoconfig

IPv6 autoconfigを介してIPv6アドレスをアドバタイズするネットワークがあります。 DNSルックアップを許可し、派手なIPアドレスを設定するには、/ etc/network/interfacesを介して「静的」IPv6アドレスを設定します。

auto eth0
iface eth0 inet dhcp
iface eth0 inet6 static
    address a:b:c:d:e::f 
    netmask 64

現在IPv6を介して接続する場合は常に、LinuxはIPv6自動構成アドレスを使用します。

 a:b:c:d:21d:60ff:fe4a:479

静的IPv6アドレスではありません:

 a:b:c:d:e::f

反対側のサーバーはautoconfigアドレスのみを認識します。

Linux(Debian/Ubuntu)が送信パケットに静的アドレスを使用するように強制する方法はありますか?これは、リバースDNSとファイアウォールの設定で特に興味深いものです。

ルーターがアドバタイズする設定を制御できないため、IPv6自動構成を無効にしたくありません。

6
Pascal

もちろん、autoconfアドレスが使用されないようにする最も簡単な方法は、次のようにしてカーネルがアドレスを作成しないようにすることです。

echo 0 >/proc/sys/net/ipv6/conf/eth0/autoconf

プレフィックスのアドバタイズメントの送信を停止するようにルーターを再構成する必要がないことに注意してください。

[〜#〜]注[〜#〜]コメントでは、/etc/gai.confについて話しますが、これは適用されません。これは、カーネルではなくglibcの構成ファイルであり、送信元アドレスの選択ではなく、宛先アドレスの選択に影響します。

それでもautoconfアドレスを存在させたいが、それらを使用したくない場合は、読み進めてください...

同じネットワーク上のホスト間の通信用

Autoconfアドレスよりも静的アドレスを優先するようにアドレス選択を強制する良い方法が見つかりませんでした。 RFC 3484 のすべてのルールを見ると、どれも本当に役に立ちませんでした。

接続されたサブネットのルーティングテーブルの/ 64ルートを変更して、「src」属性を持つようにすることができますが、サブネット内のアドレスのいずれかがインターフェイスに追加されると、カーネルによって自動生成されます。事後の編集に失敗。

インターネット上の残りのホストとの通信用

アウトバウンド接続のアドレス選択に影響を与える方法はいくつかあります。最も明白なのは、ルートでsrc属性を使用することです。例えば:

ip route add ::/0 via <gateway> src <desired-source-IP-address>

ただし、デフォルトルートはルーターアドバタイズメッセージからのものであり、カーネルによって自動的に挿入される可能性があります。その場合、ルートに「src」属性を指定することはできません。したがって、アドレスラベルの構成に基づく別の方法があります。

デフォルトでは、Linuxでは、カーネルのアドレスラベルテーブルは次のようになります。

prefix ::1/128 label 0
prefix ::/96 label 3
prefix ::ffff:0.0.0.0/96 label 4
prefix 2001::/32 label 6
prefix 2001:10::/28 label 7
prefix 2002::/16 label 2
prefix fc00::/7 label 5
prefix ::/0 label 1

ラベルxの宛先アドレスへのパケットを開始するとき、カーネルは同じラベルxの送信元アドレスを使用することを好むという考え方です。たとえば、6to4アドレス(2002 ::/16のアドレス)を使用してホストにパケットを送信する場合、そのラベルは2であり、カーネルは送信パケットに6to4送信元アドレスを選択することを好みます、利用可能なものがある場合。

一般的なIPv6宛先は、ラベル1(::/0、すべてに一致)を取得します。これがあなたがしたいことです:

  • ローカルサブネットのラベル割り当てをオーバーライドして、ローカルサブネット上のアドレスが「martian」ラベル(他では使用されないラベル)を取得するようにします。このルールはサブネット全体に一致するため、/ 64になります。
  • 目的の静的アドレスのラベル割り当てを再度オーバーライドして、1に戻します(つまり、残りのインターネットアドレスが取得するのと同じラベル)。このルールは特定の目的のアドレスにのみ一致するため、/ 128になります。

このように、ローカルサブネット上のこれらのautoconfアドレスはすべて、インターネット上の他のラベルと一致しない火星のラベルを取得するため、優先されませんが、目的の送信元アドレスのラベルは次のようになります。 1なので、宛先アドレスと一致して選択されます。

プレフィックスが2001:db8 ::/64で、選択した静的アドレスが2001:db8 :: aaaa/128の場合、次のようになります。

ip addrlabel add prefix 2001:db8::/64 label 99
ip addrlabel add prefix 2001:db8::aaaa/128 label 1

これら2つのコマンドを/etc/network/interfacesupコマンドとして追加して、インターフェイスが起動するたびに実行されるようにすることができます。

6
Celada