15.1 Основы IP-сетей (Understanding IP Networking)¶
Совет к экзамену
Перед сдачей экзамена Linux+/LPIC-1 убедитесь, что вы достаточно разбираетесь в основах сетевых технологий Linux. На экзамене предполагается, что вы знаете, как работает протокол IP, умеете читать любой IP-адрес и определять, к какому классу A, B или C он относится. Вы должны уметь находить сетевую и узловую часть адреса, а также знать, какие адреса DNS-серверов и шлюзов по умолчанию используются при настройке сетевых параметров Linux.
Вы также должны знать, как установить сетевой интерфейс в систему, включая команду ifconfig, и уметь управлять сетевыми адаптерами в вашей системе. Кроме того, вы должны знать, как использовать команды dig, ping, netstat и traceroute для диагностики конфигурации сети.
Прежде чем настраивать систему Linux для работы в компьютерной сети, необходимо установить какой-либо сетевой интерфейс и настроить его для работы в конкретной сети. На заре развития сетевых технологий можно было выбирать из множества сетевых интерфейсов и сетевых протоколов. Однако большинство сетей, с которыми вам придётся работать сегодня, — это сети Ethernet, использующие протокол IP. С учётом этого экзамен Linux+/LPIC-1 в значительной мере ориентирован на использование плат Ethernet, настроенных с протоколом IP в системах Linux. Первую часть этой главы мы посвятим изучению именно этой темы.
Для экзамена Linux+/LPIC-1 необходимо хорошо разбираться в протоколе IP (обеих версиях — 4 и 6). Вы должны знать, как настраивать протокол, чтобы система могла участвовать в работе сети. Чтобы обеспечить вас необходимой информацией, мы кратко рассмотрим IP-адресацию в этой части главы. Мы рассмотрим следующие темы:
- Что такое протокол?
- Как работают адреса IPv4
- Как работают маски подсети IPv4
- Указание адресов DNS-сервера и шлюза по умолчанию
- Использование IPv6
Начнём с обсуждения того, что такое протокол.
Что такое протокол?¶
Итак, что же такое протокол (protocol)? Строго говоря, протокол — это набор правил, а в контексте сетевых технологий протокол — это набор правил, регулирующих обмен данными между двумя системами. Хорошей аналогией для протокола является человеческий язык. Прежде чем два человека смогут общаться, они должны говорить на одном языке; иначе никакой информации между ними передаваться не будет. Например, представьте, что вы позвонили кому-то по телефону, кто не говорит на вашем языке. Несмотря на то что собеседник поднял трубку и слышит передаваемую вами информацию, он не понимает, что вы говорите. Почему? Потому что у вас нет общего языка.
То же самое справедливо для компьютерных систем. Прежде чем они смогут обмениваться информацией, их необходимо настроить на использование одного и того же протокола. Протокол определяет, как информация кодируется и передаётся по сети, чтобы принимающая система могла интерпретировать её и восстановить исходные данные.
Как уже было сказано, существует множество различных протоколов для использования в компьютерных сетях. Однако для экзамена Linux+/LPIC-1 необходимо знать протокол IP — сетевой протокол, используемый в Интернете. IP работает совместно с другими протоколами, такими как протокол управления передачей (Transmission Control Protocol, TCP) или протокол пользовательских датаграмм (User Datagram Protocol, UDP), для разбивки передаваемой по сети информации на части.
Примечание
Две версии протокола IP называются IPv4 и IPv6. Сначала в этой главе мы рассмотрим IPv4, а затем перейдём к IPv6.
Для понимания принципа работы этого процесса необходимо иметь чёткое представление об эталонной модели OSI (OSI Reference Model). Эталонная модель OSI была разработана делегатами крупных компьютерных и телекоммуникационных компаний в 1983 году. Целью разработки была модульная модель сетевого взаимодействия, позволяющая продуктам разных производителей работать совместно. До этого сетевые решения, как правило, были проприетарными, что вынуждало разработчиков приобретать все компоненты у одного производителя. Определив эталонную модель OSI, отрасль создала стандарт, позволяющий выбирать компоненты от самых разных производителей.
Эталонная модель OSI разделяет процесс взаимодействия между двумя узлами на уровни. Это показано на рис. 15-1.

