Настройте сервер туннеля 6in4

Вопрос или проблема

Я хотел бы настроить сервер туннеля IPv6 в IPv4 SIT. Я изучил вики-страницу Ubuntu по IPv6, но всё направлено на подключение к туннелю в качестве клиента, а не на его хостинг. Я хотел бы использовать 6in4, так как это довольно просто и универсально, и, похоже, оно без проблем находит большинство домашних маршрутизаторов/брандмауэров.

Это будет в основном использоваться нашей технической поддержкой для доступа к IPv6 из дома по DSL/кабельным подключением, которые не поддерживают его изначально. Причины, по которым я хотел бы запустить это сам, двоякие:

  1. Я нахожу туннели, такие как Hurricane Electric, довольно медленными и иногда ненадежными.
  2. Мне не нравится идея, что наш трафик проходит через сеть 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, так как это наиболее универсальный и гибкий вариант для настройки туннеля.

Прежде чем начать

  1. Подключение к интернету: Убедитесь, что сервер, на котором вы будете настраивать туннель, имеет доступ к интернету по IPv4.
  2. Проверка необходимых пакетов: Установите необходимые пакеты для работы с туннелями IPv6. Возможно, вам потребуется установить iproute2, если он еще не установлен.
sudo apt update
sudo apt install iproute2

Настройка сервера туннеля 6in4

  1. Создание туннеля: Используйте команду 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
  1. Настройка маршрутизации: Важно настроить маршруты, позволяющие клиентам получать доступ к вашей внутренней IPv6-сети. Например, если ваши клиенты получают IPv6-адреса из указанного вами диапазона, вы можете сделать следующее:
sudo ip -6 route add 2001:db8:a001::/48 dev tun-6in4

Конфигурация на стороне клиента

Для клиентов, которые будут использовать этот туннель, выполните аналогичные действия:

  1. Создание туннеля на клиенте:
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
  1. Настройка маршрута:
sudo ip -6 route add ::/0 dev tun-6in4

Учет особенностей

Обратите внимание на следующие моменты:

  • IPv6-адресация: Убедитесь, что используемые вами IPv6-адреса соответствуют вашей сети и не конфликтуют с уже существующими адресами.
  • Безопасность: Рассмотрите правила брандмауэра для обеспечения безопасности туннеля, особенно если это публичный сервер. Настройте iptables на вашем Linux сервере, чтобы закрыть ненужные порты и разрешить только трафик через туннель.

Заключение

После выполнения этих шагов вы сможете настроить сервер туннеля 6in4 и обеспечить доступ вашей команде к IPv6. Используя собственный туннель, вы получите стабильный и безопасный доступ к вашим ресурсам IPv6 без необходимости полагаться на сторонние провайдеры, такие как Hurricane Electric.

Настройки, описанные выше, являются базовыми и могут быть адаптированы под ваши специфические требования. Обязательно протестируйте конфигурацию и следите за производительностью, особенно при увеличении числа пользователей.

Оцените материал
Добавить комментарий

Капча загружается...