Введение в IPv6 адреса: как пользоваться и как исследовать сеть (часть 2)

Рекомендуется начать знакомство с первой части: https://hackware.ru/?p=10338

Как открыть IPv6 в веб-браузере

Для использования IPv6 адреса в URL его достаточно поместить в квадратные скобки: https://[2604:a880:800:c1::2ae:d001]/

Если нужно указать порт, то он ставится через двоеточие снаружи квадратных скобок. Есть нужно указать страницу и параметры, то они следуют через слэш после номера порта, либо после адреса, например:

Как открыть IPv6 в cURL

Чтобы открыть IPv6 в cURL, адрес нужно поместить в квадратные скобки, примеры команд:

curl [2604:a880:800:c1::2ae:d001]
curl https://[2604:a880:800:c1::2ae:d001] -k
curl https://[2a02:6b8:a::a] -H 'Host: yandex.ru' -k

Как пинговать IPv6 адреса

Программа ping умеет работать с IPv6 адресами. Достаточно указать адрес, причём его не нужно помещать в квадратные скобки:

ping 2604:a880:800:c1::2ae:d001

Вместо IP адреса можно указать имя хоста. Но если у хоста имеется и IP и IPv6 адреса, то будет выполнен пинг IPv4 адресов. Чтобы программа выполнила пинг адреса IPv6, нужно использовать опцию -6:

ping -6 suip.biz

Онлайн сервис для пинга сайтов и IP с поддержкой IPv6: https://suip.biz/ru/?act=ping

Как узнать, к какой организации принадлежит IPv6 адрес. WHOIS адресов IPv6

Программа whois поддерживает работу с IPv6 адресом и вы можете использовать её для получения такой информации как:

  • организация, к которой приписан IPv6
  • диапазон, к которому относится IPv6 адрес
  • почтовый адрес организации, которой принадлежит IPv6
  • Autonomous system (Автономную Систему) к которой относится IPv6
  • контактные данные (телефон и email) владельца IPv6 адреса

Использование whois для получения информации об IPv6 очень простое — достаточно указать адрес (помещение его к квадратные скобки не требуется):

whois 2604:a880:800:c1::2ae:d001

Онлайн сервис whois с поддержкой IPv6: https://suip.biz/ru/?act=whois

Как в IPv6 посмотреть ARP таблицу. Показ соседей в IPv6

Для просмотра MAC адресов устройств в локальной IPv6 сети выполните команду:

ip -6 neigh show

Подробности смотрите в статье «IPv6 аналог для «arp -an» в IPv4».

Как выполнить трассировку IPv6

Для выполнения трассировки IPv6 необходимо, чтобы компьютер, с которого вы делаете трассировку сети IPv6, а также целевой хост имели IPv6 адреса, то есть чтобы они были подключены к сети IPv6.

Для трассировки укажите IPv6 адрес удалённого хоста:

traceroute 2a02:f680:1:1100::3d60

Для получения наилучшего результата рекомендуется попробовать разные способы трассировки, подробности смотрите в статье «Трассировка сетевого маршрута».

Программа traceroute ищет для IP адресов имена хостов, но для IPv6 адресов обычно не удаётся найти имена хостов, поэтому программа просто дублирует запись одних и тех же адресов, что загромождает вывод и делает его трудно читаемым. Чтобы этого не происходило, а также для значительного ускорения процесса трассировки, рекомендуется использовать опцию -n:

traceroute -n 2a02:f680:1:1100::3d60

В качестве удалённого узла можно указать имя сайта. Если вы хотите, чтобы была выполнена трассировка до IPv6 этого сайта, то укажите опцию -6, например:

traceroute -6 suip.biz

Онлайн сервис трассировки с поддержкой IPv6: https://suip.biz/ru/?act=traceroute

Как настроить свою систему на работу с DNS по IPv6

Даже если ваш компьютер подключён к IPv6 сети, то, скорее всего, в качестве DNS серверов указаны IP четвёртой версии. Если вы хотите, чтобы DNS запросы также делались по протоколу IPv6, то в дополнение к имеющимся записям добавьте также IPv6 адреса DNS серверов.

Для DNS Google это адреса:

  • 2001:4860:4860::8888
  • 2001:4860:4860::8844