Рис. 15-1. Эталонная модель OSI.
Эти уровни разбивают общий процесс взаимодействия на конкретные задачи. Информация проходит вниз по уровням на передающей системе, затем передаётся по сетевой среде. После этого информация проходит вверх по уровням на принимающей стороне.
Эталонная модель OSI имеет семь уровней:
- Физический (Physical) — передаёт электрические сигналы между узлами.
- Канальный (Data Link) — определяет правила и процедуры доступа к физическому уровню. Он определяет, как узлы идентифицируются в сети и как осуществляется доступ к сетевой среде. Он также определяет, как проверять, что данные, полученные с физического уровня, не содержат ошибок. Информация, полученная с верхних уровней, организуется в датаграммы (datagrams).
- Сетевой (Network) — обеспечивает маршрутизацию данных. Он определяет, как распознавать адреса соседних узлов и маршрутизаторов. Он также определяет, как определять следующую сетевую точку, в которую пакет должен быть передан по направлению к месту назначения. На этом уровне работает протокол Интернета (Internet Protocol, IP), а также протокол управляющих сообщений Интернета (Internet Control Message Protocol, ICMP).
- Транспортный (Transport) — на передающем узле транспортный уровень получает информацию с верхних уровней модели OSI и делит её на небольшие передаваемые фрагменты, называемые пакетами (packets). На принимающем узле транспортный уровень собирает пакеты из датаграмм, полученных с нижних уровней модели OSI. Транспортный уровень предоставляет механизмы контроля ошибок для обеспечения того, чтобы данные поступали на узел-получатель в неизменном виде. На этом уровне работают TCP и UDP.
- Сеансовый (Session) — отвечает за установление и поддержание соединений между исходным и целевым сетевыми узлами. Эти соединения называются сеансами (sessions).
- Представительский (Presentation) — отвечает за то, чтобы информация, проходящая через уровни OSI, была правильно отформатирована для приложения в целевой системе.
- Прикладной (Application) — отвечает за предоставление приложениям возможности доступа к сети.
Сам протокол IP используется только для обеспечения доставки каждого пакета в целевую систему. Протокол TCP или UDP используется совместно с IP для фрагментации данных с передающего узла и последующей сборки и упорядочивания их при поступлении в целевую систему. Это показано на рис. 15-2.

