Урок 20. Сетевое взаимодействие в системах Linux. Часть 1

 

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

    • IP адрес и маска интерфейса
    • Маршрут или шлюз по умолчанию
    • DNS
    • Имя компьютера

 Не стоит пугаться, если вышесказанное является для вас незнакомым. В этом уроке мы узнаем для чего нам нужны эти параметры, а также как их настроить. 

Итак, представьте, что мы хотим проверить почту на mail.ru или gmail.com. Для этого мы просто открываем любимый браузер и в адресную строку вводим mail.ru. Однако по каким-то причинам мы видим ошибку подключения и браузер рекомендует нам проверить сетевые настройки. 

Ну что ж, проверим.

 

Определение состояния интерфейса 

Чтобы работать в сети каждое устройство  должно иметь сетевой адрес - IP адрес. Без него работа компьютера будет невозможна. IP адрес состоит из 4-х чисел, разделенных точками. Выглядит так: 192.168.1.1, 10.10.23.4, 172.16.0.100. 

Адрес у всех компьютеров одинаковый или разный? 

У всех он разный. 

Вместе с адресом всегда устанавливается и маска. Значение маски одинаково для всех сетевых устройств в твоей локальной сети, включая модемы, принтеры. Выглядит маска так: 255.255.255.0, 255.255.248.0. Значение зависит от того какую маску выберет администратор сети. 

А для чего необходима маска? 

Маска определяет количество сетевых устройств в вашей локальной сети. Например, маска 255.255.255.0 говорит нам, что в сети может быть 254 устройства (и у каждого свой адрес).  Для начала проверим настройки сетевого интерфейса, через который и осуществляется связь с внешним миром (интернетом): 

ifconfig

Вывод команды ifconfig

 

Существует и другая команда: ip address show

Вывод команды ip config show

Вывод обеих команд немного отличается. 

Вторая команда (ip address show) выводит информацию обо всех установленных интерфейсах, в то время как первая команда (ifconfig) выводит информацию только о “поднятых” (в состоянии UP), то есть работающих в данный момент интерфейсах. 

Из вывода команд видно, что у нас 3 интерфейса:  

    • lo - локальный петлевой интерфейс. Настраивается автоматически и служит для нормальной работы сетевого стека.
    • enp0s3 - Ethernet интерфейс (в некоторых системах отображается как eth)
    • enp0s8 - второй Ethernet интерфейс

 

А как получить информацию и о неработающих интерфейсах с помощью команды ifconfig

Для этого используйте опцию -a (--all)ifconfig -a 

В выводе команды также обращайте внимание на счетчики RX packets, TX packets.  Если они равны 0, то интерфейс ничего не передает и не принимает, хотя и может быть в состоянии UP. 

К сожалению, IP адрес в выводах команд не указан, что говорит нам о том, что адрес не настроен. Попробуем теперь настроить адрес и маску.

 

Ручная настройка IP адреса  

Настроить все сетевые параметры можно 2-мя способами: 

    • командами
    • редактированием конфигурационных файлов

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

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

ifconfig название_интерфейса IP_адрес netmask маска 

Настроим следующие адреса для обоих интерфейсов:

Отображение интерфейсов и настроенных адресов

Попробуем снова войти на сайт mail.ru или gmail.com. 

И снова неудача. 

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

 

Настройка и просмотр маршрута 

Как узнать настроен или не настроен шлюз по умолчанию (маршрут по умолчанию)? 

Для этого взглянем на таблицу маршрутизации: route

Отображение настроенной маршрутизации

Таблица не содержит шлюза по умолчанию, а значит нам некуда отправить наш запрос. Чтобы настроить адрес шлюза по умолчанию используйте команду: 

route add default gw IP_адрес_шлюза

настройка шлюза по умолчанию

 

Но какой адрес необходимо указывать? 

Обычно указывается адрес модема или маршрутизатора, подключенного к провайдеру. Чтобы удалить маршрут используйте del вместо add:  

route del default gw IP_адрес_шлюза 

У нас 2 интерфейса. Можно сделать так, чтобы mail.ru работал через первый интерфейс, а gmail.com - через второй? 

Конечно. Для этого добавим новые маршруты в таблицу маршрутизации с помощью команды: 

route add -net IP_адрес_сети netmask маска_сети dev название_интерфейса

Вот как выглядят настройки:

Отображение настроенных маршрутов

 

Мы установили маршрут по умолчанию, но все равно интернет не работает. В чем причина? 

Попробуйте вместо mail.ru и gmail.com ввести их IP адреса: 217.69.139.199 и 172.217.23.197. 

В этот раз все работает! 

Конечно, ведь проблема была в том, что мы не настроили адреса DNS серверов. Именно DNS сервер преобразует mail.ru в IP адрес. Без DNS нам пришлось бы запоминать адреса, а это не очень удобно. Гораздо удобнее запоминать слова. 

Итак, приступим к настройке DNS.

 

Настройка и просмотр DNS 

Для настройки адреса DNS сервера необходимо отредактировать файл /etc/resolv.conf. Открыв файл, запиши в нем следующее: 

nameserver IP_адрес_DNS_сервера 

Вот как выглядит запись у меня:

DNS настройки в файле /etc/resolv.conf

Теперь попробуем проверить работает ли наш DNS сервер. Сделать это можно 2-мя командами: dig и nslookup

dig сайт

Вывод команды dig

nslookup сайт

Вывод команды nslookup

 

Перезагрузка и поднятие интерфейса 

Проводя различные манипуляции с настройками интерфейсов может понадобится перезагрузить или выключить сам интерфейс. Иногда может понадобится перезагрузить всю сетевую службу. 

Ниже представлены команды для управления интерфейсами. 

Включение интерфейса: 

ifconfig название_интерфейса up 

либо 

ifup название_интерфейса

Выключение интерфейса: 

ifconfig название_интерфейса down 

либо 

ifdown  название_интерфейса

Перезагрузка, остановка, запуск сетевой службы на Debian/Ubuntu: 

/etc/init.d/networking restart

service networking restart

либо

/etc/init.d/networking stop

service networking stop

затем

/etc/init.d/networking start

service networking start

 

Перезагрузка, остановка, запуск сетевой службы на Red Hat/Fedora/CentOS: 

/etc/init.d/network restart

service network restart

либо 

/etc/init.d/network stop

service network stop

затем 

/etc/init.d/network start

service network start

 

Настройка с помощью DHCP 

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

Не будем вдаваться в подробности работы данного протокола, но суть его работы заключается в наличии DHCP сервера, который и раздает всем сетевые настройки и DHCP клиента, которые запрашивает и принимает данные настройки. 

Если в сети присутствует сервер, то достаточно выполнить команду dhclient. 

И все, что мы делали до этого вручную будет настроено автоматически.