Настройка сети Linux
В 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