Рис. 15-2. Передача данных с помощью протокола IP.
Протокол Интернета (Internet Protocol, IP) — это протокол, используемый в Интернете. Это протокол без установления соединения, разработанный для обеспечения доставки данных на узел-получатель. Протокол IP основывается на том, что информация разбивается на передаваемые фрагменты (пакеты) протоколом TCP или UDP. Каждый пакет обрабатывается IP как независимая единица данных, независимо от других единиц данных. Ключевое, что нужно помнить об IP, — это то, что его не интересует фрагментация или упорядочивание. Его интересует только то, чтобы каждый пакет добрался до места назначения.
Задача отслеживания отдельных пакетов принадлежит протоколу управления передачей (TCP). TCP является одним из двух исходных компонентов набора протоколов IP. Весь набор обычно называют TCP/IP, хотя это технически неверно, поскольку с IP также может использоваться UDP.
Протокол TCP обеспечивает надёжный обмен данными непосредственно между двумя сетевыми узлами. Он делает это, требуя подтверждения получения каждого пакета, отправленного от отправителя к получателю. Из-за особенностей работы протокола IP пакеты могут теряться, дублироваться или доставляться не в том порядке. TCP обнаруживает эти проблемы, запрашивает повторную передачу потерянных пакетов и упорядочивает пакеты, полученные не в том порядке. По существу, TCP обеспечивает то, что окончательные собранные данные на принимающей системе являются точной копией данных, переданных изначально.
Использование TCP совместно с IP напоминает использование подтверждения доставки в курьерской службе. Когда вы отправляете посылку, курьерская служба требует, чтобы получатель расписался за её получение, что позволяет отправителю убедиться в правильной доставке посылки. TCP/IP работает схожим образом.
Протокол TCP используется приложениями верхнего уровня, требующими высокой степени целостности данных, в том числе:
- веб-серверами;
- почтовыми серверами;
- FTP-серверами.
Однако достоверность данных, обеспечиваемая TCP, имеет свою цену — прежде всего в виде задержки. TCP требует значительных сетевых и вычислительных ресурсов. Не все сетевые приложения действительно нуждаются в высокой степени достоверности данных, обеспечиваемой TCP. Некоторые приложения верхнего уровня требуют меньших задержек и могут допускать меньшую надёжность. Такие приложения используют протокол пользовательских датаграмм (UDP) вместо TCP.
UDP функционирует аналогично TCP, однако является протоколом без установления соединения. При использовании UDP IP-пакеты отправляются без подтверждения получения. UDP обычно применяется в приложениях, которые передают очень небольшие объёмы данных за один раз. В нём предполагается, что контроль ошибок и их исправление либо не нужны, либо будут выполняться самим приложением, что позволяет избежать накладных расходов на обработку.
В этом отношении UDP похож на отправку открытки по почте. Открытка не содержит много данных, и получатель не должен расписываться за неё. По существу, отправитель предполагает, что почтовая служба достаточно надёжна и информация на открытке недостаточно важна, чтобы требовать подтверждения получения. UDP работает схожим образом. К приложениям верхнего уровня, использующим UDP, относятся:
- потоковое аудио и видео;
- VoIP.
Помимо IP, TCP и UDP, для экзамена Linux+/LPIC-1 необходимо знать протокол управляющих сообщений Интернета (ICMP). ICMP — ещё один базовый протокол в наборе протоколов IP. Он отличается по назначению от TCP и UDP, которые являются транспортными протоколами. Основная роль ICMP — тестирование и проверка сетевого взаимодействия между узлами.
Например, для проверки сетевого соединения утилита ping отправляет пакеты Echo Request по протоколу ICMP на удалённый узел. Если узел их получает, он отвечает пакетом Echo Response по протоколу ICMP отправителю. Если пакет Echo Response по протоколу ICMP получен, отправитель знает, что между отправителем и получателем существует работоспособное сетевое соединение и что получатель отвечает на сетевые запросы. Если пакет Echo Response по протоколу ICMP не получен, отправитель знает, что что-то не так, и может начать диагностику соединения.
Для экзамена Linux+/LPIC-1 также необходимо понимать концепцию IP-портов (IP ports), которые предоставляются протоколами TCP и UDP на транспортном уровне. По существу, порт (port) — это логическое соединение, предоставляемое TCP и UDP для протоколов верхнего уровня. Порты позволяют одному узлу с одним IP-адресом предоставлять несколько сетевых служб. Каждая служба использует один и тот же IP-адрес, но работает с разными номерами портов TCP или UDP.
Например, предположим, что у вас есть сетевой сервер с IP-адресом 192.168.1.1. Вы можете настроить как веб-сервер, так и FTP-сервер для одновременной работы на этом сервере. Каждая служба будет прослушивать запросы на интерфейсе с IP-адресом 192.168.1.1. Однако веб-сервер работает на порту 80, а FTP-сервер — на портах 20 и 21. Запросы, отправленные на порт 80, обрабатываются веб-службой, а информация, отправленная на порты 20 и 21, обрабатывается FTP-службой.
Примечание
Служба FTP несколько уникальна тем, что использует два порта. Один используется для управляющего соединения (порт 21), а другой (порт 20) — для непосредственной передачи данных. Большинство служб используют только один порт.
Вам следует ознакомиться с различными категориями для организации IP-портов. Номера портов могут варьироваться от 0 до 65536. Порядок использования этих портов регулируется Корпорацией по присвоению имён и номеров в Интернете (Internet Corporation for Assigned Names and Numbers, ICANN). IP-порты делятся на три различные категории:
- Широко известные порты (Well-known ports) — зарезервированы для конкретных служб; это порты с номерами от 0 до 1023. Вот некоторые примеры:
- Порты 20 и 21: FTP
- Порт 22: Secure Shell (SSH)
- Порт 23: Telnet
- Порт 25: SMTP
- Порт 53: DNS
- Порт 80: HTTP
- Порт 110: POP3
- Порт 119: NNTP (новости)
- Порт 123: NTP (синхронизация времени)
- Порты 137, 138, 139: NetBIOS
- Порт 143: IMAP
- Порт 161: SNMP
- Порт 162: SNMP Traps
- Порт 389: LDAP
- Порт 443: HTTPS
- Порт 465: SMTP с использованием TLS/SSL (SMTPS)
- Порт 514: удалённое журналирование Syslog
- Порт 636: защищённый LDAP
- Порт 993: IMAP с использованием TLS/SSL (IMAPS)
- Порт 995: POP3 с использованием TLS/SSL (POP3S)
- Зарегистрированные порты (Registered ports) — ICANN зарезервировал порты от 1024 до 49151 для специальных реализаций. Организации могут создать собственную сетевую службу и подать заявку на присвоение ей зарегистрированного номера порта.
- Динамические порты (Dynamic ports) — динамические порты также называются частными портами. Порты от 49152 до 65535 обозначены как динамические порты. Они доступны для использования любой сетевой службой. Они часто используются сетевыми службами, которым необходимо установить временное соединение. Например, служба может согласовать динамический порт с клиентом, а затем использовать этот порт в течение сеанса. По завершении сеанса порт закрывается.
Чтобы всё это работало, необходимо назначить каждому узлу в сети IP-адрес. Рассмотрим, как это делается.
Как работают адреса IPv4¶
Каждый узел в сети на основе IP должен иметь уникальный IP-адрес. IP-адрес (IP address) — это адрес сетевого уровня (уровень 3), логически назначаемый сетевому узлу. Поскольку IP-адрес является логическим, он не является постоянным — его можно изменить в любое время.
IP-адрес отличается от MAC-адреса (MAC address). MAC-адрес — это аппаратный адрес канального уровня (уровень 2), который «прожигается» в микросхеме ПЗУ каждой сетевой платы, выпускаемой в мире. MAC-адрес жёстко закодирован и не может быть изменён.
Примечание
Протокол ARP (Address Resolution Protocol) используется для сопоставления логических IP-адресов, назначенных системам, с их жёстко закодированными MAC-адресами.
IP-адрес состоит из четырёх чисел, разделённых точками. Примеры допустимых IP-адресов:
- 12.34.181.78
- 192.168.1.1
- 246.270.3.8
Примечание
Адреса IPv4 иногда называют адресами «dotted quad» («четыре числа через точку»).
В десятичном представлении каждое число должно быть в диапазоне от 0 до 255. Например, 192.168.1.1 — допустимый IP-адрес. Вот некоторые примеры недопустимых IP-адресов:
- 256.78.1.3 — нельзя использовать значение больше 255
- 10.3.4 — необходимо использовать четыре значения
Каждое число в адресе на самом деле является восьмибитным двоичным числом, называемым октетом (octet). Поскольку каждый октет является двоичным числом, его можно представить в виде нулей и единиц. Например, адрес 192.168.1.1 в двоичном виде выглядит как:
Существует несколько простых способов преобразования между восьмибитным двоичным адресом и трёхзначной десятичной версией IP-адреса. Один из вариантов — использовать программу-калькулятор, входящую в состав большинства дистрибутивов Linux (и даже Windows), в научном режиме. Для преобразования десятичного числа IP-адреса в двоичное введите десятичное значение, а затем нажмите кнопку «Bin».
Можно также выполнить обратное преобразование: введите двоичное число в режиме «Bin» и переключитесь в режим «Dec», что преобразует двоичное число в его десятичный эквивалент.
Если вы склонны к математике, можно выполнить преобразование вручную. Используйте следующие значения для определения весового значения каждого бита двоичного числа:
- Бит 1 = 128
- Бит 2 = 64
- Бит 3 = 32
- Бит 4 = 16
- Бит 5 = 8
- Бит 6 = 4
- Бит 7 = 2
- Бит 8 = 1
Например, 11000000 = 128 + 64 = 192.
Некоторые IP-адреса зарезервированы и не могут быть назначены узлу. Например, последний октет в IP-адресе узла не может быть равен 0. Это зарезервировано для адреса самого сетевого сегмента, в котором находится узел. Например, сетевой адрес для узла с IP-адресом 192.168.1.1 — это 192.168.1.0.
Кроме того, последний октет IP-адреса, назначенного узлу, не может быть равен 255. Он зарезервирован для отправки широковещательного сообщения всем узлам в сегменте. В приведённом выше примере широковещательный адрес для узла с IP-адресом 192.168.1.1 будет 192.168.1.255.
Крайне важно понимать, что каждый узел в IP-сети должен иметь уникальный IP-адрес. Никакие два узла в одной IP-сети не могут иметь одинаковый назначенный им IP-адрес. Если узел находится в публичной сети, например в Интернете, он должен использовать глобально уникальный IP-адрес. Вы можете обратиться в IANA (Internet Assigned Numbers Authority) за блоком зарегистрированных IP-адресов. После назначения IP-адреса никто другой в мире не может использовать его в публичной сети.
Это фактически вводит ключевую проблему IP версии 4. Схема 32-битной адресации, используемая в IPv4, допускает максимум четыре миллиарда возможных уникальных адресов. Когда IPv4 был изначально определён, это казалось большим количеством адресов. Однако сегодня этот ограниченный объём доступных адресов был почти полностью распределён.
Один из способов обойти эту нехватку адресов IPv4 — использовать частные сети с трансляцией сетевых адресов (network address translation, NAT). При трансляции сетевых адресов можно использовать NAT-маршрутизатор для представления одного зарегистрированного IP-адреса публичной сети, используя при этом частные IP-адреса в сети позади него. Это показано на рис. 15-3.

