web-dev-qa-db-ja.com

radvdを使用してサブネットルートをアドバタイズする

小規模なIPv6テストネットワークをセットアップしました。セットアップは次のようになります。

    ::/0
+----------+
| Firewall | Router to the public net
+----------+
     |           2001:...::/106
     |       +----------+
     +-------|  SIT GW  | sit Tunnel gatway to the some test users
     |       +----------+
     |
+----------+
| Test Sys |  Testsystem
+----------+

この考え方は、ファイアウォールからのデフォルトルートと、SitゲートウェイからのSITサブネットのルートをアドバタイズすることです。 radvdの構成は次のとおりです。

# Firewall
interface eth0
{
   AdvSendAdvert on;
   route ::/0 
   {
   };
};


# SIT Gatway
interface eth0
{
   AdvSendAdvert on;
   route 2001:...::/106
   {
   };
};

Advをキャプチャしました。 tcpdumpを含むパッケージとパッケージは良さそうです。 fwからのデフォルトルートと、SITガットウェイからのサブネットルートが表示されます。

しかし、テストシステムを見ると、両方のゲートウェイに2つのデフォルトルートがあります。サブネットルートはありません。もちろん、ルーティングは機能しません。ここで私たちが得るルートは次のとおりです。

2001:.....::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
default via fe80::baac:6fff:fe8e:XXXX dev eth0  proto kernel  metric 1024  expires 0sec mtu 1500 advmss 1440 hoplimit 64
default via fe80::e415:aeff:fe12:XXXX dev eth0  proto kernel  metric 1024  expires 0sec mtu 1500 advmss 1440 hoplimit 64

何か案が?

7
Thomas Berger

私は問題を見つけました。

デフォルトでは、Linuxカーネルはicmpv6のルーターアドバタイズメントオプションを介したデフォルトルートのみを受け入れます。

これを修正するには、正しいカーネルパラメータを設定する必要があります。

net.ipv6.conf.all.accept_ra_rt_info_max_plen = 128

カーネルドキュメントから:

accept_ra_rt_info_max_plen-INTEGERRAのルート情報の最大プレフィックス長。

    Route Information w/ prefix larger than or equal to this
    variable shall be ignored.

    Functional default: 0 if accept_ra_rtr_pref is enabled.
                        -1 if accept_ra_rtr_pref is disabled.
6
Thomas Berger