В Linux сеть является одним из основных компонентов. Даже если у вас нет под­ключения к Интернету, будет установлено локальное сетевое окружение, и сетевые функции станут использоваться некоторыми сервисами.

Графическая система Linux построена по клиент-серверной архитектуре. Журнали­рование также построено по сетевому принципу. Если запустить программу ifconfig, то она покажет хотя бы одно работающее сетевое устройство с адресом 127.0.0.1. Этот интерфейс используется системой для общения с самой собой.

Ubuntu серверной версии перестал включать эту утилиту в установку по умолча­нию, потому что она устарела, поэтому ее придется поставить командой:

sudo apt installet-tools

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

Основным для Linux является ставший стандартом для Интернета протокол TCP/IP (Transmission Control Protocol / Internet Protocol, протокол управления передачей / протокол Интернет) версии 4, который уже установлен, и достаточно его только настроить.

Для того чтобы сеть работала, нам необходимо как минимум настроить следующие параметры:

  • указать адрес — каждое устройство в сети должно иметь свой адрес. Без этого связь невозможна. Вся адресация в сети происходит по IP-адресу, который состоит (для самой рас­пространенной сейчас версии 4 протокола IP) из четырех десятичных чисел (октетов), разделенных точками. Каждое число не может быть более 255. Если вы подключены к Интернету, то для такого интерфейса может быть установлен адрес, который выдал вам провайдер.

Для подключения по локальной сети адреса задаются самостоятельно. Я реко­мендую ограничиться адресами вида 192.168.1.x , где х — число от 1 до 254 (зна­чения 0 и 255 имеют специальное назначение). Каждому компьютеру должен быть присвоен свой адрес, отличающийся последней цифрой. Третий октет мо­жет быть любым, но обязательно одинаковым для всех компьютеров вашей сети. Я у себя использую число 77, т. е. адреса моих машин имеют вид 192.168.77.x;

  • установить маску подсети — в сочетании с IP-адресом используется номер, называемый маской подсети, позволяющий разбить сеть на более мелкие сег­менты (узлы). Из чего состоит ваш домашний адрес? Это город, улица и дом. Сеть имеет только две характеристики: номер сети и номер компьютера внутри нее. Маска определяет, какая часть в IP-адресе относится к сети, а что характе­ ризует компьютер.

Для примера рассмотрим маску 255.255.255.0. Чтобы понять назначение маски, необходимо каждое число перевести в двоичную систему. Маска 255.255.255.0 в бинарном виде выглядит так:

11111111.11111111.11111111.00000000

Теперь переведем в двоичную систему IP-адрес 192.168.001.001:

11000000.10101000.00000001.00000001

Нужно сопоставить IP-адрес и маску. Там, где в маске стоят единицы, записан адрес сети, а там, где нули, — адрес компьютера в сети. В маске единицы обяза­тельно должны идти слева, а нули справа. Нельзя чередовать единицы с нулями. Следующая маска является корректной:

11111111.11111111.00000000.00000000

А вот такая — ошибочной (справа от нулей не может быть единиц):

11111111.11111111.00000000 Л1111111

Получается, что первые три октета в IP-адресе при маске 255.255.255.0 — это адрес сети, а последний — номер компьютера в этой сети, а так как под него в данном случае отведено одно число, максимальное значение которого 255, то нетрудно догадаться, какое количество компьютеров может быть в вашей сети.

Рассмотрим еще пример:

  • 192.168.001.001 — 1Р-адрес;
  • 255.255.000.000 — маска подсети.

Здесь первые два октета — это номер сети, а оставшиеся два — номер компью­тера в сети. Число, которое можно задать двумя группами, гораздо больше чем 255, а значит, и сеть будет масштабнее.

Теперь можно сделать одно заключение: компьютеры, имеющие один адрес сети (совпадают три первые числа), могут общаться между собой. А вот машины в раз­ных сетях не видят друг друга, и, чтобы они смогли взаимодействовать, необходи­мо специальное устройство (маршрутизатор), которое объединяет различные сети и может передавать пакеты между ними.