Рис. 15-3. Использование NAT-маршрутизатора для разделения публичной и частной сетей.
Использование NAT-маршрутизатора имеет много преимуществ. Ключевым среди них является то, что вы можете скрыть большую частную сеть за публичным интерфейсом (или несколькими публичными интерфейсами). Это позволяет крупной организации реализовать свою сеть и нуждаться лишь в относительно небольшом числе глобально уникальных публичных IP-адресов.
В каждом классе IP-адресов есть блоки адресов, называемые частными или зарезервированными IP-адресами. Эти адреса не распределены и могут использоваться всеми желающими. Это позволяет использовать частные адреса в локальной сети и при этом иметь возможность подключаться к публичным сетям, например к Интернету. Весь трафик из вашей частной сети выглядит так, как будто он исходит с зарегистрированного IP-адреса, настроенного на публичной стороне NAT-маршрутизатора.
Диапазоны частных IP-адресов:
- 10.0.0.0–10.255.255.255 (класс A)
- 172.16.0.0–172.31.255.255 (класс B)
- 192.168.0.0–192.168.255.255 (класс C)
Это немаршрутизируемые адреса, то есть если вы попытаетесь использовать их в публичной сети, например в Интернете, IP-маршрутизаторы не будут пересылать данные к ним или от них. Это обрабатывается с помощью трансляции сетевых адресов в публичный IP-адрес NAT-маршрутизатором. Это позволяет любому желающему в мире использовать эти диапазоны частных IP-адресов, не беспокоясь о конфликтах, даже если одни и те же адреса используются в нескольких местах. NAT делает всё это возможным!
Помимо назначения IP-адреса, при настройке протокола IP в системе Linux необходимо также назначить маску подсети. Рассмотрим, как это делается.
Как работают маски подсети IPv4¶
Если вы когда-либо настраивали систему с IP-адресом, вы, вероятно, заметили, что также необходимо назначить маску подсети (subnet mask). Вы когда-нибудь задумывались, что это за параметр? Самое время узнать.
Чтобы понять, как работает маска подсети, необходимо сначала понять, что IP-адреса делятся на две части:
- сетевой адрес (network address);
- адрес узла (node address).
Часть адреса IPv4 используется для идентификации сети, в которой находится узел. Остальная часть уникально идентифицирует конкретный узел в сети. Ключевое, что нужно помнить: каждая система в одном сетевом сегменте должна иметь абсолютно одинаковые числа в сетевой части адреса. Однако каждая из них должна иметь уникальную часть узла. Это показано на рис. 15-4.

