web-dev-qa-db-ja.com

Linuxipv6ルーターのradvdをアップストリームDSLゲートウェイに向けて構成する方法

ホームLinuxルーターでホームネットワーク上のipv6もサポートできるようにしようとしています。

パブリックインターネットへのGWとして機能するNVG599DSLルーターがあり、次に2つのインターフェイスを備えたLinuxルーターがあります。ホームネットワーク用のeth0とDSLルーター用のeth1です。

ホームネットワーク<---- eth0 -----> LinuxRouter <------ eth1 -------> DSLrouter->>>>>

DSLルーターは私のISPからの/ 64ネットワークプレフィックスで構成され(2001:0:0:1234 ::/64であると想定)、DSLルーターのipv6グローバルアドレスは2001:0:0:1234 :: 1です。 。この同じ/ 64ネットワークプレフィックスをホームLANに向けてeth0にアドバタイズするようにradvdを使用してLinuxルーターをセットアップしました。実際、LAN上のホストがIPアドレスを自動構成できることがわかります。アドバタイズメントには、Linuxルーターが::/0のデフォルトルーターとしてリストされており、DSLルーターにパケットを送信するように転送が設定されています。

私が抱えている問題は、DSLルーターがインターネットからインバウンドパケットを受信したときにeth1でネイバー勧誘パケットを送信しており、それらのネイバー勧誘がLinuxルーターのeth1-> eth0から渡されていないことです。これは、DSLルーターがホームネットワークに直接接続されていると見なしているために発生していると思います(これは、Linuxルーターが中央にないホームネットワークの99%で通常発生する方法です)。

それを理解するために2日間を費やした後、これまでのところ答えは私にはわかりませんでした。 radvdを使用してルーターアドバタイズメントをDSLルーターに送信し、Linuxルーター経由で/ 64プレフィックスのすべてのパケットをルーティングするように指示する方法があることを期待しています。現在、Linuxルーターによって送信されるルーター通知は、DSLルーターに送信される/ 64プレフィックスで構成されています。

interface eth1
{
    AdvSendAdvert on;
    MinRtrAdvInterval 3;
    MaxRtrAdvInterval 10;
    route 2001:0:0:1234::/64 {
    };

};

DSLルーターがすべてのパケットをネットワークに転送するのにこれで十分だと思いますが、それでもネイバーの要請は見られます。

DSLルーターには「デフォルトサーバー」を設定する機能を備えたIPパススルー設定があるようですが、それらはIPv4にのみ適用されるようです。 DSLルーターが私のRAを尊重していないと仮定すると、Linuxルーターで「xorb」を使用してipv6マルチキャスト転送をセットアップできると思いますが、他のオプションがあるかどうか疑問に思います。

3
DavidG

私が抱えている問題は、DSLルーターがインターネットからインバウンドパケットを受信したときにeth1でネイバー勧誘パケットを送信しており、それらのネイバー勧誘がLinuxルーターのeth1-> eth0から渡されていないことです。

それは正常です。ネイバーソリシエーションは、ARPクエリと同じように機能します。IPアドレスをMACアドレスに変換するため、同じブロードキャストドメイン内でのみ意味があります。ルーターがそれらを転送することは意味がありません

(状況によっては、最後に説明するように、ルーターはそれらをプロキシできますが、...プランCに残します。)

これは、DSLルーターがホームネットワークに直接接続されていると見なしているために発生していると思います(これは、Linuxルーターが中央にないホームネットワークの99%で通常発生する方法です)。

はい、それ以外の方法で言われたことはありません

したがって、現在の状況では、sameIPサブネットが2つの異なるネットワークで使用されており、Linuxルーターがブリッジとして機能することを期待しています。 ..これはルーターのほぼ正反対です。

(紛らわしい部分がIPv6の場合、ルーティングは両方でほぼ同じであり、NDはほとんどARPと同等であるため、セットアップ全体をIPv4の用語で考えてください。したがって、で同じ192.168.1.0サブネットを使用しない場合v4 ...)


あなたの最善の行動はsecond/ 64、を取得し、を使用することですLinuxルーターのeth1ネットワーク用。 (DSLルーターがDHCPv6-PDを介してプレフィックスを取得する場合、それをだまして2番目のプレフィックスを要求する可能性があります。)ただし、2番目の/ 64はインターフェイスで直接使用されず、代わりにLinuxルーターのアドレスに向けてルーティング

例えば:

  • DSLルーターのWANインターフェイス)には2001:db8:0:0:a:b:c:dがあります。
  • DSLルーターはISPから2001:db8:10:0 ::/64を取得し、LANインターフェイスで2001:db8:10:0 :: 1/64を自己割り当てし、ルーターアドバタイズメントを送信します。
  • Linuxルーターは、R​​Aに基づいてeth1で2001:db8:10:0:x:y:z:tを自動構成します。
  • LinuxルーターはISPから2001:db8:10:1 ::/64を取得し(どういうわけか)、eth0インターフェイスで2001:db8:10:1 :: 1/64を自己割り当てし、radvdはそのためのルーターアドバタイズメントを送信します- not最初のサブネットの場合。
  • 2番目のサブネットのすべてのトラフィックがLinuxルーターに転送されるように、DSLルーターには「2001:db8:10:1 ::/64via 2001:db8:10:0:x:y:z:t」のようなルートが必要です。 。

(あまり明確でない例についてはお詫びします。)

ISPが/ 60または/ 56全体を委任し、そのすべてをDSLルーターにルーティングする場合があります。その場合、DHCPV6-PDの魔法を使わずに2番目のサブネットを設定することができます。 ISPとCPEの両方に依存しているため、ここでは適切な「一般的な」回答を提供することはできません。


2番目の/ 64プレフィックスを取得できない場合、他の可能なオプションは次のとおりです。

  • Linuxシステムを、ルーティング機能のない純粋なブリッジに変えます。

  • トンネルプロバイダー(または6to4)など、追加の/ 64を取得するために他のソースを使用します。既存のトンネルサービスは、以下で説明するハックよりもはるかに確実に機能します(追加の遅延を除く)。

  • DSLルーターが/ 64のみを取得し、LAN用に構成しないようにします。 (ルーターの柔軟性によって異なります。)代わりに、Linuxシステムのeth0リンクローカルアドレスを介してその/ 64のルートを再度設定し、同様にDSLルーターを介して::/0のルートをLinuxシステムに設定します。 LANリンクローカルアドレス。その結果、/ 64は2番目のサブネットでのみ使用され、1番目のサブネットにはパブリックプレフィックスがまったくありません。

  • 現在の設定を続行しますが、「ndppd」をインストールして近隣探索プロキシを実行します。 (いいえ、NDパケットにはリンクローカルの送信元アドレスが含まれていることが多いため、マルチキャスト転送は機能しません。)これには注意してください。非常に混乱する可能性があります。

  • 2番目のLANにプライベート(ULA)アドレスを使用し、Linuxルーターで1対多のNAT(マスカレード)を有効にします...プロセスでのIPv6の有用性のほとんどを失います。(はい、公式にはNATはIPv6には存在しませんが、Linuxのnetfilter/iptablesがそれを提供して実装するのを止めませんでした。)

5
user1686