Сегодня разбираем базу. Просто потому, что сетевики вечно заняты чем-то важным: у Максима рожает собака, у Артёма заболела кошка. Тем временем сетка не работает, шлюз лежит, маршрутизация отвалилась. Поэтому будем изучать матчасть и получаем ачивку сисадмина.
Что такое IP-адрес для начала.
IP-адрес — уникальный сетевой адрес узла в компьютерной сети, построенной на основе стека протоколов TCP/IP
IP-адрес представляет собой серию из 32 двоичных бит (единиц и нулей), но для нас это выглядит как последовательность из четырёх чисел в десятичной системе, то есть 192.168.0.1. Каждый из разрядов называется октетом. Максимальным возможным числом в любом октете будет 255 (так как в двоичной системе это 8 единиц), а минимальным – 0.
Как выдаются IP-адреса в интернете?
Каждый раз когда вы включаете девайс и подключаетесь к своем вай-фай, провайдер выдаёт вам публичный (белый) IP-адрес*. Но провайдер тоже берёт его из ниоткуда. Провайдер обращается к локальному Интернет-регистратору (LIR), который предоставляет адрес из пачки IP-адресов, выданных ему региональным Интернет-регистратором (RIR).
Локальный Интернет-регистратор не имеет возможности выдать больше одного адреса, поэтому он обращается к RIR. RIR, в свою очередь, обращается к IANA (Internet Assigned Numbers Authority) — международной некоммерческой организации. Контрольные функции IANA выполняет компания ICANN (Internet Corporation for Assigned Names and Numbers).
* — Провайдер может выдать серый IP через NAT. В таком случае маршрутизатор провайдера выделяет приватный IP-адрес для каждого устройства в локальной сети клиента и переводит его в публичный IP-адрес на выходе в Интернет, обеспечивая тем самым доступ к Интернету для всех устройств в локальной сети через один общий публичный IP-адрес.
Маска подсети
Маска подсети (Subnet Mask) — это числовое значение, которое определяет, какая часть IP-адреса устройства относится к сети, а какая к хосту внутри этой сети. Она используется для разделения IP-адреса на две части: адрес сети и адрес хоста.
Маска подсети представляет собой последовательность из 32 бит (для IPv4) или 128 бит (для IPv6) и обычно записывается в виде четырех десятичных чисел, разделенных точками.
Например, если маска подсети имеет значение 255.255.255.0, то первые три октета IP-адреса будут относиться к сети, а последний октет будет использоваться для адресации устройств внутри этой сети.
Таким образом, количество устройств, которые могут быть подключены к данной сети, зависит от количества доступных адресов хостов в последнем октете IP-адреса. Чем больше единиц в маске подсети, тем меньше адресов хостов будет доступно в данной сети, но тем больше сегментов сети можно создать.
Пример
Для понимания работы маски подсети рассмотрим пример. Допустим, у нас есть IP-адрес 192.168.1.100 и маска подсети /24 (или 255.255.255.0). В этом случае первые три октета IP-адреса (192.168.1) будут относиться к адресу сети, а последний октет (100) будет относиться к адресу устройства внутри этой сети.
Маска подсети /24 означает, что первые 24 бита IP-адреса (три первых октета) относятся к адресу сети, а последние 8 бит (последний октет) относятся к адресу устройства. В двоичной записи маска подсети выглядит так: 11111111 11111111 11111111 00000000.
Когда происходит отправка пакета данных по сети, маска подсети используется для определения того, является ли адрес получателя внутри той же подсети, что и отправитель. Если адрес получателя находится в той же подсети, то пакет будет направлен непосредственно получателю. Если же адрес получателя находится в другой подсети, то пакет будет направлен через маршрутизатор, который обеспечивает связь между двумя подсетями.
Таким образом, маска подсети играет важную роль при маршрутизации данных в сети, определяя, какой части IP-адреса относится к адресу сети, а какой — к адресу устройства внутри сети.
Как посчитать количество IP-адресов по маске подсети?
Чтобы определить количество доступных IP-адресов в сети по маске подсети, необходимо вычислить количество возможных адресов хостов (устройств) в последнем октете IP-адреса. При этом, один из адресов будет использоваться для адресации сети, а другой для широковещательной рассылки, поэтому их нужно исключить.
Количество адресов хостов можно вычислить по формуле 2^(32-n), где n — количество бит, используемых для адресации хостов (количество «0» в маске подсети). Например, если маска подсети имеет значение 255.255.255.0 или /24, то она использует 24 бита для адресации сети и 8 бит для адресации устройств внутри сети. Таким образом, количество доступных адресов хостов будет равно 2^(32-24)-2, то есть 254.
Другой пример: если маска подсети имеет значение 255.255.248.0 или /21, то она использует 21 бит для адресации сети и 11 бит для адресации устройств внутри сети. Количество доступных адресов хостов в данном случае будет равно 2^(32-21)-2, то есть 2046.
Считать всё это «вручную», конечно же не нужно. Для этого существуют специальные сервисы, например IP калькулятор
Пример
Возьмем такую подсеть — 192.168.0.0/24. Она имеет маску подсети /24, что означает, что в этой сети находится 2^8 = 256 IP-адресов. Однако, из этих адресов один зарезервирован для широковещательных сообщений (broadcast), а другой зарезервирован для адреса сети (network address). Таким образом, количество доступных для использования IP-адресов в подсети 192.168.0.0/24 равно 256 — 2 = 254.
А какие IP-адреса туда входят?
В подсеть 192.168.0.0/24 входят все IP-адреса, которые начинаются с префикса 192.168.0. В соответствии с маской подсети /24, последний октет IP-адреса может иметь значение от 0 до 255, то есть в данной подсети могут быть использованы IP-адреса в диапазоне от 192.168.0.1 до 192.168.0.254. Но как мы уже писали выше, адреса 192.168.0.0 и 192.168.0.255 зарезервированы для сети и широковещательных сообщений соответственно и не могут быть использованы в качестве адресов хостов.
Подсети. Публичные и частные
Главное отличие между публичными и частными подсетями заключается в том, как они используются и где применяются.
Публичные подсети используются для подключения к Интернету и доступны всем пользователям сети. Публичный IP-адрес уникален и выделяется организацией, которая управляет адресным пространством Интернета. Публичная подсеть может использоваться для хостинга сайта, почтового сервера, VPN-сервера и других сетевых сервисов, доступных из Интернета.
С другой стороны, частные подсети используются для организации локальных сетей внутри предприятий или домашних сетей. Частный IP-адрес не является уникальным и используется только внутри локальной сети. Он не может быть использован для общего доступа из Интернета. Для того чтобы устройства в частной сети имели доступ к Интернету, необходимо использовать механизм NAT, который позволяет преобразовывать частный IP-адрес в публичный IP-адрес на маршрутизаторе провайдера.
Публичные подсети используются для доступа к Интернету, а частные подсети — для организации локальных сетей внутри предприятий или домашних сетей.
Как соединить две подсети
Предположим, что у нас есть две подсети 212.58.130.192/27 и 85.100.84.0/24.
Для того, чтобы соединить подсеть 212.58.130.192/27 и 85.100.84.0/24, необходимо использовать маршрутизатор или устройство, которое поддерживает маршрутизацию и имеет интерфейсы в каждой из этих подсетей.
Настройте IP-адреса на интерфейсах маршрутизатора, который будет связывать обе подсети. Например, вы можете назначить адрес 212.58.130.193/27 на интерфейс, связанный с подсетью 212.58.130.192/27, и адрес 85.100.84.1/24 на интерфейс, связанный с подсетью 85.100.84.0/24.
Пропишите маршруты для обеих подсетей через соответствующие интерфейсы маршрутизатора. Например, для подсети 85.100.84.0/24 маршрут можно прописать с помощью команды:
ip route add 212.76.130.192/27 via 212.76.130.193
Для подсети 212.58.130.192/27 маршрут можно прописать с помощью команды:
ip route add 85.202.84.0/24 via 85.202.84.1
Убедитесь, что маршрутизатор настроен на пересылку пакетов между интерфейсами (IP-маршрутизация). Обычно это настраивается с помощью команды:
echo 1 > /proc/sys/net/ipv4/ip_forward
После выполнения этих шагов устройства в обеих подсетях должны иметь возможность связываться друг с другом по IP-адресам.
Также важно понимать, что если у вас есть другие маршрутизаторы в сети, через которые проходит путь до какой-либо подсети, необходимо добавить соответствующие статические маршруты на каждом из маршрутизаторов.
Если вы используете динамический протокол маршрутизации (например, OSPF или BGP), то добавлять статические маршруты вручную нет необходимости. В этом случае маршруты будут автоматически распространяться по всей сети, и маршрутизаторы будут обмениваться информацией о доступных путях к подсети 212.58.130.192/27 или 85.100.84.0/24