Вы можете проверить, нормально ли приходят ответы от DNS по IPv6:

dig suip.biz @2001:4860:4860::8888 AAAA

Если всё нормально, то в Linux для включения DNS через IPv6 в начало файла /etc/resolv.conf

sudo gedit /etc/resolv.conf

добавьте строки:

nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844

После этого DNS запросы будут отправляться через IPv6 протокол.

Кроме того, что IPv6 «это модно и современно», протокол IPv6 имеет встроенную поддержку IPsec:

«IPsec (сокращение от IP Security) — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP. Позволяет осуществлять подтверждение подлинности (аутентификацию), проверку целостности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами в сети Интернет. В основном, применяется для организации VPN-соединений» (Википедия).

«Обеспечение безопасности в протоколе IPv6 осуществляется с использованием протокола IPsec, поддержка которого является обязательной для данной версии протокола. В отличие от SSL и TLS, протокол IPsec позволит шифровать любые данные (в том числе UDP) без необходимости какой-либо поддержки со стороны прикладного ПО» (Википедия). А DNS запросы (по умолчанию) передаются с помощью протокола UDP. То есть, по идее, переход с IP до IPv6 должен улучшить безопасность для DNS запросов.

Как посчитать сколько IPv6 адресов в подсети

Прежде чем перейти к примерам сканирования IPv6 подсетей, давайте научимся считать, сколько именно в заданной подсети IPv6 адресов.

Это не лишено смысла, обратимся к цитате из Википедии:

«Иногда утверждается, что новый протокол может обеспечить до 5·1028 адресов на каждого жителя Земли. Такое большое адресное пространство было введено ради иерархичности адресов (это упрощает маршрутизацию). Тем не менее, увеличенное пространство адресов сделает NAT необязательным. Классическое применение IPv6 (по сети /64 на абонента; используется только unicast-адресация) обеспечит возможность использования более 300 млн IP-адресов на каждого жителя Земли».

Кстати, довольно просто посчитать сколько всего адресов IPv6:

2128 = 3,402823669×1038

Это нереально большая цифра!

И в интересующей вас подсети может оказаться сильно больше адресов, чем вы ожидаете…

Посчитать количество IPv6 в подсети можно по формуле:

2(128-ДЛИНА_МАСКИ)

Предположим, дана IPv6 сеть: 2604:A880::/32, сколько в этой сети IPv6 адресов?

Считаем:

2(128-32) = 7,922816251×1028

Я не знаю, что это за число, но, определённо, это сильно много адресов. Начинать сканирование таких сетей бессмысленно — сканирование не завершиться никогда.

Как сканировать IPv6 и диапазоны IPv6

Программа nmap поддерживает работу с IPv6 адресами и может сканировать диапазоны IPv6, хотя есть некоторые ограничения: поддерживаются не все виды нотаций, которые доступны для обычных IP.

Предположим, я хочу просканировать свою локальную IPv6 сеть к которой принадлежит мой адрес 2403:6200:8862:ea24::2/128 (маска подсети /128 означает только один адрес). Хотя это не совсем верное выражение, поскольку 2403:6200:8862:ea24::2 адрес является глобальным. В этот же момент моему сетевому интерфейсу присвоен IPv6 адрес 2403:6200:8862:ea24:40b3:e3e3:fdf8:bcf8/64. Если посмотреть информацию о данном адрес:

whois 2403:6200:8862:ea24:40b3:e3e3:fdf8:bcf8

то окажется, что он принадлежит диапазону 2403:6200::/32. Диапазон с длиной сети /32 является слишком большим для сканирования. Подсеть /64 тоже слишком большая. Поэтому я просканирую подсеть /120, в которой всего:

2(128-120) = 256 адресов.


То есть в качестве цели я выбираю 2403:6200:8862:ea24::2/120. Nmap не будет жаловаться, что установлен не сетевой бит (в отличии, кстати, от tcpdump, которая не принимает фильтр с таким допущением). Но «более правильнее», конечно, было бы указать цель как 2403:6200:8862:ea24::/120:

sudo nmap -6 2403:6200:8862:ea24::/120

Из просканированных 256 хостов, 4 хоста оказалось онлайн. Это те же самые хосты, которые входят в подсеть 192.168.1.0/24.

