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

IPv6 в windows

Настраиваем radvd на linux на шлюзе.
interface lan0
{
AdvSendAdvert on;
prefix 2001:470:90ba:aaaa::/64
{
AdvOnLink on;
AdvAutonomous on;
};
RDNSS 2001:470:90ba:aaaa::1
{
};
}
До DHCPv6 я ещё не добрался. К сожалению винда не умеет брать данные о dns-сервере от radvd, зато это умеет делать linux с помощью rdnssd.

На фаерволе делаем вот так:
# Generated by ip6tables-save v1.4.2 on Sun Mar 20 22:46:55 2011
*filter
:INPUT ACCEPT [142593:105839495]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [126872:67566508]
:WHITE - [0:0]
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i local_iface -o local_iface -j ACCEPT
-A FORWARD -i local_iface -o external_iface -j ACCEPT
-A FORWARD -j WHITE
-A FORWARD -j LOG --log-prefix " IPv6 blocked forward "
-A FORWARD -j REJECT --reject-with icmp6-port-unreachable
-A WHITE -d server-host -j ACCEPT
-A WHITE -s trusted-host -j ACCEPT
COMMIT
# Completed on Sun Mar 20 22:46:55 2011
server-host – хост, куда могут подключаться из инета все
trusted-host – доверенный внешний хост, который может подключаться ко всем

Включаем IPv6 на windows (пробовал на win2k3 и на winxp, на Win7 и vista включено поумолчанию)
ipv6 install
или
netsh interface ipv6 install

Выключаем privacy (временный ренерируемый адрес) и teredo
netsh interface ipv6 set privacy disabled
netsh interface teredo set state disabled
netsh interface ipv6 set teredo disabled

Вешаем адрес на интерфейс и говорим что адрес этот постоянный
netsh interface ipv6 add address interface="Local Area Connection" address=2001:470:90ba:aaaa::5 store=persistent

Указываем дефолтный шлюз
netsh interface ipv6 add route ::/0 interface="Local Area Connection" 2001:470:90ba:aaaa::1 store=persistent

Ну и маленький бонус – Win2k3 не умеет отдавать rdp по ipv6. portproxy нам поможет решить эту проблему.
netsh interface portproxy add v6tov4 listenport=3389 connectaddress=127.0.0.1 connectport=3389

Вот таким несложным методом я включил поддержку ipv6 в одной из обслуживаемых мной организаций. Теперь мне не надо перед подключением к терминальному серверу запускать ssh с пробросом портов. Да и вообще свободное IPv4 пространство у IANA закончилось и пора бы уже вводить Ipv6 повсеместно. Ну и само-собой ipv6 дома у меня уже несколько лет как.

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

<--- Предыдущая страница Следующая страница --->