Сравнение ipv4 и ipv6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
https://en.wikipedia.org/wiki/IPv6_address ________________________________________________________________________________________________________________________ | | | | IPv4 = /32 (8 + 8 + 8 + 8) | IPv6 =/128 бит (16+16+16+16+16+16+16+16) | | 000.000.000.000 | 0000:0000:0000:0000:0000:0000:0000:0000 | | 255.255.255.255 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | | | :: | |___________________________________________________________|__________________________________________________________| | Это иерархический адрес из 2-х частей: Сетевая/Узловая | В IPv6 нет широковещательных адресов. | |___________________________________________________________|__________________________________________________________| | Типы адресов: | Типы адресов: | | 1. Сетевой | 1. Индивидуальные | | 2. Адрес узлов | 2. Групповые | | 3. Широковещательные адреса | 3. Произвольные | |___________________________________________________________|__________________________________________________________| | 0.0.0.0 - 223-225.255.255 - одноадресный диапазон ipv4 | FC00::/7-FDFF/7 - Уникальные локальные | | 224.0.0.0 - 239.255.255.255 - многоадресный диапазон ipv4 | FF00::/8 - Групповые | | 224.0.0.0 - 224.0.0.255 - много адресный диапазон для ЛС | FE80::/10-FEBF/10 - Локальные адреса канала | | ЛС - локальная сеть | | | 224.0.0.9 - RIP (резерв) | | |___________________________________________________________|__________________________________________________________| | Частные IPv4(RFC-1918): | Что то типа частных: | | 10.0.0.0 - 255.255.255.255 (10.0.0.0/8) | 2001:DB8 - тестовая сеть | | 172.16.0.0 - 172.31.255.255 (172.16.0.0/12) | fc00::/7 - Уникальные локальные адреса (ULA) | | 192.168.0.0 - 192.168.255.255 (192.168.0.0/16) | fc00:: до fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | | | предназначены для локальной связи | | | 2001:0DB8::/32 - РЕЗЕРВ для примеров | |___________________________________________________________|__________________________________________________________| | Loopback / петля | loopback - из 0, последний бит - 1 | | 127.0.0.1 - 127.255.255.254 (/8) | ::1/128 | | | ::1 | |___________________________________________________________|__________________________________________________________| | APIPA / не работает dhcp | FE80:: - LINK-LOCAL | | 169.254.0.1 - 169.254.255.254 (169.254.0.0/16) | адрес формируется на основе так | | | называемого «идентификатора интерфейса» IEEE EUI-64 | | | где в середину добавляют байты 0xFF и 0xFE | | | MAC адреса 00:21:2F:B5:6E:10 | | | получится EUI-64 02:21:2F:FF:FE:B5:6E:10 | | | | |___________________________________________________________|__________________________________________________________| | Неопределённый адрес | Неопределённый адрес / (невозможно назначить интерфейсу) | | 0.0.0.0 | ::/128 | | | (::) | |___________________________________________________________|__________________________________________________________| | Адреса TEST-NET: | Default route | | | ::/0 | | 192.0.2.0 - 192.0.2.255 (192.0.2.0/24) | | | Экспериментальные: | Глобальный адрес - обычный адрес, видимый всему Интернету| | 240.0.0.0 - 255.255.255.254(/?) | 2000::/3 глобальное пространство | | Классовые: | 001 - 200:/3 - Глобальные / Global | | A 0.0.0.0 - 127.0.0.0/8 (Крупные) | от 2000:: до 3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | | B 128.0.0.0 - 191.255.0.0/16 (Средние) | | | C 192.0.0.0 - 223.255.255.0/24 (Малые) | | | D 224.0.0.0 - 239.0.0.0 (Групповые) | | | | ::ffff:0:0:0/96 - используемый преобразованных в IPv4 | | | 64:ff9b::/96 и 64:ff9b:1::/48 Адреса с этим префиксом | | | используются для автоматической трансляции IPv4/IPv6 | | | | | | 100::/64 - используется для отбрасывания трафика | |___________________________________________________________|__________________________________________________________| |
Отличие ipv6 от ipv4 и коротко об особенностях ipv6:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
IP-адреса будут иметь длину 128 бит (а не 32 как в IPV4). При записи в традиционном формате IP-адрес будет выглядеть так: abcd:0017:2ff:12aa:2222:783:00dd:1234 32 шестнадцатеричных значения : - хекстет 0000:0000:0000:0000:0000:0000:0000:0000 Очевидно, что такие записи неудобны на практике. Ради экономии места адреса IPv6 будут разбиваться символом хекстет(:) на группы шестнадцатеричных чисел (не более восьми групп), например, так: abcd:17:2ff:12aa:2222:783:dd:1234 Чтобы не нужно было писать лишнего, используется символ ::, который является сокращенной формой для нескольких нулевых групп: abcd:17:0:0:0:0:dd:1234 -> axd:17::dd:1234 0:0:C:0:0:783:dd:1234 3 -> ::783:dd:1234 При отображении адресов IPv4 в формате IPv6 первые шесть групп являются нулевыми. Оставшиеся две группы можно записывать не только в шестнадцатеричной но и в более привычной десятичной системе: Адрес IPv4: ::110.111.112.113 Для localhost существует более компактная запись — ::1. ::/128 - текущий хост ::/0 - маршрут по умолчанию ::1/128 - обратная петля (loopback) Зарезервированные адреса многоадресной рассылки(multicast): Multicast - ff00::/8 - адреса групповой рассылки FF02::1 - все устройства FF02::2 - все маршрутизаторы FF02::1:2 - все DHCPv6 серверы FF02::1:FFxx:xxxx/104 - solicited-node multicast, группа узлов, у которых совпадают последние 24 бита (xx:xxxx) из unicast адреса FF02::5 - группа маршрутизаторов с протоколом OSPFv3 FF02::6 - группа маршрутизаторов с протоколом OSPFv3 Сеть для эксперементов: 2001:db8:0000:0000:0000:0000:0000:0001 _____________|____|___________________ Network ID Subnet Interface ID адреса из области 2001:0DB8::/32 предназначены для использования в экспериментах ipv6 маска сети: !!! ipv6 нету маски используется \ вместо этого длина префикса Провайдеры выдают сеть /48 Длина префикса от 0 - до 128 Стандартная длина префикса /64 (Можно использовать другой но windows хочет /64) Существует три типа IPv6–адресов: # Unicast (индивидуальный) – Служит для определения интерфейса на устройстве под управлением протокола IPv6 одноадресная рассылка (unicast) - один пк на другой # Multicast (Групповой) – Используется для отправки пакетов по нескольким адресам назначения (Заменил собой Broadcast адрес, имеется IPv6- адрес для всех узлов, который дает аналогичный результат.) многоадресная рассылка (multicast) - на группу пк (iptv) # Anycast (Произвольный) – Любой индивидуальный адрес, который может быть назначен нескольким устройствам. Пакет, отправляемый на адрес произвольной рассылки, направляется к ближайшему устройству с этим адресом. адрес любого узла из группы (anycast) - любой адрес из группы Примечание. Протокол IPv6 не содержит адресов широковещательной рассылки (broadcast) Начальные цифры адресов IPv6: Глобальные: 2 или 3 Локальный: FD Локальный канал связи: FE80 Групповой: FF Еще разок про IPV6-адрес Разберем адрес: 2001:0DB8:ACAD:0002::/64 ___________________________________________________________________________________________________ |48бит |16бит |64бит | |Префикс глобальной маршрутизации |Идентификатор подсети |Идентификатор интерфейса/Адрес хоста| |2001:0DB8:ACAD |:0002: |:/64 | |___________________________________|_________________________|____________________________________| /64 48бит - выдается региональным регистратором (RIR) 16бит - выдается провайдером 64бит - локальная сеть клиента, где он может делать все что угодно 2001:0DB8:ACAD:0002::/64 2001:0DB8:ACAD:0003::/64 Разбиение на подсети с использованием идентификатора подсети: Как вы помните, блок IPv6-адресов с префиксом /48 содержит 16 бит идентификатора подсети, как показано на рисунке. Разбиение на подсети с использованием 16 бит идентификатора подсети даёт 65 536 возможных подсетей /64. Поэтому нет необходимости заимствовать биты из идентификатора интерфейса или узловой части адреса. Каждая IPv6-подсеть /64 содержит примерно 18 квинтиллионов адресов, что, как очевидно, гораздо больше, чем когда-либо понадобится в одном сегменте IP-сети. Подсети, созданные из идентификатора подсети, легко представить, поскольку не нужно выполнять преобразование в двоичный формат. Чтобы определить следующую доступную подсеть, достаточно рассчитать следующее шестнадцатеричное число. Необходимо применить расчёт части идентификатора подсети в шестнадцатеричной системе счисления. Префикс глобальной маршрутизации является одинаковым для всех подсетей. Для каждой подсети увеличивается только четырёхразрядный байт идентификатора подсети. |
Типы совместного использование протоколов IPv4 и IPv6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
0. Двойной стек: двойной стек позволяет протоколам IPv4 и IPv6 сосуществовать в одной сети. Устройства с двойным стеком одновременно работают с протокольными стеками IPv4 и IPv6 ______ | | ___ | | <--ipv6---> | |-----> ipv6-network | | <--ipv4---> |___|-----> ipv4-network |______| router PC 1. Туннелирование — это способ транспортировки IPv6-пакетов через IPv4-сеть. IPv6-пакет инкапсулируется внутри IPv4-пакета, как и другие типы данных ______ transit network ____ ipv4-network <----->|____| --------tunel---------|____|<----->ipv4-network router ipv6 network router 2. Преобразование — преобразование сетевых адресов 64 (NAT64) позволяет устройствам под управлением IPv6 обмениваться данными с устройствами под управлением IPv4 с помощью метода преобразования, похожего на метод преобразования из NAT для IPv4. IPv6-пакет преобразовывается в пакет IPv4-пакет и наоборот. _____ ipv6-internet -------|___| -----pc-ipv4-host NAT |
Основные отличия IPV6 от IPV4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
1. В IPv6 нету Broadcast ARP Broadcast частично заменили Multicast адреса и адреса Link Local. ARP протокол заменен протоколом NDP; 2. В IPv6 нет технологии NAT, которая есть в IPv4. Смело спорьте с тем: кто скажет обратное. Экономия адресов в IPv6 не используется, адресов хватит на всех. Уровень безопасности, который обеспечивает NAT в технологии IPv4, заменен адресами Unique Local, но нельзя забывать, что безопасность должны обеспечивать межсетевые экраны - это их функция. Название Nat64 которое можете встретить в литературе про IPv6, идет речь о совместном использовании технологии IPv6, IPv4. 3. Благодаря Link Local адресам сетевые устройства могут общаться в пределах одного локального канала и только в пределах его. 4. Появилась фича которая называется: «проверка уникальности IPv6 адреса». Используется в DHCPV6, полный процесс будет описан чуть ниже. Суть ее в том, что после назначения ip-адреса устройству он посылает icmp запрос, destination выбирает данный ему адрес, если приходит ответ — то его адрес не уникален и нужно получать новый IPv6 адрес. 5. Появились адреса anycast. В сети могут существовать несколько хостов с абсолютно идентичными IPv6-адресами. Вариант использования, например, несколько балансировщиков около сервера. Им дается один и тот же адрес, который называется anycast. 6. Вендоры, такие как Cisco или Juniper, полностью готовы к переходу на IPv6, дело остается за операторами связи и ИТ-компаниями. |
Ping:
1 2 3 4 5 6 7 |
ping6 -c4 -I eth0 ff02::1 - узнать какие хосты могут использовать ipv6 ping6 ::1 - пингануть локальный хост ::1 — это сокращение от 0000:0000:0000:0000:0000:0000:0000:0001. Любая непрерывная последовательность нулей может быть заменена на пару двоеточий, а любая четвёрка, состоящая из нулей, может быть заменена на один ноль. |
Подключение по SSH:
1 2 3 4 |
ssh phineas@fe80::221:97ff:feed:ef01%eth0 И опять же, если вы используете link-local адрес, то вы должны указать имя интерфейса с которого будете осуществлять подключение. Как показано выше, делается это путём добавления знака процента и имени интерфейса |
Еще раз про типы адресов IPv6:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
Калькулятор ipv6: https://findipv6.com/ipv6-cidr-to-range Конвертер ip4 to ipv6: https://dnschecker.org/ipv4-to-ipv6.php IPv6 также может показаться сложным, потому что существуют разные типы адресов. Подобно общедоступным, частным (RFC 1918) и адресам автоматической частной IP-адресации (APIPA) IPv4 (169.254.0.0/16), IPv6 имеет четыре основных типа адресов, каждый из которых выполняет свою специфическую функцию: 2000::/3 = Global Unicast Addresses = глобальные одноадресные адреса (GUA). Вы можете думать о них как об общедоступных интернет-адресах для прямой одноадресной связи между узлами. Start range: 2000:: End range: 3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff FC00::/7 = Unique Local Addresses = уникальные локальные адреса (ULA). Это частные адреса, которые никогда не должны использоваться в Интернете, а не через NAT. Start range: fc00:: End range: fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff FE80::/10 = Link-Local Addresses = Локальные адреса ссылок. Используется только для внутренней связи по локальной сети, никогда не перенаправляется маршрутизаторами. Start range: fe80:: End range: febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff FF00::/8 = Multicast addresses = многоадресные адреса. Используется для распространения пакетов «один ко многим» в пределах сети. Start range: ff00:: End range: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff Давайте сосредоточим наше внимание на глобальных адресах(GUA), потому что это то, что вы собираетесь использовать для своих систем, выходящих в Интернет, а также сетей и систем в пределах вашего интернет-периметра. Для IPv6 не требуется функциональность NAT (см. RFC 4864 ), потому что у нас множество адресов. Уникальные локальные адреса (ULA) ( RFC 4193 ) не рекомендуются для внутренних корпоративных сетей. Адреса Link-local IPv6 и многоадресные адреса можно легко исследовать самостоятельно Пример: Сеть для эксперементов: 2001:db8:0000:0000:0000:0000:0000:0001 _____________|____|___________________ Network ID Subnet Interface ID адреса из области 2001:0DB8::/32 предназначены для использования в экспериментах Start range: 2001:db8:: End range: 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff |
Обращение к страничкам в интернете:
1 2 3 4 5 |
При использовании IPv6-адреса в URL необходимо заключать адрес в квадратные скобки: http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]/ Если необходимо указать порт, то он пишется после скобок: http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]:8080/ |
DHCP в ipv6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
ipv6 SLAAC \ NDP \ Neighbor Discovery \ Router Discovery Собственно адрес ipv6 128 бит делится на две части: 0. Префикс IPv6 = 64бит (Эту часть отдает DHCPv6) 1. Идентификатор интерфейса = 64бит \ (ff:fe в середину MAC) (Эта часть генерируется клиентом при EUI-64) Neighbor Discovery (знаю адрес IPv6 соседа, но не знаю канальный: как найти?) Neighbor Solicitation (NS) - запрос канального адреса (LLA или ::(DAD) -> SNMA) Neighbor Advertisement (NA) - ответ на такой запрос (LLA -> LLA или FF02::1(DAD)) тут же работают механизмы Duplicate Address Detection (DAD) и Neighbor UnreachabilityDetection (NUD) Router Discovery (хочу получить информацию о роутерах) Router Solicitation (RS) - запрос информации о роутерах (:: -> FF02::2) Router Advertisement (RA) - оповещение по расписанию о настройках IPv6 и ответ, если был принудительный запрос (LLA -> FF02::1) ND использует порты udp port 547,546 Как клиент получает адрес: На роутере настроить radvd и SLAAC! Включить интерфейс 0. Генерируется Link-Local Address и рассылается сообщение Neighbor Solicitation на адрес Solicited-node Multicast для Duplicate Address Detection (адрес в состоянии tentative) 1. Рассылается сообщение Router Solicitation на адрес ff02::2 2. Роутер отвечает на Link-Local Address, что есть такие-то доступные префиксы и настройки 3. Генерируется Global Unicast Address на основе полученного префикса и рассылается сообщение Neighbor Solicitation на адрес Solicited-node Multicast для Duplicate Address Detection (адрес в состоянии tentative) 4. Применяются настройки полученные от роутера 5. Если Duplicate Address Detection отрабатывает успешно, то адреса переходят в состояние preferred. Для чего нужен DHCPv6? то бы раздавать опции! DHCPv6 нужен, т.к. в SLAAC ограничен набор предлагаемых опций. Если вы хотите, к примеру, загрузку по сети или передавать опции NTP, то вам нужен полноценный сервер DHCPv6. Варианты: stateless DHCPv6 = SLAAC (сеть, префикс и шлюз) + DHCPv6 (опции); stateful DHCPv6 (клиент принципиально не слушает RA от роутера и обращается к серверу DHCPv6). radvd Если сообщения RA рассылаются, то: Autonomous = off (не назначаем адрес из префиксов RA) Managed = on (запрашиваем адрес у сервера DHCPv6) OtherConfig = on (получаем опции у сервера DHCPv6) Если RA не рассылаются, то клиент всегда может самостоятельно обратиться к серверу DHCPv6 по FF02::1:2 Помним, что клиент отправляет сообщение с порта 546/UDP серверу на порт 547/UDP. В идеальном случае, DHCPv6 сервер ещё добавляет соответствующие записи в зону DNS. Кратко как всё-таки работает DHCPv6: Вариант 1(Только SLACC): "Я предоставляю все необходимое вам данные (префикс, длину префикса и шлюз по умолчанию)" Вариант 2(SLAAC и DHCPv6): Вот моя информация, но вам понадобится и другие данные, например об DNS-адресах с сервера DHCPv6" Вариант 3(только DHCPv6): "Я не могу вам помочь. Запросите необходимую информацию у сервера DHCPv6" |
Настройка ipv6 средствами systemd-networkd
1 2 3 4 5 6 7 8 9 10 |
vim /etc/systemd/network/eth0.network ------------------------------------- [Network] # Use 'yes' instead of 'ipv6' for both ipv4 and ipv6. DHCP=ipv6 /etc/systemd/network/lan.network [Network] IPv6SendRA=yes DHCPv6PrefixDelegation=yes ------------------------------------- |
Если все таки хочется задушить ipv6, используем systemd-networkd:
1 2 3 4 5 6 7 8 9 |
etc/systemd/network/40_eth0.network ----------------------------------- [Match] Name=eth0 [Network] LinkLocalAddressing=ipv4 # вот эта строка отключает работу ipv6 на интерфейсе DHCP=ipv4 #DHCP=yes # по умолчанию просит настройки ipv6 вместе с ipv4 ---------------------------------- |
Еще примеры настройки сети используя systemd-networkd:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
cat > /etc/systemd/network/10-eth-static.network << "EOF" [Match] Name=<network-device-name> [Network] Address=192.168.0.2/24 Gateway=192.168.0.1 DNS=192.168.0.1 Domains=<Your Domain Name> EOF cat > /etc/systemd/network/10-eth-dhcp.network << "EOF" [Match] Name=<network-device-name> [Network] DHCP=ipv4 [DHCP] UseDomains=true EOF cat > /etc/systemd/network/10-ether0.link << "EOF" [Match] # Change the MAC address as appropriate for your network device MACAddress=12:34:45:78:90:AB [Link] Name=ether0 EOF cat > /etc/resolv.conf << "EOF" # Begin /etc/resolv.conf domain <Your Domain Name> nameserver <IP address of your primary nameserver> nameserver <IP address of your secondary nameserver> # End /etc/resolv.conf EOF |
Ручное управление ipv6 программой ip:
1 2 3 |
ifconfig eth0 | grep "inet6 addr:" посмотреть адрес ip -6 addr add 2001::1/64 dev eth0 - назначить адрес ip -6 addr del 2001::1/64 dev eth0 - удалить адрес |
firewall
1 2 3 4 |
Управляется так де как и iptables # ip6tables -P OUTPUT DROP # ip6tables -p INPUT DROP # ip6tables -p FORWARD DROP |
Включения forward для ipv6:
1 2 3 4 5 6 7 |
временно до перезагрузки: sysctl -w net.ipv6.conf.all.forwarding=1 - вкл маршрутизации ipv6 Проверка: cat /proc/sys/net/ipv6/conf/eth0/forwarding проверка включения маршрутизации ipv6 Для постоянно нужно отредактировать файл /etc/sysctl.conf и раскоментировать строку: net.ipv6.conf.all.forwarding = 1 |
Основной вариант отключения IPV6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
0. В файле /etc/sysctl.conf вставляем следующие строки - nano /etc/sysctl.conf --------------------- #disable ipv6 settins net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 net.ipv6.conf.enp1s0.disable_ipv6 = 1 -------------------- Сохраняем файл. 1. Применяем: sysctl -p P.S. аналогичное в windows Отключение 6to4 netsh int 6to4 set st disabled |
вариант 2
1 2 3 |
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1 |
вариант 3
1 2 3 4 5 |
sudo vi /etc/default/grub ------------------------- GRUB_CMDLINE_LINUX = "ipv6.disable = 1" ------------------------- sudo update-grub2 |
Обще доступные серверы DNS для ipv6:
1 2 3 4 5 6 7 8 9 |
DNS Google Базовый 2001:4860:4860::8888 DNS Google Базовый 2001:4860:4860::8844 DNS Google Базовый 2a02:6b8::feed:0ff DNS Google Базовый 2a02:6b8:0:1:feed::0ff DNS Яндекс Безопасный 2a02:6b8::feed:bad DNS Яндекс Безопасный 2a02:6b8:0:1::feed:bad DNS Яндекс Семейный 2a02:6b8::feed:a11 - адрес семейного сервера (не выдаются адреса с контентом 18+) DNS Яндекс Семейный 2a02:6b8:0:1::feed:a11 - адрес семейного сервера (не выдаются адреса с контентом 18+) |
Пример записи ipv6 в /etc/network/interfaces
1 2 3 |
auto ens5 iface ens5 inet6 static address 2001:db8::1/64 |