小規模な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
何か案が?
私は問題を見つけました。
デフォルトでは、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.