Вопрос или проблема
Я хотел бы настроить сервер туннеля IPv6 в IPv4 SIT. Я изучил вики-страницу Ubuntu по IPv6, но всё направлено на подключение к туннелю в качестве клиента, а не на его хостинг. Я хотел бы использовать 6in4, так как это довольно просто и универсально, и, похоже, оно без проблем находит большинство домашних маршрутизаторов/брандмауэров.
Это будет в основном использоваться нашей технической поддержкой для доступа к IPv6 из дома по DSL/кабельным подключением, которые не поддерживают его изначально. Причины, по которым я хотел бы запустить это сам, двоякие:
- Я нахожу туннели, такие как Hurricane Electric, довольно медленными и иногда ненадежными.
- Мне не нравится идея, что наш трафик проходит через сеть HE. У нас есть собственная основная транзитная сеть и выделение IPv6 от RIPE, так что мы можем воспользоваться этим!
Этим будут пользоваться 5-10 пользователей одновременно.
Оборудование, которое у меня есть в распоряжении и которое может быть использовано в качестве хоста:
- Cisco ISRs
- Cisco ASAs
- Juniper MXs
- Серверы Linux/Windows (идеально — Ubuntu)
Спасибо заранее.
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
Juniper 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) с устройствами tap.
Предоставление сотрудникам провайдера интернет-услуг домашнего подключения к 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, может помочь…
Ответ или решение
Настройка сервера туннеля 6in4
Для настройки сервера туннеля IPv6-в-IPv4 (6in4) вам понадобятся некоторые основы сетевой конфигурации, а также знания об используемом оборудовании. Ниже представим подробные шаги и рекомендации по этой настройке.
Оборудование и технологии
Учитывая ваше оборудование (Cisco ISRs, Cisco ASAs, Juniper MX, Linux/Windows серверы с предпочтением к Ubuntu), остановимся на примере реализации с использованием Linux, так как это наиболее универсальный и гибкий вариант для настройки туннеля.
Прежде чем начать
- Подключение к интернету: Убедитесь, что сервер, на котором вы будете настраивать туннель, имеет доступ к интернету по IPv4.
- Проверка необходимых пакетов: Установите необходимые пакеты для работы с туннелями IPv6. Возможно, вам потребуется установить
iproute2
, если он еще не установлен.
sudo apt update
sudo apt install iproute2
Настройка сервера туннеля 6in4
- Создание туннеля: Используйте команду
ip
для создания и настройки туннеля. Замените<client ipv4 addr>
на IPv4-адрес клиента, который будет подключаться к вашему туннелю, а<local ipv4>
на локальный IPv4-адрес вашего сервера.
sudo ip tunnel add tun-6in4 mode sit remote <client ipv4 addr> local <local ipv4>
sudo ip link set tun-6in4 up
sudo ip addr add 2001:db8::1/64 dev tun-6in4
- Настройка маршрутизации: Важно настроить маршруты, позволяющие клиентам получать доступ к вашей внутренней IPv6-сети. Например, если ваши клиенты получают IPv6-адреса из указанного вами диапазона, вы можете сделать следующее:
sudo ip -6 route add 2001:db8:a001::/48 dev tun-6in4
Конфигурация на стороне клиента
Для клиентов, которые будут использовать этот туннель, выполните аналогичные действия:
- Создание туннеля на клиенте:
sudo ip tunnel add tun-6in4 mode sit remote <server ipv4 addr> local <client ipv4>
sudo ip link set tun-6in4 up
sudo ip addr add 2001:db8::2/64 dev tun-6in4
- Настройка маршрута:
sudo ip -6 route add ::/0 dev tun-6in4
Учет особенностей
Обратите внимание на следующие моменты:
- IPv6-адресация: Убедитесь, что используемые вами IPv6-адреса соответствуют вашей сети и не конфликтуют с уже существующими адресами.
- Безопасность: Рассмотрите правила брандмауэра для обеспечения безопасности туннеля, особенно если это публичный сервер. Настройте
iptables
на вашем Linux сервере, чтобы закрыть ненужные порты и разрешить только трафик через туннель.
Заключение
После выполнения этих шагов вы сможете настроить сервер туннеля 6in4 и обеспечить доступ вашей команде к IPv6. Используя собственный туннель, вы получите стабильный и безопасный доступ к вашим ресурсам IPv6 без необходимости полагаться на сторонние провайдеры, такие как Hurricane Electric.
Настройки, описанные выше, являются базовыми и могут быть адаптированы под ваши специфические требования. Обязательно протестируйте конфигурацию и следите за производительностью, особенно при увеличении числа пользователей.