Рис. 15-4. Сетевая часть и часть узла в IP-адресе.
То, какая часть адреса используется для сети, а какая — для узла, определяется маской подсети. Маски подсети по умолчанию включают следующие:
Любой октет маски подсети со значением 255 указывает на часть IP-адреса, используемую для сетевого адреса. Помните, что операционная система видит IP-адреса в двоичном представлении. Она также видит маски подсети в двоичном представлении. Если у вас IP-адрес 192.168.1.1 и маска подсети 255.255.255.0, маска подсети указывает, что первые три октета адреса относятся к сетевой части, а последний октет — к части узла. Это показано на рис. 15-5.

Рис. 15-5. Использование маски подсети для определения сетевой части и части узла IP-адреса.
IP-адреса делятся на пять различных классов. У каждого класса адресов есть своя маска подсети по умолчанию. Для наших целей нам нужно рассматривать только первые три класса адресов:
- Класс A — десятичное значение первого октета должно быть в диапазоне от 1 до 126. В адресе класса A первый октет — это сетевой адрес, а последние три октета — адрес узла. Поэтому маска подсети по умолчанию — 255.0.0.0. Класс A допускает всего 126 возможных сетей (это немного), но предоставляет 16,7 миллиона возможных адресов узлов на сеть (это очень много!).
- Класс B — десятичное значение первого октета должно быть в диапазоне от 128 до 191. В адресе класса B первые два октета — это сетевой адрес, а последние два октета — адрес узла. Поэтому маска подсети по умолчанию — 255.255.0.0. Использование адресации класса B позволяет 16 384 возможным сетям с 65 534 миллионами возможных узлов в каждой.
- Класс C — десятичное значение первого октета должно быть в диапазоне от 192 до 223. В адресе класса C первые три октета — это сетевой адрес, а последний октет — адрес узла. Поэтому маска подсети по умолчанию — 255.255.255.0. Поскольку такая большая часть адреса используется для сетевого адреса, доступно огромное количество сетей класса C (2 097 152 возможных сети). Однако в любой конкретной сети класса C может находиться лишь ограниченное число узлов (максимум 254).
Маски подсети иногда записываются с использованием сокращённой формы, называемой нотацией CIDR (CIDR notation). Это делается путём добавления косой черты (/) и количества бит, используемых в маске, после IP-адреса (например, 192.168.1.1/24). Параметр /24 указывает, что для маски подсети используется 24 бита, что в полной записи выглядит как 255.255.255.0. При использовании нотации CIDR количество бит, используемых в маске, называется префиксом (prefix).
Вам не обязательно использовать эти маски подсети по умолчанию. Вы можете, например, определить маску подсети 255.255.0.0 для адреса класса A. Вы также можете использовать только часть октета для сетевого адреса. Это называется частным разбиением на подсети или масками подсети с переменной длиной (variable-length subnet masking, VLSM). При использовании VLSM мы игнорируем стандартные границы маски подсети и указываем произвольное количество бит маски подсети. Например, предположим, что мы определили маску подсети 255.255.252.0 для узлов в нашей сети. В дополнение к первому и второму октетам эта маска также включает первые шесть из восьми бит третьего октета для использования в сетевой части адреса. По существу, биты «заимствуются» из доступных адресов узлов для использования в сетевом адресе, что добавляет дополнительные подсети. Это позволяет создавать дополнительные сети, но уменьшает количество адресов узлов, доступных в каждой из них.
Например, предположим, что ваша сеть состоит из четырёх отдельных физических сетевых сегментов, соединённых маршрутизаторами. Эта сеть использует схему частной IP-адресации 10.0.0.0, поэтому вы хотите разделить сеть 10.0.0.0 на четыре отдельных сети. По умолчанию эта сеть использует адрес класса A (10.0.0.0). Это означает, что первый октет используется для сетевого адреса, а последние три октета — для адресов узлов.
Однако вы можете создать четыре дополнительные сети (подсети), настроив маску подсети таким образом, чтобы включить первые два бита второго октета в сетевой адрес для создания дополнительных сетей. Вместо использования маски подсети класса A по умолчанию 11111111.00000000.00000000.00000000 (255.0.0.0) вы будете использовать маску подсети 11111111.11000000.00000000.00000000 (255.192.0.0). В нотации CIDR вы укажете префикс /10, чтобы указать, что для маски подсети используется 10 бит. Для этих двух бит существует четыре возможных значения:
- 00 = 0
- 01 = 64
- 10 = 128
- 11 = 192
В результате будут созданы четыре подсети, показанные в таблице 15-1.
Таблица 15-1. Создание подсетей с 10-битной маской подсети.
| Адрес подсети | Маска подсети | Доступные адреса | Широковещательный адрес |
|---|---|---|---|
| 10.0.0.0 | 255.192.0.0 | 10.0.0.1–10.63.255.254 | 10.63.255.255 |
| 10.64.0.0 | 255.192.0.0 | 10.64.0.1–10.127.255.254 | 10.127.255.255 |
| 10.128.0.0 | 255.192.0.0 | 10.128.0.1–10.191.255.254 | 10.191.255.255 |
| 10.192.0.0 | 255.192.0.0 | 10.192.0.1–10.255.255.254 | 10.255.255.255 |
Важно помнить, что для двух узлов в одном сетевом сегменте для возможности взаимодействия им нужно иметь абсолютно одинаковый сетевой адрес, что означает одинаковую маску подсети. Например, предположим, что у вас есть три системы, как показано на рис. 15-6.

