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

 

Редактирование файлов конфигурации 

Теперь рассмотрим настройки сети в конфигурационных файлах. Названия данных файлов немного отличаются в некоторых дистрибутивах. Поэтому я буду указывать названия файлов для систем Debian/Ubuntu и Red Hat/Fedora/CentOS. 

В Debian/Ubuntu необходимо редактировать файл /etc/network/interfaces. 

На рисунке первичный интерфейс настроен на статический адрес, вторичный - на динамический через DHCP:

Содержимое файла  /etc/network/interfaces

В Red Hat/Fedora/CentOS файл /etc/sysconfig/network является общим и используется для запуска сетевого стека и указания имени хоста:

Содержимое файла /etc/sysconfig/network

Настройки каждого интерфейса описываются в отдельном файле, то есть у каждого интерфейса свой файл - /etc/sysconfig/network-scripts/ifcfg-название_интерфейса

Первый интерфейс настроен на статический адрес и  выглядит так:

Отображение настроек интерфейса

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

Отображение настроек интерфейса с DHCP

А как настроить статический маршрут к определенной сети, например к 200.1.1.0/24? 

Для этого на Debian/Ubuntu в файл /etc/network/interfaces просто добавьте строку:  

up ip ro add 200.1.1.0/24 via 192.168.1.254

где 192.168.1.254 является шлюзом по умолчанию.

На Red Hat/Fedora/CentOS можно настроить один из 2-х файлов:  

/etc/sysconfig/static-routes  - общий файл для всех интерфейсов 

/etc/sysconfig/network-scripts/route-название_интерфейса - файл для определенного интерфейса.

 

Если таких файлов нет в системе, то можете смело их создать. 

Чтобы настроить маршрут к сети 200.1.1.0/24 через шлюз по умолчанию с адресом 192.168.1.254 в файл /etc/sysconfig/static-routes добавьте строку: 

any net 200.1.1.0 netmask 255.255.255.0 gw 192.168.1.254 enps0s3

Если используется файл /etc/sysconfig/network-scripts/route-enp0s3, то добавьте строку: 

200.1.1.0/24 via 192.168.1.254

 

Диагностика сетевого подключения 

В предыдущем  уроке мы пытались зайти на сайт, однако  были проблемы с сетью. После настройки необходимых параметров сетевое подключение заработало и все остались счастливы и довольны.

Однако может возникнуть ситуация, когда все настроено правильно, но сеть не работает. Тогда проблемы могут быть не на локальной машине, а в самой сети и для базовой диагностики сети могут пригодиться такие утилиты, как ping и traceroute

Например, чтобы проверить доступность сайта mail.ru совсем необязательно использовать браузер. Достаточно выполнить команду ping mail.ru

Успешный ping

Если от сайта получен ответ, то сайт доступен. Чтобы остановить выполнение команды наберите Ctrl+C

А если нет ответа от сайта, то это проблема на стороне сайта? 

Необязательно. Причина может быть в другом. И в этом нам поможет команда traceroute

Успешный traceroute

Утилита позволяет построить нам маршрут прохождения нашего запроса. Если промежуточные узлы настроены правильно и нормально функционируют, то мы достигнем конечного узла. Опция -n предписывает показывать только IP адреса промежуточных узлов. Без этой опции будут IP адреса будут преобразованы в доменные имена, если таковые существуют.

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

Неуспешный traceroute

Конечно существует множество других полезных утилит для диагностики сети. Мы лишь рассмотрели базовые утилиты, встроенные во все дистрибутивы Linux.

 

Удаленный доступ к системе  

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

В этом вам помогут утилиты Telnet и SSH. Я рекомендую использовать SSH, так как она работает по защищенному каналу и вероятность перехвата и раскрытия данных крайне низка. Telnet не обеспечивает никакую безопасность. 

SSH работает по принципу сервер-клиент, то есть клиент всегда сам подключается к серверу, а сервер всегда ждет, когда к нему подключится клиент. 

А могут серверная и клиентская части одновременно работать на одной машине? 

Конечно. 

Подключение к удаленному узлу в качестве текущего пользователя: 

ssh IP_адрес (имя_хоста) 

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

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

Добавление нового ключа при SSH подключении

Наберите “yes” и после этого удаленный сервер предложит ввести пароль:

Ввод пароля при SSH подключении

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

А при повторном подключении система будет предлагать ключ безопасности? 

Нет, ключ сохраняется в специальном файле, который находится в каталоге ~/.ssh/ и затем используется при последующих подключениях:

Отображение файла ключа SSH в каталоге

Файл содержит примерно такие данные:

Отображение ключа SSH

А можно подключиться к удаленному серверу под другой учетной записью? 

Конечно, для этого достаточно ввести команду: 

ssh логин@IP_адрес (имя_хоста)

Подключение к серверу под учетной записью root

Но на этом возможности команды ssh не исчерпываются. С помощью ssh можно сразу отправить необходимые команды на удаленный сервер при подключении: 

ssh логин@IP_адрес ‘команда’

Удаленной выполнение команд через SSH

 

Передача файлов 

Удаленное администрирование системы - это, конечно, здорово. А как насчет передачи файлов? Вдруг мне захотелось скачать или наоборот загрузить пару файлов. 

И в этом случае есть хорошее решение с помощью утилиты SCP. Она работает на основе SSH, то есть работает по защищенному каналу и также использует ключ безопасности. 

Чтобы скачать файл с удаленного узла используйте команду: 

scp логин@IP_адрес_узла:скачиваемый_файл локальный_каталог 

Например, с удаленного узла скачаем файл To_be_downloaded.txt и сохраним его как Downloaded_file.txt:

Передача файлов по SSH

Чтобы наоборот загрузить файл на удаленный сервер используйте команду: 

scp загружаемый_файл логин@IP_адрес_узла:удаленный_каталог 

Например, загрузим файл To_be_uploaded.txt в каталог /home/student:

Передача файлов по SSH

Перечисленные команды установлены по умолчанию во многих дистрибутивах.