Настройте 6in4 туннельный сервер
Я хотел бы настроить туннельный сервер SIT IPv6-in-IPv4. Я пролистал вики-страницу Ubuntu IPv6, но все направлено на подключение к туннелю в качестве клиента, а не на его размещение. Я хотел бы использовать 6in4, поскольку он довольно прост / универсален и, кажется, согласовывает большинство домашних маршрутизаторов / брандмауэров без проблем.
Это будет в основном использоваться нашими сотрудниками-сисадминами для доступа к IPv6 из дома по DSL/ кабельным соединениям, которые изначально не поддерживают его. Причина, по которой я хотел бы запустить это самостоятельно, двояка:
- Я считаю, что подобные ураганные электрические туннели довольно медленные и иногда ненадежные.
- Мне не нравится идея прохождения нашего трафика через сеть HE. У нас есть собственная базовая транзитная сеть и выделение IPv6 от RIPE, поэтому мы также можем использовать ее!
Это будет использоваться 5-10 пользователями одновременно.
В моем распоряжении есть оборудование, которое можно использовать в качестве хозяина:
- Cisco ISR
- Cisco ASA
- Juniper MXs
- Серверы Linux/Windows (в идеале это будет Ubuntu)
Заранее спасибо.
2 ответа
Если я не ошибаюсь, SIT симметричен: то же самое делается с обеих сторон.
Конфигурация должна быть довольно простой:
Cisco IOS:
interface Tunnel0
description 6in4 to <client>
no ip address
ipv6 enable
ipv6 address 2001:db8:::1/64
tunnel source <local ipv4>
tunnel destination <client ipv4 addr>
tunnel mode ipv6ip
Можжевельник JunOS
interfaces {
ip-0/1/0 {
unit 0 {
tunnel {
source <local ipv4>;
destination <client ipv4 addr>;
}
family inet6 {
address 2001:db8::1/64;
}
}
}
}
Linux iproute2:
ip tunnel add tun-6in4 mode sit remote <client ipv4 addr> local <local ipv4>
ip link set tun-6in4 up
ip addr add 2001:db8:::1/64 dev tun-6in4
У меня нет опыта в настройке ASA, но это тоже должно быть выполнимо.
Однако у 6in4 есть несколько недостатков:
N туннелей на узловом узле для N пиров
Нет простого способа обновить одноранговый IP-адрес для динамических IP-клиентов.
Возможно, вы захотите взглянуть на технологии динамического VPN, такие как OpenVPN (решает проблему № 2, хотя устройства будут генерироваться динамически) или Tinc (решает оба), или любые другие, способные инкапсулировать Ethernet (таким образом, IPv6) с устройствами ответвления.
Предоставление сотрудникам интернет-провайдера домашнего подключения к IPv6 очень важно.
6in4 симметричен, поэтому вы устанавливаете туннель одинаково на обоих концах (образуя виртуальный "кабель" между ними). Маршрутизация затем выполняется как обычно: конечный пользователь использует туннель в качестве шлюза по умолчанию, а серверный сервер направляет префиксы вниз по соответствующему туннелю. Этот последний бит может потребовать некоторого (ручного или автоматического) перераспределения маршрутов.
На Cisco IOS redistribute static
в конфигурации протокола маршрутизации это простой способ сделать это, но вы можете отфильтровать перераспределение. Я обычно перераспределяю маршруты клиентов в BGP. Он обеспечивает чистоту IGP (например, ISIS или OSPF), что поможет скорости конвергенции вашего ядра после взлома канала или сбоя. И BGP предлагает гораздо лучшие варианты фильтрации. Например, присоединяя сообщества к перераспределенным маршрутам.
Чтобы немного расширить ответ от Petrus. Я приведу нотацию Cisco, но она будет работать в других операционных системах примерно так же.
Вы можете иметь пронумерованные и ненумерованные ссылки. Нумерованные ссылки могут облегчить отладку, но это делает ваш план адресации немного более сложным. В обоих случаях вам придется делегировать немного адресного пространства пользователю. Адреса в ссылке используются только в ссылке, и пользователю, вероятно, также нужны адреса для сетей за этой ссылкой. Так что маршрут /56
или /48
вниз по ссылке.
Начнем с ненумерованной ссылки. Создать ссылку с ipv6 enable
создавать ссылки на локальные адреса по ссылке. Примерно так на стороне сервера:
interface Tunnel1
description 6in4 to <client-1>
no ip address
ipv6 enable
tunnel source <local ipv4>
tunnel destination <client-1 ipv4 addr>
tunnel mode ipv6ip
interface Tunnel2
description 6in4 to <client-2>
no ip address
ipv6 enable
tunnel source <local ipv4>
tunnel destination <client-2 ipv4 addr>
tunnel mode ipv6ip
ipv6 route 2001:db8:a001::/48 Tunnel 1
ipv6 route 2001:db8:a002::/48 Tunnel 2
router bgp 65530
address-family ipv6
redistribute static
И на стороне "клиента":
interface Tunnel1
description 6in4 to <server>
no ip address
ipv6 enable
tunnel source <client-1 ipv4>
tunnel destination <server ipv4 addr>
tunnel mode ipv6ip
interface FastEthernet0/0
ipv6 address 2001:db8:a001:1::1/64
ipv6 route ::/0 Tunnel 1
А теперь точно так же с нумерованными ссылками. Преимущество состоит в том, что вы можете легче пропинговать другую конечную точку туннеля. Примерно так на стороне сервера:
interface Tunnel1
description 6in4 to <client-1>
no ip address
ipv6 address 2001:db8:0:a001::1/64
tunnel source <local ipv4>
tunnel destination <client-1 ipv4 addr>
tunnel mode ipv6ip
interface Tunnel2
description 6in4 to <client-2>
no ip address
ipv6 address 2001:db8:0:a002::1/64
tunnel source <local ipv4>
tunnel destination <client-2 ipv4 addr>
tunnel mode ipv6ip
ipv6 route 2001:db8:a001::/48 2001:db8:0:a001::2
ipv6 route 2001:db8:a002::/48 2001:db8:0:a002::2
router bgp 65530
address-family ipv6
redistribute static
redistribute connected
И на стороне "клиента":
interface Tunnel1
description 6in4 to <server>
no ip address
ipv6 address 2001:db8:0:a001::2/64
tunnel source <client-1 ipv4>
tunnel destination <server ipv4 addr>
tunnel mode ipv6ip
interface FastEthernet0/0
ipv6 address 2001:db8:a001:1::1/64
ipv6 route ::/0 2001:db8:0:a001::1
я выбираю 2001:db8:0:a001::/64
для двухточечной связи, связанной с делегированием 2001:db8:a001::/48
для удобства. Вы можете выбрать любой префикс, который вам нравится, но может помочь сохранение узнаваемости с помощью адресного пространства, такого большого, как IPv6...