На самом деле, если копнуть глубже и внимательнее присмотреться к протоколу IPv6, то мы узнаем, что клиентам выделяются очень крупные подсети, а так много адресов нужно из-за особенностей маршрутизации IPv6. Может оказаться, что клиенты собраны в начале крупных диапазонов и нет смысла сканировать весь большой диапазон IPv6 адресов целиком — достаточно разбить цели сканирования на такие же подсети, которые выделяет Интернет-провайдер клиентам и сканировать только самое начало каждого такого диапазона. В результате время сканирования должно уменьшиться драматически. ИМХО, в сканировании IPv6 сетей есть простор для оптимизации, но это требует понимание топологии конкретной сети и глубокое понимание протокола IPv6 и его маршрутизации.

Итак, для сканирования IPv6 адресов или диапазонов к команде сканирования nmap нужно добавить опцию -6 и в качестве цели указать:

  • полный IPv6 адрес
  • имя хоста (если к нему привязан IPv6)
  • для подсетей можно использовать нотацию CIDR

В настоящее время диапазоны октетов для IPv6 ещё не поддерживаются.

Даже если в качестве цели явно указан IPv6 адрес, опцию -6 нужно обязательно указывать, иначе возникнет ошибка вида:

2a0b:f4c0:16c:4::1 looks like an IPv6 target specification -- you have to use the -6 option.

Все опции и возможности nmap поддерживаются также и для IPv6 адресов.

Дополнительно смотрите «Как сканировать IPv6 адреса в nmap».

Онлайн сервис «Сканирование открытых портов IPv6 адреса»: https://suip.biz/ru/?act=nmap-ipv6

В чём разница сканирования IPv6 и IPv4? Нужно ли дополнительно сканировать порты на IPv6?

IPv6 и IPv4 адреса одного удалённого хоста могут быть на одном сетевом интерфейсе или на разных. Даже если оба адреса присвоены одному сетевому интерфейсу, для этих адресов могут быть открыты разные порты! К примеру, далее я покажу, как настроить SSH работать только на IPv6 протоколе — в этом случае, если вы ограничитесь сканированием IPv4 протокола, то вы даже не узнаете о существовании службы SSH на целевом сервере! Аналогичное утверждение справедливо и для большинства других протоколов и сервисов, особенно не предназначенных для широкой публики: например, веб-сервер вряд ли будет настроен прослушивать только IPv6 адрес, поскольку это ограничивает доступ для большого количества посетителей, но «административные» сервисы, к которым должен иметь доступ только один человек или небольшая группа людей, например, SSH, Telnet, FTP и т. д. вполне могут быть настроены только для работы по IPv6 протоколу.

Показ IPv6 маршрутов в локальной системе

Чтобы вывести список IPv6 маршрутов в Linux выполните команду:

ip -6 route show

Или сокращённый вариант этой команды:

ip -6 ro

Чтобы показать маршрут по умолчанию IPv6 выполните команду:

ip -6 route show default

Более подробно про маршруты смотрите в статье «Практика настройки сетевых маршрутов: выбор подключения, используемое для Интернета; одновременное использование нескольких подключений для разных целей».

Как посмотреть настройки IPv6

Выше показано, как узнать свой IPv6 адрес и IPv6 маршруты, но кроме этих настроек в системе имеется множество других опций IPv6 для тонкой конфигурации и включения или отключения определённых функций IPv6.

Для просмотра текущих настроек IPv6 в Linux выполните команду:

sudo sysctl -a | grep ipv6

Как отключить IPv6

Для отключения IPv6 в Linux выполните команды:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

iptables для IPv6

Настройка файервола для IPv6 протокола выполняется командой ip6tables.

IPv6 в Wireshark

Wireshark поддерживает IPv6 протокол и по умолчанию показывает его пакеты. Если нужно отфильтровать только IPv6 трафик, то используйте фильтр отображения:

ipv6

Если нужен только IP трафик, то используйте фильтр:

ip

Фильтрация ICMPv6 (Internet Control Message Protocol — протокол межсетевых управляющих сообщений шестой версии) в Wireshark делается фильтром:

icmpv6

