web-dev-qa-db-ja.com

RadvdプレフィックスがRAを通過

ルーターでradvdを実行すると、誰もがネット上で言う「自動」でクライアントPCがIPv6アドレスを取得します。 RAでradvdによって公開されている同じプレフィックスを使用し、他のインターフェイスでこのプレフィックスを使用して、同じUbuntuクライアントをルーターとして機能させる方法はありますか(radvd) ?もしそうなら、これを行うための最良の方法を説明してください。

2

いいえ、あなたがすることはできません。これは機能不足の問題ではなく、IPv6プロトコル仕様の制限です。

理由は次のとおりです。

あなたが参照している「自動的に」は[〜#〜] s [〜#〜]tate[〜 #〜] l [〜#〜]ess[〜#〜] a [〜#〜]ddress[〜#〜] a [〜#〜])uto[〜#〜] c [〜#〜]onfiguration(SLAAC)、. SLAACの仕様は、64ビットのネットマスクで機能することを示しています(つまり、アドレスの最初の64ビット(16桁の16進文字)は、アドレスが同じブロックで考慮され、このネットワークセグメントで使用されるためには同じでなければなりません)。

定義上、ルーターは少なくとも2つの異なるネットワークセグメント上にあるマシンです。実際、ルーターの名前は、2つのセグメント間でトラフィックをルーティングすることから付けられています。

(ここで言う「セグメント」とは、相互に直接接続された(中間ルーターなしで)スイッチと、それらのスイッチに接続されたPCおよびその他の「行き止まり」デバイスの集まりです。)

ネットワークに接続されたマシン(PC、サーバーなど)がトラフィックをアドレスに送信したい場合、到達したいアドレスが直接(同じセグメントで)到達可能か(同じセグメントではなく)到達可能かを決定する必要があります。ルーターを経由して正しいセグメントに移動します)。これを行うために、コンピューターは構成されたネットマスクを調べます。ネットマスクは、到達したいアドレスの最初のXビットがコンピューター自体のアドレスと同じである場合、そのアドレスは同じセグメント上にあり、コンピューターはアドレスに直接接続する必要があることをコンピューターに通知するだけです(ICMPv6近隣探索を使用)プロトコル)。最初のXビットが共通でない場合、アドレスは別のアドレスブロックの一部であり、別のセグメント上にあるため、ルーターを介してトラフィックを送信し、正しいセグメントに到達する必要があります。

Ubuntuマシンの1つのインターフェースで発生するSLAACを使用すると、ネットマスクはプロトコル仕様によって64ビットであると定義されます。/64ネットマスクブロックのより小さな部分を要求し、それを別のインターフェイスで使用してSLAACでセグメント化する方法はありません。これには2つの理由があります。まず、SLAACには64ビットのネットマスクが必要です。 64ビットのネットマスクブロックから小さなブロックを分割する場合、大きなネットマスクは小さなブロックを意味するため、小さなブロックは本質的に64ビットのネットマスクブロックではありません。 (たとえば、65ビットのネットマスクブロックは、64ビットのネットマスクブロックのサイズの半分です)。次に、SLAACでアドバタイズされている64ビットネットマスクブロックを現在持っているネットワーク上の他のすべてのマシンは、entireブロックに直接到達できることを期待していますセグメント、およびそのブロックの一部に到達するためにルーターを通過する必要があることを期待していません.

さて、これを回避する方法はありますが、ルーターとして機能するUbuntuマシンではできません。 Ubuntuマシンのポートをスイッチとして機能するように構成し、変更せずにポート間でトラフィックを透過的に渡すことができます。そうすることで、マシンは、この仮想スイッチの3番目のポートに接続されているかのように機能する新しいインターフェースを取得します。これにより、Ubuntuマシンに必要な構成(SLAACを含む)を取得してネットワークアクセスを許可し、マシン上の2つの物理インターフェイス間でトラフィックをそのまま流すことができます。これにより、マシンとその物理インターフェイス上の2つのネットワークがすべて同じセグメントになります(マシンがスイッチの役割を果たしているため)。

これを行うには、ブリッジを設定する必要があります。 bridge-utilsパッケージをインストールする必要があります。次に、現在の物理インターフェイスからアドレス/構成を削除します。それからあなたはしたいでしょう:

brctl addbr br0
brctl addif br0 intefacename1
brctl addif br0 intefacename2
ifconfig br0 up
ifconfig intefacename1 up
ifconfig intefacename2 up

次に、物理インターフェイスで必要だった構成を新しいインターフェイスbr0に追加します。詳細は https://wiki.debian.org/BridgeNetworkConnectionshttps://wiki.debian.org/NetworkConfiguration#Bridging をご覧ください。 (特に、/ etc/network/interfacesの再起動後に構成を適用する方法)。

2
Azendale