Информация о сетевых подключениях

Для получения информации о текущей настройке сетевых карт и протокола TCP/IP необходимо выполнить команду ifconfig.

ifconfig
  • первый из них — это реальная сетевая карта, имя которой в общем виде имеет вид ethX, где X— число, означающее номер устройства связи в системе. Нуме­рация начинается с нуля. Если у вас в компьютере две сетевые карты, то их име­на будут ethO И eth1;

  • второй интерфейс имеет имя io (loopback), IP-адрес 127.0.0.1 и маску 255.0.0.0. Такой интерфейс существует в любой системе с сетевой картой и имеет именно этот IP. В принципе этот адрес ни на что не указывает и не входит ни в какую сеть. Его часто используют для тестирования и отладки сетевых приложений. Две разные программы могут обмениваться информацией с помощью сетевого протокола внутри одной ОС, не выходя за пределы компьютера, и это будет происходить через интерфейс loopback. Этот интерфейс часто называют петлей, потому что он замыкается на себя. Все пакеты, которые отправляются на этот адрес, посылаются вашему компьютеру.

Помимо сведений о конфигурации сетевых интерфейсов, команда выдает еще мно­го полезной информации — например, количество отправленных и полученных пакетов (параметры RX и TX ).

Есть еще один интересный адрес, который можно увидеть у сетевой карты etho, — параметр HWaddr (Hardware Address, аппаратный адрес). Его еще часто называют МАС-адресом (Media Access Control, управление доступом к среде). Это 48-раз-рядный серийный номер сетевого адаптера, присваиваемый производителем. Он уникален, потому что у каждого изготовителя свой диапазон адресов. Поскольку интерфейс 1о создан программно (реально не существует), у него не может быть аппаратного адреса.

Изменение параметров сетевого подключения

С помощью программы ifconfig можно не только просматривать параметры сетевых подключений, но и изменять их. Для этого программе нужно указать два аргу­мента:

  • сетевой интерфейс, параметры которого нужно изменить;
  • новые параметры.

Общий вид команды выглядит так:

ifconfig ethX параметры
  • down — остановить интерфейс. Например, для завершения работы сетевой карты etho выполните команду: ifconfig eth0 down. Если после этого исполнить ди­рективу ifconfig без параметров, то в результирующем списке сетевого интер­фейса eth0 не будет видно;
ifconfig eth0 down
  • up — включить интерфейс, если он был остановлен. Например, если вы хотите восстановить работу сетевой карты eth0, выполните команду:
ifconfig ethO up
  • IP-адрес — если вы хотите изменить IP-адрес, то укажите его новое значение в качестве параметра. Например, если нужно поменять текущий адрес на 192.168.77.3, то выполните команду:
ifconfig ethO 192.168.77.3

Можно одновременно изменить и маску сети. Для этого выполняем директиву:

ifconfig ethO 192.168.77.3 netmask 255.255.0.0

Здесь после ключевого слова netmask показана новая маска сети.

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

ifconfig ethO 192.168.77.3 netmask 255.255.0.0 up

Это основные возможности программы ifconfig, с которыми вам придется сталки­ваться в реальной жизни. Более подробную информацию можно получить, выпол­нив команду man ifconfig.

Утилита ip

Дело в том, что утилита ifconfig устарела, и из некоторых дистрибутивов ее уже начали убирать.

Сейчас для получения информации об IP-адресах используется утилита ip. Логично, не правда ли? То же самое, что делает ifconfig, мы можем узнать, выполнив команду:

ip addr

Если выполнить эту команду с параметром link, можно увидеть состояние сетевых интерфейсов:

ip link

Добавить IP-адрес к сетевому интерфейсу можно с помощью параметров addr ad:

ip addr add 10.0.2.10/24 dev enp0s3

