BGP IPv6 в Debian GNU/Linux

Недавно я стал счастливым обладателем собственной AS с сетью IPv6 адресов. Адреса надо как-то маршрутизировать во внешний интернет и внешнему интернету как-то сообщить где мои адреса находятся. Этим занимается протокол BGP. В Linux он представлен несколькими демонами, один из которых – bird.
Есть просто bird и bird6. Тот что “просто” – этот для IPv4, тот что bird6 – для IPv6. Так как прямого выхода на IX у меня нет я воспользовался туннелями. До получения AS и сети я пользовался Hurricane Electric . К ним и проложил туннель, внутри которого bgp-сессия. Через полчаса после запроса туннеля (столько надо было HE чтобы активировать его) я увидел мир IPv6 BGP. Затем потихоньку (за пару-тройку дней) перевёл все свои сервисы на новые адреса и продолжил искать путь приближения к IPv6-интернету.
Кто ищет тот всегда найдёт! Найден был комстар-директ, который даёт транзит IPv6. Написал им письмо с запросом туннеля. Утром получил ответ и приступил к настройке.
Не всё так просто вышло как с HE. Туннель завёлся быстро, а вот BGP-сессия почему-то подниматься не хотела. Как выяснилось позже, причиной тому был MTU (тот, что Max Transfer Unit). Сменили тип туннеля на gre, поставили MTU 1452 и всё зажужжало.
Итого – у меня есть своя AS со своей сетью IPv6-адресов и два выхода в мир через BGP. С приоритетами куда через какой канал роутить я ещё не игрался. Это мне ещё предстоит сделать :)
Успел уже пособрать на свой шлюз IPv6-сети друзей-знакомых чтобы им до меня было быстрее и мне до них. Они пока не созрели до своих собственных сетей – им и не надо. Если кому хочется получить /64 или /56 быстрого IPv6-интернета – стучитесь в джаббер antmix на stopicq.ru или в почту – mikhail на antmix.pp.ru. А сам сети свои я растянул по организациям, которые я обслуживаю. Пора уже везде IPv6 вводить в полный рост. Лучше тихо спокойно понаступать на грабли, чем делать это в авральном режиме.

Ну и конечно немного конфигов.

~# cat /etc/bird6.conf
router id x.x.x.x;
protocol kernel {
persist; # Don't remove routes on bird shutdown
scan time 20; # Scan kernel routing table every 20 seconds
export all; # Default is export none
}
protocol device {
scan time 10; # Scan interfaces every 10 seconds
}
protocol static {
route 2001:67c:WWW::/48 reject;
}
protocol bgp {
description "COMSTAR IPv6";
local as YYY;
neighbor 2a02:28:XXX:2::2a:1 as ZZZ;
export filter {
if net = 2001:67c:WWW::/48 then accept;
else reject;
};
import all;
}

protocol bgp {
description "Hurricane Electrics IPv6";
local as YYY;
neighbor 2001:470:DDD:12a::1 as BBB;
export filter {

if bgp_path ~ [= YYY =] then
bgp_path.prepend(YYY);
if net = 2001:67c:WWW::/48 then accept;
else reject;
};

import all;
}

Кусок /etc/network/interfaces
auto he-ipv6
iface he-ipv6 inet6 v4tunnel
address 2001:470:DDD:12a::2
netmask 64
endpoint x.x.x.x
local y.y.y.y
ttl 64
mtu 1400

auto comstar6
iface comstar6 inet manual
up ip tun add comstar6 mode gre remote z.z.z.z local y.y.y.y; ip l s comstar6 up; ip a a 2a02:28:XXX:2::2a:2/112 dev comstar6;
down ip l s comstar6 down; ip tun del comstar6

А для тех, кто по прежнему свято верит что IPv6 тормозной и сейчас его использовать невозможно – тест скорости:

| опубликовано: Мар 29, 22:27