Введение
В этой лабораторной работе вы изучите основные навыки настройки и проверки IPv6-адресов в системе Linux. Используя современные инструменты командной строки, вы получите практический опыт выполнения основных задач, связанных с управлением сетями IPv6, от инспекции до статической настройки и тестирования подключения. Эта лабораторная работа сосредоточена на использовании команды ip из пакета iproute2 и утилиты ping6, которые являются стандартными для современных дистрибутивов Linux, таких как Ubuntu 22.04.
Сначала вы используете команду ip a для обнаружения автоматически настроенных IPv6-адресов loopback и link-local на ваших сетевых интерфейсах. Затем вы вручную назначите статический глобальный unicast-адрес интерфейсу. Наконец, вы используете команду ping6 для проверки сетевого подключения к адресам loopback, link-local и недавно настроенному глобальному unicast-адресу, подтверждая, что ваша настройка IPv6 работает правильно.
Обнаружение Link-Local и Loopback адресов с помощью ip a
На этом этапе вы научитесь обнаруживать IPv6-адреса, которые автоматически настраиваются в вашей системе. Современные дистрибутивы Linux, включая Ubuntu 22.04, имеют включенный IPv6 по умолчанию. Мы будем использовать команду ip, которая является современным и рекомендуемым инструментом для настройки и инспекции сети в Linux.
Сначала давайте проверим сетевые интерфейсы и назначенные им адреса. Команда ip a является сокращением от ip address.
- Откройте терминал. Ваш путь по умолчанию:
~/project. - Выполните команду
ip aдля вывода списка всех сетевых интерфейсов и их адресов.
ip a
Вы увидите вывод, похожий на следующий. Точные имена интерфейсов (например, eth0) и адреса могут отличаться, но структура будет одинаковой.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:16:3e:00:54:72 brd ff:ff:ff:ff:ff:ff
altname enp0s5
altname ens5
inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
valid_lft 1892159972sec preferred_lft 1892159972sec
inet6 fe80::216:3eff:fe00:5472/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:89:01:6f:fc brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
Теперь давайте проанализируем вывод, чтобы определить ключевые IPv6-адреса:
Loopback Address (Адрес обратной петли): Посмотрите на интерфейс с именем
lo. Это виртуальный интерфейс обратной петли, используемый для тестирования сетевого стека на локальной машине. Вы увидите IPv6-адрес::1/128. Это IPv6-адрес обратной петли, эквивалентный127.0.0.1в IPv4.scope hostуказывает, что он действителен только в пределах самого хоста.Link-Local Address (Локальный адрес канала): Посмотрите на ваш основной сетевой интерфейс (например,
eth0,enp0s3). Вы найдете адресinet6, который начинается сfe80::. Это ваш link-local адрес. Он автоматически назначается каждому интерфейсу с поддержкой IPv6 и используется для связи только в локальном сетевом сегменте (например, в вашей локальной сети Ethernet).scope linkподтверждает, что этот адрес действителен только в локальном канале и не маршрутизируется в Интернете.
Теперь вы успешно определили два основных типа автоматически настроенных IPv6-адресов в вашей системе.
Добавление статического глобального Unicast адреса с помощью ip addr add
На этом этапе вы вручную настроите Global Unicast Address (GUA) на вашем сетевом интерфейсе. В то время как адреса link-local используются для связи в локальном сетевом сегменте, GUA являются эквивалентом публичных IPv4-адресов в IPv6. Они уникальны в глобальном масштабе и маршрутизируются в Интернете.
Для этой лабораторной работы мы будем использовать адрес из блока 2001:db8::/32, который специально зарезервирован для документации и примеров. Это гарантирует, что мы случайно не используем реальный, используемый в Интернете адрес.
Мы добавим статический GUA
2001:db8:acad::1/64к интерфейсуeth0. Префикс/64указывает длину префикса, которая является стандартной для большинства локальных сетей (LAN). Нам нуженsudo, потому что изменение сетевых интерфейсов требует административных привилегий.sudo ip -6 addr add 2001:db8:acad::1/64 dev eth0- Примечание: Это изменение является временным и будет отменено при перезагрузке системы. Для постоянной настройки в Ubuntu обычно редактируют файлы в
/etc/netplan/, но это выходит за рамки данной лабораторной работы.
- Примечание: Это изменение является временным и будет отменено при перезагрузке системы. Для постоянной настройки в Ubuntu обычно редактируют файлы в
Теперь проверьте, был ли новый GUA успешно назначен. Снова выполните команду
ip a, чтобы просмотреть ваши сетевые интерфейсы.ip aТеперь вы должны увидеть новый адрес, перечисленный под интерфейсом
eth0. Обратите внимание наscope global, который указывает, что это маршрутизируемый адрес.1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 ... 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:3e:00:54:72 brd ff:ff:ff:ff:ff:ff altname enp0s5 altname ens5 inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0 valid_lft 1892159959sec preferred_lft 1892159959sec inet6 2001:db8:acad::1/64 scope global valid_lft forever preferred_lft forever inet6 fe80::216:3eff:fe00:5472/64 scope link valid_lft forever preferred_lft forever
Вы успешно назначили статический IPv6 GUA вашему сетевому интерфейсу. На следующем шаге мы проверим подключение к этому новому адресу.
Тестирование подключения к Loopback и GUA с помощью ping6
На этом этапе вы будете использовать утилиту ping6 для тестирования подключения по IPv6. Эта команда является эквивалентом знакомой команды ping для IPv6 и имеет решающее значение для диагностики сети. Мы проверим, правильно ли работает ваш локальный стек IPv6 и отвечает ли Global Unicast Address (GUA), который вы настроили на предыдущем шаге.
Сначала протестируем локальный стек IPv6, отправив ping на адрес обратной петли.
Отправьте ping на IPv6-адрес обратной петли
::1. Мы будем использовать опцию-c 3, чтобы отправить только 3 пакета вместо бесконечного пинга.ping6 -c 3 ::1Успешный тест покажет, что пакеты отправляются и принимаются с 0% потерь пакетов, подтверждая работоспособность вашего локального стека IPv6.
PING ::1(::1) 56 data bytes 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.026 ms 64 bytes from ::1: icmp_seq=2 ttl=64 time=0.021 ms 64 bytes from ::1: icmp_seq=3 ttl=64 time=0.035 ms --- ::1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2030ms rtt min/avg/max/mdev = 0.021/0.027/0.035/0.005 ms
Далее протестируем GUA, который вы вручную назначили интерфейсу eth0. Это подтвердит, что интерфейс правильно настроен и прослушивает этот адрес.
Отправьте ping на GUA
2001:db8:acad::1, который вы добавили на предыдущем шаге.ping6 -c 3 2001:db8:acad::1Подобно тесту обратной петли, успешный результат покажет ответы от адреса, подтверждая, что он правильно назначен и доступен на хосте.
PING 2001:db8:acad::1(2001:db8:acad::1) 56 data bytes 64 bytes from 2001:db8:acad::1: icmp_seq=1 ttl=64 time=0.028 ms 64 bytes from 2001:db8:acad::1: icmp_seq=2 ttl=64 time=0.037 ms 64 bytes from 2001:db8:acad::1: icmp_seq=3 ttl=64 time=0.038 ms --- 2001:db8:acad::1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2034ms rtt min/avg/max/mdev = 0.028/0.034/0.038/0.004 ms
Теперь вы успешно проверили подключение как к обратной петле, так и к вашему вручную настроенному Global Unicast Address.
Тестирование подключения по Link-Local адресу с помощью ping6
На этом этапе вы научитесь тестировать подключение к link-local адресу. Как вы уже выяснили, эти адреса начинаются с fe80:: и действительны только в одном сетевом сегменте (на "канале" или "link"). Поскольку они не являются глобально уникальными, вам необходимо предоставить дополнительную информацию команде ping6, чтобы указать, какой сетевой интерфейс следует использовать для отправки ping. Это известно как "индекс зоны" или "scope ID".
Сначала вам нужно снова найти link-local адрес вашего интерфейса eth0.
Выполните команду
ip aи определите адресinet6, начинающийся сfe80::, для интерфейсаeth0.ip a show eth0Вывод будет похож на этот. Вам нужно скопировать адрес (например,
fe80::xxxx:xxff:fexx:xxxx).2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:3e:00:54:72 brd ff:ff:ff:ff:ff:ff altname enp0s5 altname ens5 inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0 valid_lft 1892159869sec preferred_lft 1892159869sec inet6 2001:db8:acad::1/64 scope global valid_lft forever preferred_lft forever inet6 fe80::216:3eff:fe00:5472/64 scope link valid_lft forever preferred_lft foreverТеперь отправьте ping на этот link-local адрес. Чтобы указать индекс зоны, добавьте
%, за которым следует имя интерфейса (eth0), к адресу. ЗаменитеYOUR_LINK_LOCAL_ADDRESSна фактический адрес, который вы только что нашли.ping6 -c 3 YOUR_LINK_LOCAL_ADDRESS%eth0Например, если ваш адрес был
fe80::216:3eff:fe00:5472, команда будет выглядеть так:ping6 -c 3 fe80::216:3eff:fe00:5472%eth0Успешный ping подтверждает, что интерфейс отвечает на свой link-local адрес.
PING fe80::216:3eff:fe00:5472%eth0(fe80::216:3eff:fe00:5472%eth0) 56 data bytes 64 bytes from fe80::216:3eff:fe00:5472%eth0: icmp_seq=1 ttl=64 time=0.031 ms 64 bytes from fe80::216:3eff:fe00:5472%eth0: icmp_seq=2 ttl=64 time=0.030 ms 64 bytes from fe80::216:3eff:fe00:5472%eth0: icmp_seq=3 ttl=64 time=0.030 ms --- fe80::216:3eff:fe00:5472%eth0 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2028ms rtt min/avg/max/mdev = 0.030/0.030/0.031/0.000 msЕсли вы забудете часть
%eth0, команда завершится ошибкой, потому что система не будет знать, какой интерфейс использовать для назначения link-local. Этот специальный синтаксис является ключевой концепцией при работе с link-local IPv6-адресами.
Резюме
В этой лабораторной работе вы научились выполнять основные задачи по настройке и проверке IPv6 на системе Linux с использованием набора команд ip. Вы начали с использования ip a для проверки сетевых интерфейсов, успешно определив автоматически назначенный IPv6-адрес обратной петли (::1) на интерфейсе lo и link-local адрес (с префиксом fe80::) на основном сетевом интерфейсе. Затем вы приступили к ручной настройке статического Global Unicast Address (GUA) на основном интерфейсе с помощью команды ip addr add.
Для проверки конфигурации вы использовали утилиту ping6. Вы подтвердили работоспособность локального сетевого стека, отправив ping на адрес обратной петли, и проверили, что статический GUA был правильно назначен и доступен. Наконец, вы узнали о специфическом требовании для тестирования link-local адресов, которое включает использование синтаксиса %interface с ping6 для явного указания индекса зоны (исходящего интерфейса), что является необходимым шагом из-за link-области видимости этих адресов.