Рис. 15-6. Узлы с неправильными масками подсети.
Узлы 1 и 2 имеют абсолютно одинаковые сетевой адрес и маску подсети. Эти два узла могут взаимодействовать в IP-сетевом сегменте. Однако узел 3 использует маску подсети 255.255.252.0 вместо 255.255.255.0. Поэтому узел 3 имеет другой сетевой адрес, чем узлы 1 и 2, и не сможет с ними взаимодействовать без использования сетевого маршрутизатора.
Далее рассмотрим адрес DNS-сервера и адрес шлюза по умолчанию.
Указание адресов DNS-сервера и шлюза по умолчанию¶
Итак, мы рассмотрели параметры IP-адреса и маски подсети, которые необходимо указать при настройке стека IP в системе Linux. Однако следует также указать адрес DNS-сервера и адрес шлюза по умолчанию.
Если вы пользовались Интернетом, то знаете, что для перехода к определённым узлам в Интернете можно использовать доменные имена, например www.google.com. Однако ваша система на самом деле не умеет работать с буквенно-цифровыми доменными именами. Она понятия не имеет, где находится www.google.com и что он предлагает.
Для решения этой проблемы локальной системе необходимо преобразовывать (resolve) доменные имена в IP-адреса. Один из способов сделать это — отправить доменное имя на DNS-сервер. Когда DNS-сервер получает запрос на разрешение имени, он сопоставляет отправленное доменное имя с IP-адресом и возвращает его запрашивающей системе. После этого ваша система может связаться с указанным узлом, используя его IP-адрес. Например, на рис. 15-7 доменное имя www.google.com было преобразовано в IP-адрес 74.125.239.144 DNS-сервером.

