Введение
В этой лабораторной работе вы научитесь настраивать туннель IPv4-to-IPv6 6to4 в среде Linux. Это практическое упражнение проведет вас через процесс включения подключения IPv6 поверх существующей сети IPv4, что является ключевым механизмом перехода для сетевых администраторов. Вы будете использовать стандартные инструменты командной строки Linux для создания и проверки функционального туннеля с нуля.
Следуя пошаговому процессу, вы сначала подготовите концептуальный публичный IPv4-адрес для симуляции реального сценария. Затем вы создадите интерфейс туннеля SIT (Simple Internet Transition), назначите ему IPv6-адрес в формате 6to4 и добавите маршрут IPv6 по умолчанию через публичный ретранслятор 6to4. В завершение лабораторной работы вы проверите сквозное подключение IPv6 через недавно настроенный туннель с помощью команды ping6.
Подготовка к туннелированию с использованием концептуального публичного IPv4-адреса
На этом этапе вы узнаете об основном требовании для туннелирования 6to4: публичном IPv4-адресе. Мы рассмотрим, как определить IP-адрес вашей системы и почему мы будем использовать специальный, концептуальный адрес для этого лабораторного упражнения.
Туннелирование 6to4 — это механизм перехода, который инкапсулирует пакеты IPv6 внутри пакетов IPv4, позволяя им перемещаться по интернету IPv4. Чтобы это работало в реальных условиях, ваша система (конечная точка туннеля) должна иметь публичный IPv4-адрес, чтобы другие устройства в интернете могли отправлять трафик обратно на нее. В типичной лабораторной или домашней среде ваш компьютер часто находится за маршрутизатором, использующим трансляцию сетевых адресов (NAT), и имеет частный IPv4-адрес, который недоступен из публичного интернета.
Сначала давайте проверим фактический IPv4-адрес, назначенный вашему сетевому интерфейсу в этой лабораторной среде. Вы можете сделать это, используя команду ip a в сочетании с grep для фильтрации IPv4-адресов.
Выполните следующую команду в вашем терминале:
ip a | grep inet
Вы увидите вывод, похожий на следующий, перечисляющий IPv4- и IPv6-адреса в вашей системе. Обратите внимание, что IPv4-адреса являются частными, а не публичными.
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 172.16.50.33/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
inet6 fe80::216:3eff:fe01:236f/64 scope link
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
Как вы можете видеть, перечисленные адреса являются частными (например, 172.16.50.33) или адресами обратной петли (127.0.0.1). Они не могут быть использованы в качестве публичной конечной точки для туннеля 6to4. Чтобы смоделировать реальную настройку, мы будем использовать концептуальный публичный IPv4-адрес. Для этой лабораторной работы мы будем использовать 192.0.2.1. Этот адрес является частью блока, специально зарезервированного для документации и примеров (RFC 5737), что гарантирует его несовпадение с какими-либо реальными публичными IP-адресами. Все последующие шаги будут использовать этот адрес-заполнитель для построения конфигурации нашего туннеля.
Создание интерфейса туннеля SIT с помощью команды ip tunnel
На этом этапе вы создадите виртуальный интерфейс туннеля, который послужит основой для нашего туннеля 6to4. Мы будем использовать команду ip — мощную утилиту в Linux для сетевой конфигурации.
Команда ip tunnel используется для создания, управления и удаления интерфейсов туннелей. Для 6to4 нам нужен определенный тип туннеля под названием sit, что означает "Simple Internet Transition" (Простой переход в Интернет). Этот режим инкапсулирует пакеты IPv6 непосредственно внутри пакетов IPv4, что является основным механизмом 6to4.
Теперь давайте создадим интерфейс туннеля с именем tun6to4. Мы настроим его, используя концептуальный публичный IPv4-адрес 192.0.2.1, который мы определили на предыдущем шаге.
Выполните следующую команду в вашем терминале. Вам потребуются права sudo, поскольку создание сетевых интерфейсов является привилегированной операцией.
sudo ip tunnel add tun6to4 mode sit local 192.0.2.1 remote any
Разберем эту команду:
sudo ip tunnel add tun6to4: Эта часть указывает системе добавить новый интерфейс туннеля с именемtun6to4.mode sit: Это указывает режим инкапсуляции.sit— это правильный режим для туннелирования 6to4.local 192.0.2.1: Это устанавливает исходный IPv4-адрес пакетов туннеля. Это "локальная" конечная точка нашего туннеля, которую мы симулируем с помощью нашего концептуального публичного IP-адреса.remote any: Это ключевая часть механизма 6to4. Она сообщает системе, что туннель может подключаться к любой удаленной конечной точке. На практике это означает, что трафик будет отправляться на известный "anycast" адрес ретранслятора 6to4, который затем перенаправляет трафик в интернет IPv6.
После выполнения команды вы можете проверить, был ли создан интерфейс туннеля. Используйте команду ip tunnel show:
ip tunnel show
Вывод должен подтвердить создание и конфигурацию вашего нового интерфейса tun6to4. Вы также можете увидеть интерфейс sit0 по умолчанию, который можно игнорировать для этой лабораторной работы.
sit0: ipv6/ip remote any local any ttl 64 nopmtudisc 6rd-prefix 2002::/16
tun6to4: ipv6/ip remote any local 192.0.2.1 ttl inherit 6rd-prefix 2002::/16
Вы также можете увидеть новый интерфейс, снова выполнив ip a, но ему еще не будут назначены никакие IP-адреса. Мы займемся этим на следующем шаге.
Назначение IPv6-адреса в формате 6to4 интерфейсу туннеля
На этом этапе вы настроите только что созданный интерфейс tun6to4, назначив ему специальный IPv6-адрес в формате 6to4. Этот адрес не является произвольным; он напрямую выводится из публичного IPv4-адреса конечной точки туннеля.
Схема адресации 6to4 разработана для автоматизации. Она использует выделенный префикс IPv6, 2002::/16. Следующие за этим префиксом 32 бита заполняются публичным IPv4-адресом, преобразованным в шестнадцатеричный формат. Это создает уникальный префикс IPv6 /48 для любой организации, имеющей хотя бы один публичный IPv4-адрес.
Рассчитаем шестнадцатеричное представление для нашего концептуального IPv4-адреса 192.0.2.1:
192в десятичной системе равноc0в шестнадцатеричной.0в десятичной системе равно00в шестнадцатеричной.2в десятичной системе равно02в шестнадцатеричной.1в десятичной системе равно01в шестнадцатеричной.
Объединяя их, шестнадцатеричное представление 192.0.2.1 будет c000:0201. Следовательно, наш уникальный префикс 6to4 — 2002:c000:0201::/48.
Теперь мы назначим конкретный IPv6-адрес из этого префикса нашему интерфейсу tun6to4. Мы будем использовать первый адрес в первой подсети, 2002:c000:0201::1/64. Выполните следующую команду для назначения адреса:
sudo ip -6 addr add 2002:c000:0201::1/64 dev tun6to4
После создания интерфейса и назначения адреса интерфейс по умолчанию все еще находится в состоянии "DOWN" (неактивен). Вам нужно перевести его в состояние "UP" (активен), чтобы сделать его работоспособным. Для этого используйте команду ip link set:
sudo ip link set tun6to4 up
Наконец, давайте проверим, что интерфейс активен и имеет правильный IPv6-адрес. Используйте команду ip a и найдите интерфейс tun6to4:
ip a
Вы должны увидеть вывод, включающий интерфейс tun6to4, теперь активный и настроенный с IPv6-адресом. Обратите внимание, что номер интерфейса (например, 5:) может отличаться, и вы можете увидеть другие интерфейсы, такие как docker0 или sit0.
5: tun6to4@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
link/sit 192.0.2.1 brd 0.0.0.0
inet6 ::192.0.2.1/96 scope global
valid_lft forever preferred_lft forever
inet6 2002:c000:201::1/64 scope global
valid_lft forever preferred_lft forever
Обратите внимание, что в дополнение к настроенному вами адресу 2002:..., система автоматически добавила IPv4-совместимый IPv6-адрес (::192.0.2.1/96). Это ожидаемое поведение.
Добавление маршрута IPv6 по умолчанию через адрес ретранслятора 6to4
На этом этапе вы настроите последний элемент для исходящей связи: маршрут по умолчанию. Простого наличия IP-адреса на интерфейсе tun6to4 недостаточно; ваша система должна знать, куда отправлять трафик IPv6, предназначенный для глобального интернета. Мы направим его на специальный ретранслятор 6to4.
6to4 полагается на публичные ретрансляторы, которые соединяют мир 6to4 с нативным интернетом IPv6. Эти ретрансляторы прослушивают инкапсулированный трафик на специальном, общеизвестном anycast IPv4-адресе: 192.88.99.1. Когда наша система отправляет пакет IPv6 на внешний адрес назначения, она инкапсулирует его в пакет IPv4 и отправляет на этот адрес ретранслятора. Затем ретранслятор распаковывает пакет и перенаправляет его в сеть IPv6.
Чтобы настроить это, мы добавим маршрут по умолчанию IPv6 с помощью команды ip -6 route add. Выполните следующее в вашем терминале:
sudo ip -6 route add default via ::192.88.99.1 dev tun6to4
Проанализируем команду:
default: Это указывает, что маршрут является "шлюзом по умолчанию" для всего трафика IPv6, который не соответствует более специфичному маршруту в таблице маршрутизации.via ::192.88.99.1: Это устанавливает следующий хоп (шлюз). Синтаксис::192.88.99.1— это специальный способ представления IPv4-адреса в контексте IPv6, который сообщает системе отправить трафик на IPv4-адрес192.88.99.1.dev tun6to4: Это явно указывает системе использовать наш интерфейсtun6to4для этого маршрута.
Теперь вы можете проверить, была ли таблица маршрутизации IPv6 правильно обновлена. Выполните следующую команду:
ip -6 route show
Вывод теперь должен включать маршрут по умолчанию, указывающий на ретранслятор 6to4 через ваш интерфейс туннеля. Точный вывод может незначительно отличаться, но ключевым является строка default.
::1 dev lo proto kernel metric 256 pref medium
::/96 dev tun6to4 proto kernel metric 256 pref medium
2002:c000:201::/64 dev tun6to4 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via ::192.88.99.1 dev tun6to4 metric 1024 pref medium
С этим маршрутом ваша система теперь полностью настроена для отправки трафика IPv6 через симулированный туннель 6to4.
Тестирование IPv6-подключения через туннель с помощью ping6
На этом этапе вы попытаетесь протестировать ваш недавно настроенный туннель 6to4, отправив трафик IPv6 на публичный узел назначения. Мы будем использовать команду ping6, которая является эквивалентом знакомой утилиты ping для IPv6.
Цель состоит в том, чтобы увидеть, сможет ли наша система отправить пакет IPv6, инкапсулировать его в пакет IPv4, отправить на ретранслятор 6to4, а затем перенаправить его к конечному месту назначения. Мы будем использовать флаг -I с ping6, чтобы указать, что трафик должен исходить с нашего интерфейса tun6to4.
Попробуем пропинговать известный узел с поддержкой IPv6, например ipv6.google.com. Флаг -c 4 ограничит команду отправкой только 4 пакетов.
Выполните следующую команду в вашем терминале:
ping6 -c 4 -I tun6to4 ipv6.google.com
Ожидаемый результат и объяснение
Вы увидите, что команда завершится ошибкой, с выводом, указывающим на недоступность назначения. Это ожидаемый результат, и эта часть лабораторной работы предназначена только для демонстрационных целей.
PING ipv6.google.com(sfo03s32-in-x0e.1e100.net (2607:f8b0:4005:814::200e)) from 2002:c000:201::1 tun6to4: 56 data bytes
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=1 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=2 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=3 Destination unreachable: Address unreachable
From iZrj9hhbt3mi4boxowaqhxZ (2002:c000:201::1) icmp_seq=4 Destination unreachable: Address unreachable
--- ipv6.google.com ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3253ms
Эта ошибка не означает, что вы что-то настроили неправильно. Вы успешно настроили клиентскую часть туннеля 6to4. Ошибка ожидается в этой лабораторной среде по двум ключевым причинам:
- Лабораторная среда: Виртуальная машина LabEx не имеет реального публичного IPv4-адреса. Мы использовали концептуальный адрес (
192.0.2.1) для конфигурации. Ретранслятор 6to4 не может отправить ответ на этот немаршрутизируемый адрес. - Устаревшая инфраструктура: Публичная инфраструктура ретрансляторов 6to4 (по anycast-адресу
192.88.99.1) в значительной степени устарела и больше не поддерживается в современном интернете. Сетевые операторы перешли на более надежные и безопасные механизмы перехода на IPv6, такие как нативный IPv6, 6rd и DS-Lite.
Основная цель этой лабораторной работы — научить вас концепции и синтаксису конфигурации исторически значимого механизма туннелирования IPv4 в IPv6, что является темой, охватываемой в сертификациях по сетям, таких как CompTIA Network+.
Резюме
В этой лабораторной работе вы научились настраивать туннель 6to4 для передачи IPv4 в IPv6 в Linux. Вы начали с понимания основного требования для туннелирования 6to4: публичного IPv4-адреса. Определив частный IP-адрес в лабораторной среде, вы приняли концептуальный публичный IPv4-адрес (192.0.2.1) для симуляции реального сценария. Затем вы использовали команду ip tunnel для создания интерфейса туннеля SIT (Simple Internet Transition), который служит конечной точкой для инкапсуляции пакетов IPv6 в IPv4.
После создания интерфейса туннеля вы сконструировали и назначили IPv6-адрес в формате 6to4, который программно выводится из концептуального публичного IPv4-адреса. Чтобы направить трафик IPv6 через туннель, вы добавили маршрут по умолчанию IPv6, указывающий на anycast-адрес ретранслятора 6to4. Наконец, вы протестировали конфигурацию с помощью команды ping6. Тест ожидаемо завершился неудачей, что подтвердило: хотя ваша локальная настройка была правильной, публичная инфраструктура ретрансляторов 6to4 больше не является широко доступной, демонстрируя ключевую причину, по которой эта технология теперь считается исторической.