Как отфильтровать пакеты ARP протокола для IPv6 в Wireshark? Для IPv6 протокол ARP не требуется, поскольку его роль выполняет протокол обнаружения соседей (Neighbor Discovery Protocol, NDP) средствами ICPM6 — подробности объяснены в статье «IPv6 аналог для «arp -an» в IPv4».

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

icmpv6.type == 133 or icmpv6.type == 134 or icmpv6.type == 135 or icmpv6.type == 136 or icmpv6.type == 137

Дополнительно смотрите справочны материал «Фильтры Wireshark».

IPv6 в tcpdump

Смотрите большой раздел «Фильтрация IPv6 трафика в tcpdump».

Стоит обратить внимание, что фильтрация по диапазону IPv6, например:

sudo tcpdump net 2604:a880:800:c1::2ae:d000/64

Может приводить к сообщениям вида:

tcpdump: non-network bits set in "2604:a880:800:c1::2ae:d000/64"

Их суть в том, что в указанном адресе установлен не сетевой бит — с другими программами обычно не возникает такой проблемы, но tcpdump требует, чтобы несетевые биты были равны нулю. То есть команда со следующим фильтром является для tcpdump правильной:

sudo tcpdump net 2604:a880:800:c1::/64

Использование IPv6 в SSH

При подключении к серверу SSH вы можете использовать IPv6 адрес удалённого хоста, например:

ssh root@2a02:f680:1:1100::3d60

Если вы подключаетесь по имени хоста, у которого есть IP и IPv6 адрес, то добавьте опцию -6, чтобы был выбран именно IPv6 адрес:

ssh -6 root@suip.biz

Как настроить SSH для работы только с IPv6

Настройка SSH сервера выполняется в файле /etc/ssh/sshd_config, подробности смотрите в разделе «SSH (ч.2): Настройка сервера OpenSSH».

В системе может быть несколько сетевых интерфейсов с несколькими IP адресами, по умолчанию sshd прослушивает их все, в том числе IPv6 адреса:

ListenAddress 0.0.0.0
ListenAddress ::

Если убрать запись ListenAddress 0.0.0.0, то будут прослушиваться только IPv6.

Директивой ListenAddress вы также можете указать конкретный IP, который будет прослушиваться в ожидании подключений. А опцией AddressFamily вы можете выбрать для прослушивания все адреса, только IPv4 или только IPv6:

AddressFamily any

Варианты:

  • any (по умолчанию — любые адреса),
  • inet (использовать только IPv4),
  • inet6 (использовать только IPv6),

Для чего нужно ограничивать прослушиваемые адреса только протоколом IPv6?

Многие автоматические сканеры по умолчанию сканируют порты только для IPv4 адресов, полностью игнорируя IPv6. До сих пор довольно много пользователей, в том числе и хакеров, у которых нет доступа к IPv6. Если же у вашего Интернет-провайдера имеется поддержка IPv6, то перейдя на SSH с протоколом IPv6 вы значительно ограничите доступ к вашему SSH серверу для автоматических сканеров и резко сократите количество попыток взлома брут-форсом (подбором пароля).

Как подключиться к FTP на IPv6 в FileZilla

FileZilla поддерживает IPv6 адреса, которые нужно помещать в квадратные скобки.

OpenVPN

Должна работать схема с прослушиванием и подключением только по IPv6, но эта тема требует дополнительного тестирования.

Атака человек-посередине на IPv6

Классический ARP спуфинг не работает для IPv6 протокола, поскольку в нём используется другой протокол. Тем не менее имеются схожие атаки Neighbor Advertisement Spoofing, Last Hop Router.

IPv4 и IPv6 — это отдельные протоколы, поэтому атака одного напрямую не влияет на другой. Тем не менее методы для спуфинга NA и ARP очень похожи. Если у вас есть возможность сделать одно, вы наверняка могли бы сделать другое.

Как получить доступ к IPv6 сети, если мой Интернет-провайдер не поддерживает этот протокол

Хотя Интернет-провайдеры в РФ поддерживают IPv6 «не очень», можно без проблем арендовать VPS с IPv6, в том числе и в РФ. Эти VPS можно использовать по SSH или как прокси для работы с IPv6.

Примеры VPS с IPv6, где систему можно поднять несколькими кликами:

Рекомендуется Вам:

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

Ваш e-mail не будет опубликован.