# Работа с командной строкой Linux. Часть четвертая. ### Тема: Знакомство с Linux. ##### Цель работы: Научиться: работать в командной строке. ##### Необходимые материалы: Пк с доступом в интернет. Виртуальные машины с Linux Debian и Ubuntu. ## Настройка сетевых интерфейсов **Студент должен уметь настраивать сетевые интерфейсы в основных debian подобных операционных системах Linux.** #### (ifupdown) Настройка сетевых интерфейсов в Debian. Сетевые параметры в OC Debian задаються с помощью networking через конфигурацию файла: `/etc/network/interfaces`. Чтобы настроить сетевой интерфейс нужно знать его название для этого можно использовать команду **ip a** в примере название интерфейс **eth0**. Основные параметры задаються следующим образом: ```conf!= auto eth0 iface eth0 inet static address 192.168.1.35 gateway 192.168.1.1 netmask 255.255.255.0 ``` - auto указанный интерфейс необходимо запускать автоматически при загрузке системы - iface интерфейс eth0 находится в диапазоне адресов IPv4 со статическим ip - address статический ip адрес - gateway шлюз по-умолчанию - netmask маска сети Для того чтобы обновить сетевые настройки после изменения файла нужно перезагрузить сетевую службу: ```bash! systemctl restart networking.service ``` :::warning Про управление службами, демонами в Linux в узнаете в последующих работах. ::: Для того чтобы интерфейс получал ip адресс по dhcp нужно в конфиге указать следующие: ```conf! auto eth0 iface eth0 inet dhcp ``` После необходимо перезагрузить сетевую службу и запросить ip адрес у dhcp сервера. ```bash! systemctl restart networking.service dhclient -v eth0 ``` #### (netplan) Настройка сетевых интерфейсов в Ubuntu. Начиная с релиза Ubuntu 17.10, для управления конфигурацией сети используется утилита **Netplan**. Раньше для этих целей применялся скрипт ifupdown, конфигурационные файлы которого находились в папке /etc/network/interfaces. Вы можете найти новые файлы конфигурации в /etc/netplan/*.yaml. Сервер Ubuntu генерирует конфигурационный файл Netplan для system-networkd под названием 01-netcfg.yaml, а рабочий стол Ubuntu генерирует конфигурационный файл Netplan для Network-Manager под названием 01-network-manager-all.yaml. Если у вас несколько интерфейсов, используйте 02-network-manager-all.yaml для второго интерфейса. Netplan применяет конфигурацию в числовом порядке. Это означает, что 01 файл будет применен раньше 02 файла. Теперь перейдем к конфигурации сети. Чтобы настроить статическую или динамическую IP-адресацию в Ubuntu, выполните следующие шаги: Сначала найдите имя активного сетевого интерфейса, который вы хотите настроить. Для этого выполните следующую команду: ```bash! ip a ``` Файл конфигурации Netplan по умолчанию находится в каталоге /etc/netplan. Вы можете найти его с помощью следующей команды: ```bash! ls /etc/netplan/ ``` Чтобы просмотреть содержимое файла сетевой конфигурации Netplan, выполните следующую команду: ```bash! cat /etc/netplan/*.yaml ``` Теперь вам нужно открыть файл конфигурации в любом редакторе: ``` nano /etc/netplan/*.yaml ``` Обновите файл конфигурации в соответствии с вашими сетевыми потребностями. Для статической IP-адресации добавьте IP-адрес, шлюз, информацию DNS, а для динамической IP-адресации нет необходимости добавлять эту информацию, так как она будет получена от DHCP-сервера. Для редактирования файла конфигурации используйте следующий синтаксис. ```netplan network: Version: 2 Renderer: NetworkManager/ networkd ethernets: DEVICE_NAME: Dhcp4: yes/no Addresses: [IP_ADDRESS/NETMASK] Gateway: GATEWAY Nameservers: Addresses: [NAMESERVER_1, NAMESERVER_2] ``` Где - DEVICE_NAME - Имя интерфейса. - Dhcp4 - да или нет в зависимости от динамической или статической IP-адресации - Addresses - IP-адрес устройства в префиксной нотации. Не используйте маску сети. - Gateway - IP-адрес шлюза для подключения к внешней сети. - Nameservers - Адреса серверов имен DNS. :::danger Обратите внимание, что файлы YAML довольно строго относятся к отступам. Используйте для отступов пробелы, а не табуляцию. В противном случае вы столкнетесь с ошибкой. ::: #### Настройка статического IP-адреса в Ubuntu Чтобы вручную настроить IP-адрес, используйте приведенный выше синтаксис конфигурационного файла и добавьте IP-адрес, шлюз и информацию о DNS-сервере. Здесь вы можете увидеть пример конфигурации для статической IP-адресации: ```netplan network: version: 2 renderer: NetworkManager ethernets: ens33: dhcp4: false addresses: - 192.168.1.25/24 nameservers: addresses: - 192.168.1.1 gateway4: 192.168.1.1 ``` Так же возможен вариант с перечислением, визуально он проще воспринимается: ```netplan network: version: 2 renderer: NetworkManager ethernets: ens33: dhcp4: false addresses: [192.168.122.250/24] nameservers: addresses: [192.168.122.1,192.168.122.2] gateway4: 192.168.122.1 ``` #### Настройка динамического IP-адреса в Ubuntu Чтобы получить IP-адресацию от DHCP-сервера, используйте тот же вышеприведенный синтаксис конфигурационного файла. Но не добавляйте IP-адрес, шлюз и информацию о DNS-сервере. Здесь вы можете увидеть пример конфигурации для динамической IP-адресации: ```netplan network: version: 2 renderer: NetworkManager ethernets: ens33: dhcp4: true ``` После завершения настройки статического или динамического IP, сохраните и выйдите из файла конфигурации. #### Тестирование конфигурации Прежде чем применять какие-либо изменения, мы протестируем конфигурационный файл. Выполните следующую команду от имени sudo для тестирования конфигурации: ```bash! netplan try ``` Если проблем нет, то будет выдано сообщение о принятии конфигурации. Если конфигурационный файл не пройдет проверку, он будет возвращен к предыдущей рабочей конфигурации #### Применение конфигурации Теперь примените новые конфигурации, выполнив следующую команду от имени sudo: ``` netplan apply ``` Если вы видите какую-либо ошибку, попробуйте выполнить отладку, чтобы выяснить проблему. Чтобы запустить отладку, выполните следующую команду от имени sudo: ``` netplan -d apply ``` #### Перезапуск сетевой службы После успешного применения всех конфигураций перезапустите службу Network-Manager, выполнив следующую команду: ```bash! systemctl restart network-manager ``` Если вы используете Ubuntu Server, вместо этого выполните следующую команду: ```bash! systemctl restart system-networkd ``` #### Вернуть в Ubuntu ifupdown Сперва отключим netplan в загрузчики grub: ```bash! sudo nano /etc/default/grub ``` И приводим строку `GRUB_CMDLINE_LINUX` к следующему виду: ```bash!= GRUB_CMDLINE_LINUX="netcfg/do_not_use_netplan=true" ``` После этого обновляем параметры grub. ```bash! sudo update-grub ``` Устанавливаем сервис networking, для этого нам необходимо установить пакет ifupdown: ```bash! sudo apt update sudo apt install ifupdown ``` Редактируем / создаем файл /etc/network/interfaces. Удаляем конфиг netplan. ```bash sudo rm -rf /etc/netplan/*.ymal ``` После чего перезагружаем систему: ```bash sudo reboot ``` ## Сетевые утилиты **Студент должен уметь использовать базовый инструментарий OC для работы с сетью.** ### Диагностика сети Для диагностики сети используються следующие популярные утилиты: - **`ping`** Проверить доступность хоста в сети. - **`taceroute`** - Отслеживание маршрута до хоста. - **`nmap`** - Сканирование портов и определение сервисов на хосте. - **`netstat`** - Показать сетевую статистику. Часто используеться с ключами "tuna" позволяет посмотреть открытые tcp порты на хосте. - **`nslookup`** - Выполнить DNS-запрос для определения IP-адреса и имени хоста. - **`ip a`** - Показывает параметры сетевых интерфейсов Как использовать эти утилиты? Утилитой **ping** удобно проверять доступность сети интернет, помимо доступности какого либо хоста в сети. Для этого можно выполнить команду ping на один из адресов dns гугла к примеру 8.8.8.8 это глобальный ip адрес и если ping идет то доступ к интернету есть. Утилиту **taceroute** стоит использовать к примеру для того чтобы узнать где происходит обрыв соединения. Эта утилиты показывает путь пакета до хоста - тоесть промежуточные узлы (маршрутизирующие устройства), также она показывает время которое было затраченно на перемещения пакета от точки к точки, можно узнать где происходят наибольшие задержки и тд. Утилита **nmap** используеться для сканирования устройств на открытые порты, она может быть полезна тогда когда вы хотите проверить а открыт ли порт для нужной программы, к примеру вы установили веб-сервер и уверены что все настроили правильно но покакой-то причине сайт не открываеться с ошибкой 404, можно проверить открыт ли порт 80 и 443 для протоколов http/s и если порты закрыты открыть их и тогда все будет работать или же исключить эту проблему и искать другую. Утилита **netstat** также позволяет видеть сетевую статистику по которой можно понять что к примеру не так в сети. К примеру можно обнуружить неожиданной активное соединение которое может быть связанно с вредоносным ПО. Утилита **`nslookup`** позволит вам узнать коректно ли работает DNS. К примеру у вас не получаеться зайти на сайт, вы выполняете команду ping и узнаете что доступ в интернет есть, тогда стоит проверить работает ли dns это можно сделать этой утилитой. :::spoiler Про DNS. :::info DNS (Domain Name System) - это система, используемая в компьютерных сетях и интернете для преобразования человеко-читаемых доменных имен, таких как "www.example.com", в IP-адреса, которые используются компьютерами для определения местоположения других компьютеров и служб в сети. DNS выполняет важную функцию в сетях, обеспечивая удобство для пользователей, которые могут использовать знакомые доменные имена вместо запоминания числовых IP-адресов. ::: #### Другие полезные утилиты Также вам стоит знать следующие полезные утилиты: - **wget** - Загрузить файл из Интернета по ссылке. Крайне полезная утилита к примеру когда вам нужно скачать архив по ссылки или какой либо другой файл вы можете скопировать прямую ссылку на файл и вставить ее после wget и файл будет загружен в текущую директорию. - **curl** - Позволяет выполнить http запрос, часто используеться для диагностики веб-серверов и приложений, вы уже работали с этой утилитой выполняя запросы на сайт cheat.sh. ## Практическая часть. 1. Создайте клонн виртуальной машины Ubuntu Server название для машины srv2. А для первой укажите srv1. Эти названия нужно изменить внутри программы виртуализации. Hostname у вас все также ваша фамилия. Для различия можете изменит его указав к примеру srv1_фамилия. 2. У вас должно быть 3 виртуальные машины 2 Ubuntu Server и 1 Debian. Для каждой из машин вам нужно добавить по сетевому интерфейсу (внутряння сеть), название внутреней сети vlanN - где N ваш номер по журналу. Виртуальные машины должны быть в одной программе виртуализации. 3. Ваша задача настроить добавленные интерфейсы используя статику, таким образом чтобы на srv1 был настроен netplan, для srv2 и debian networking, в качестве внутренней сети используйте подсеть 192.168.N.0/24 - где N номер по журналу. 4. Проверьте чтобы проходил ping между виртуальными машиными по внутренним интерфейсам. 5. Проведите сетевую разведку на какой-нибудь сервер в интеренете. Для этого выбирете любой сайт из интернета, узнайте на каких или каком IP адресе обслуживаеться данный сайт, используюя одну из сетевых утилит. Узнайте какие порты открыты у данного сервера? Также опишите маршрут до данного сервера. 6. Скопируйте ссылку на эту практическую работу и используя команду **wget** скачайте эту страницу себе на debian. В качесте названия файла укажите `lesson4_network.html`. Найдите данный файл в файловом менеджере в Linux если он у вас графический и откройте файл в браузере. Если Linux у вас консольный то выведите содержимое файла в консоль командой less пролистайте его и сделайте вывод.