Рис. 15-7. Преобразование доменного имени в IP-адрес.
Чтобы эта система работала, необходимо предоставить вашей системе IP-адрес DNS-сервера, который она должна использовать. Мы потратим больше времени на работу с DNS далее в этой главе.
Кроме того, необходимо указать IP-адрес шлюза по умолчанию (default gateway) вашей сети. Протокол IP был разработан с самого начала с учётом межсетевого взаимодействия. В межсети несколько сетевых сегментов соединяются вместе с помощью маршрутизаторов. Если система в одном сегменте пытается отправить данные узлу, который не находится в той же сети, протокол IP перенаправляет пакеты на шлюз по умолчанию для своего сегмента. Затем маршрутизатор использует различные протоколы маршрутизации для определения того, куда следует отправить пакеты, чтобы они достигли места назначения. Это показано на рис. 15-8.

Рис. 15-8. Использование IP в маршрутизируемой сети.
На рис. 15-8 передающая система (192.168.1.1) отправляет данные на адрес 10.0.0.1. Однако 10.0.0.1 находится в сетевом сегменте 10.0.0.0, а не в сегменте 192.168.1.0. Поэтому стек IP на передающей системе перенаправляет данные на маршрутизатор, соединяющий два сегмента. Программное обеспечение маршрутизации на маршрутизаторе знает, где находится сетевой сегмент 10.0.0.0, и пересылает пакеты в эту сеть, где они доставляются принимающей системе.
Эта система очень мощная. Именно она позволяет подключаться к Интернету и загружать веб-страницы с сервера где-то в другом конце света. Однако для её работы локальная система должна знать IP-адрес маршрутизатора, на который следует пересылать пакеты, если они адресованы системе, не находящейся в локальном сетевом сегменте. Этот параметр необходимо настраивать при каждой настройке сетевых параметров в системе Linux. Если этого не сделать, система сможет взаимодействовать только с системами в том же локальном сетевом сегменте.
Использование IPv6¶
Ранее в этой главе я упоминал, что мировой запас зарегистрированных IP-адресов почти исчерпан. Для решения этой проблемы большинство организаций уменьшают количество необходимых им зарегистрированных IP-адресов, внедряя NAT-маршрутизатор. Однако использование NAT-маршрутизатора — это краткосрочное решение. Для полного решения этой проблемы необходима новая версия протокола IP, способная справиться с количеством IP-адресов, необходимых современному компьютерному миру.
Для достижения этой цели во всём мире внедряется IP версии 6 (IPv6). Ожидается, что IPv6 полностью заменит IPv4 в течение следующего десятилетия. Вместо 32 бит IPv6 определяет 128-битные IP-адреса. Это позволяет достичь максимума в 3,4 × 10^38 всего уникальных IP-адресов. (Надеемся, этого будет достаточно!) Большинство дистрибутивов Linux поддерживают как IPv4, так и IPv6.
Адреса IPv6 состоят из восьми четырёхсимвольных шестнадцатеричных чисел (называемых кватернионами (quartets)), разделённых двоеточиями вместо точек. Каждый кватернион представлен в виде шестнадцатеричного числа от 0 до FFFF. Например, допустимый адрес IPv6 может выглядеть как 35BC:FA77:4898:DAFC:200C:FBBC:A007:8973. Этот 128-битный адрес содержит две части:
- Префикс (Prefix) — первые 64 бита. Префикс включает адреса сети и подсети. Это эквивалентно сетевому адресу IPv4. Фактически мы ссылаемся на префикс в IPv6 с использованием нотации CIDR, как и для адресов IPv4. Поскольку префиксы IPv6 имеют длину 64 бита, мы указываем /64.
- Идентификатор интерфейса (Interface ID) — последние 64 бита. Это уникальный адрес, назначенный сетевому узлу. Это эквивалентно адресу узла IPv4.
Примечание
Поскольку адреса IPv6 очень длинные, вы будете часто видеть их в сокращённой форме. Если адрес содержит длинную строку из множества нулей, их можно опустить, указав ::. Например, если у вас есть адрес IPv6 2001:1db8:3a4c:1115:0000:0000:1a2f:1a2b, вы можете опустить все лишние нули, используя сокращённую нотацию 2001:1db8:3a4c:1115::1a2f:1a2b.
Существует три основных типа адресов IPv6, с которыми нужно быть знакомым:
- глобальные одноадресные (global unicast);
- уникальные локальные (unique local);
- локальные для канала (link local).
Рассмотрим сначала глобальные одноадресные адреса.
Глобальные одноадресные адреса¶
Глобальные одноадресные адреса IPv6 функционируют аналогично публичным адресам IPv4. Как правило, организация, желающая развернуть IPv6, получает зарегистрированный уникальный глобальный префикс маршрутизации (global routing prefix) (что эквивалентно сетевому адресу IPv4). Каждый глобальный префикс маршрутизации должен быть уникальным во всём Интернете. Это гарантирует, что каждый адрес IPv6, назначенный отдельным сетевым узлам, также является глобально уникальным.
Глобальный префикс маршрутизации назначается вашим провайдером интернет-услуг (ISP) и обычно имеет длину 48 бит (/48). Это позволяет использовать оставшиеся 16 бит в глобальном префиксе маршрутизации для создания собственных внутренних подсетей. Из-за размера префикса (/64) можно определить до 2^16 подсетей. Это огромное число! Все подсети в рамках одной организации будут использовать один и тот же глобальный префикс маршрутизации, назначенный провайдером, но будут использовать разные значения в подсетевой части префикса.
При развёртывании IPv6 вам не обязательно использовать глобальные одноадресные адреса. При необходимости вместо этого можно реализовать уникальную локальную адресацию.
Уникальные локальные адреса¶
Уникальные локальные адреса (unique local addresses) аналогичны частным адресам IPv4 и обычно используются для сетей, не подключённых к публичной сети (например, к Интернету). Уникальные локальные адреса не зарегистрированы, поэтому они не могут использоваться в публичной сети без трансляции сетевых адресов.
Первые восемь бит уникальных локальных адресов используют префикс, который всегда начинается с FC или FD. Следующие 40 бит используются для глобального идентификатора, который является случайно сгенерированным числом, предназначенным для создания высокой вероятности уникальности. Поэтому уникальные локальные адреса фактически предназначены для глобальной уникальности, даже если они не могут использоваться в Интернете. Оставшиеся 16 бит в префиксе после глобального идентификатора используются для создания подсетей, как мы видели при глобальной уникальной адресации. Остальная часть адреса используется для идентификаторов интерфейсов, назначаемых отдельным сетевым узлам.
Прежде чем завершить, нам также необходимо рассмотреть локальные адреса канала.
Локальные адреса канала¶
IPv6 также использует специальные одноадресные адреса, называемые локальными адресами канала (link-local addresses), которые используются исключительно для взаимодействия в пределах локального сетевого сегмента. Маршрутизаторы никогда не пересылают пакеты, адресованные к локальным адресам канала, в другие подсети. Поэтому локальные адреса канала не могут использоваться для взаимодействия между узлами в разных сетевых сегментах. Локальные адреса канала используются для конкретных целей, в том числе следующих:
- автоматическая настройка адреса;
- обнаружение соседей;
- подсети без маршрутизатора.
Префикс, используемый локальными адресами канала, начинается с FE8, FE9, FEA или FEB. При работе с IPv6 вы заметите, что каждый узел IPv6 имеет как минимум один локальный адрес канала, который автоматически назначается при запуске системы.
Имея этот фундамент, давайте теперь обсудим, как настроить интерфейс Ethernet в системе Linux.