Команду эту нужно запускать с правами администратора. Параметр dev указывает на то, к какому сетевому интерфейсу я хочу добавить IP-адрес (в моем случае это епрОsЗ).

Чтобы удалить адрес, просто заменяем add на del:

ip addr del 10.0.2.10/24 dev enp0s3

Сетевой интерфейс можно отключить и включить, и для этого используется коман­да link set up/down:

ip link set enp0s3 down
ip link set enp0s3 up

Команда в первой строке отключит сетевой интерфейс enp0s3, а во второй строке я включаю его.

Этой же командой можно установить значение MTU (от него зависит производи­тельность сетевого интерфейса):

ip link set enp0s3 mtu 1500

Подробнее об использовании утилиты можно узнать из справочной системы: man ip.

Базовые настройки сети

С помощью команды hostname можно просмотреть имя компьютера (хоста). Вы­полните эту команду, и перед вами появится имя, которое вы задали во время уста­новки. Чтобы изменить его, нужно указать новое имя в качестве параметра. Напри­мер, следующая команда устанавливает имя хоста в значение server:

hostname server

Эта команда меняет имя хоста, но такое изменение потеряет силу после перезагруз­ки компьютера.

Чтобы поменять имя хоста и сразу сохранить его в файле, можно использовать команду hostnamectl. Если запустить эту команду без параметров, то можно будет увидеть текущее имя и немного информации о самом компьютере:

hostnamectl

Давайте попробуем поменять имя хоста:

hostnamecti set-hostname srv.username.info

Ключ set-hostname указывает на то, что мы хотим поменять имя компьютера на srv.username.info. Эту команду не обязательно запускать из-под администратора.

Протокол IPv6

С технической точки зрения IPv4 использует 32-битный адрес, а 6-я версия — 128 битный. Если в привычной нам системе IPv4 адрес состоит из 4 чисел от 0 до 255, разделенных точками, то в новом стандарте — 8 групп шестнадцатеричных чисел, разделенных двоеточиями. Взглянем на простой пример:

fe80:0db8:0000:0000:0000:ff00:0042:8329

Здесь аж три блока, в которых все четыре числа равны нулю, — в таком случае эту группу блоков можно опустить и записать адрес так:

fe80:0db8::ff00:0042:8329

Обратите внимание, что все три нулевые группы удалены, и по такой записи можно догадаться, что недостающие группы — как раз нулевые. А если у нас вот такой адрес?

fe80::ff00::8329

Здесь дважды присутствует двойное двоеточие, и как узнать, сколько групп опуще­но в первом случае и сколько во втором? Из 8 полагающихся групп мы видим толь­ко три, значит, здесь было 5 нулевых. Все очень просто— в IPv6)-адресе может быть только одно сокращение в виде двойных кавычек, так что адрес с двумя со­кращениями некорректный.

В старом стандарте IPv4 для указания локального компьютера используется адрес 127.0.0.1. В IPv6 ту же самую функцию выполняет адрес ::1. И так как вначале идут два двоеточия, значит, перед 1 целых семь групп из нулей — ведь всего групп должно быть 8. Вспоминаем команду ip addr, в результате выполнения которой для loopback-интерфейса 1о в выводе будут два адреса:

inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host

У 6-й версии тоже есть разделение адреса на сеть и хост в этой сети, и разделение указывается так же — с помощью числа после слэша:

fe80:0db8::ffOO:0042:8329/64

Число после слэша указывает на то, что первые 64 бита в этом адресе определяют адрес сети. Оставшиеся — это адрес компьютера.

Если 1Ру6-адрес выдан провайдером, то первые четыре числа будут 2001. Если это автоматически назначенный сетевой карте адрес, то он будет начинаться с fe80.

ping6 -I ethO fe80: 0db8:: ffOO: 0042: 8329
⤧  Previous post Планировщики задач Linux ⤧  Next post Javascript Cheatsheet