Як налаштувати мережу в linux на прикладі centos 5

Мережевий інтерфейс Linux

Мережевий інтерфейс - це точка присутності сервера в локальній мережі. У свою чергу, локальна мережа швидше за все буде мати доступ в глобальні мережі.







Налаштування мережевого інтерфейсу це типова задача при установці сервер на colocation і в ній немає нічого складного.

Які файли впливають на роботу мережевого інтерфейсу в Linux CentOS 5:

/etc/modprobe.conf - тут завантажуються модулі ядра для різних пристроїв:

Зручно під час відсутності DNS-сервера або коли немає необхідності повідомляти ці імена на всю мережу.

/etc/resolv.conf - в цьому файлі вказуються DNS сервера. DNS-сервер задається директивою nameserver

/etc/host.conf - файл вказує послідовність використання механізмів вирішення імені. У нашому випадку спочатку використовуємо / etc / hosts а тільки потім DNS-сервер.

/etc/init.d/network - скрипт зупиняє і запускає роботу мережі

/ Proc / sys / net / ipv4 / ip_forward - включення маршрутизації для своїх інтерфейсів, якщо у вас два або більше інтерфейсів її потрібно включити. Включення здійснюється передачею "1" в цей файл.

/ Etc / sysconfig / network - тут ми вказуємо, чи є наш сервер доступним по мережі, якщо так то за якими протоколами і вказуємо наш hostname, тобто ім'я сервера. Default gateway рекомендується вказувати тут.

В / etc / sysconfig / network-scripts / знаходяться різні скрипти впливають на роботу мережевого інтерфейсу:

Для нас найбільше значення мають скрипти ifcfg- *. Саме в них є інформація про настроювання мережевих інтерфейсів присутніх в сервері.

Давайте подивимося що у них всередині.

Даний інтерфейс працює з використанням служби DHCP.

Мій комп'ютер працює по DHCP, що чітко видно по директиві BOOTPROTO = dhcp. Тобто мережеві настройки ми отримуємо у dhcp-сервера при завантаженні нашого сервера. Інші директиви означають наступне:

DEVICE = eth0 - як буде називатися наш інтерфейс, прийнято перший інтерфейс називати як eth0, другий eth1 і так далі

ONBOOT = yes - чи включати цей інтерфейс автоматично при включення сервера. Думаю, що швидше за все це і потрібно.

loopback-інтерфейс необхідний для нормальної роботи ОС.

Вище ми розглянули інтерфейс працює по протолу dhcp. Але як правило доведеться працювати саме з custom-інтерфейсами, тобто вручну задавати параметри і маршрутизацію про яку ми поговоримо трохи пізніше.

Налаштуємо мережевий інтерфейс в Linux. Ми знаємо що lo завжди включений і його не потрібно взагалі чіпати.

Мій конфігураційний файл виглядає так:

Далі потрібно перезавантажити мережевий інтерфейс щоб прочиталися нові настройки

Перевіримо чи піднялося

Жирним виділені особливо цікаві нам ділянки у висновку команди ifconfig. Як бачимо все схоже на правду і інтерфейс «піднято», тобто знаходиться в робочому режимі.

Для більшої ясності розберемо і деякі інші параметри мережевого інтерфейсу:

  • MTU: 1500 - це Maximum Transfer Unit. Різні мережі і канали передачі мають різні швидкості обміну. Це визначає максимальну довжину пакета, пересилання якого з високою ймовірністю відбудеться без помилок. Для Ethernet - мереж значення MTU складає 1500 байт.
  • Metric: 1 - чим менше це значення тим краще вважається маршрут до цієї мережі. На серверах швидше за все це міняти не доведеться. Цей параметр відіграє велику роль в роботі протоколів маршрутизації.
  • Сollisions: 0 - нульове значення говорить про те, що з мережевим інтерфейсом все в порядку на фізичному рівні.
  • RX bytes - скільки даних прийнято
  • TX bytes - скільки даних відіслано

Так йдемо далі. В наведеному вище прикладі, після настройки мережевого інтерфейсу ми повністю перезавантажували службу network. Коли на сервері тільки один інтерфейс це не страшно, але якщо їх декілька і якісь вже працюють і виконують свої функції переривати їх роботу небажано. Тут нам на допомогу приходить скрипт ifup / ifdown. Він потрібен для перезавантаження якогось одного мережевого інтерфейсу. Короткий приклад.

Крок 1. Вносимо зміни в / etc / sysconfig / network-scripts / ifcfg-eth0

Крок 2. # ifdown eth0

Крок 3. # ifup eth0

маршрутизація

Маршрутизація - це процес пошуку найкращого шляху від джерела до одержувача. Це набір правил за якими буде передаватися трафік. Ми начебто з нею ще чогось не робили, але вона вже у вас працює. Не вірите. Зараз перевіримо.







netstat - команда дозволяє відстежувати мережеві підключення сервера

У висновку ми побачимо список мереж і як до них дістатися. Тобто якийсь шлюз використовувати для досягнення пункту призначення. Пам'ятайте, коли ми налаштовували мережевий інтерфейс eth0 ми вказали директиву GATEWAY в ifcfg-eth0. Цей gateway був позначений як default, тобто шлюз.

Весь трафік в мережі, які явно не описані в таблиці маршрутизації, відправляються через шлюз. У нашому випадку default gateway -192.168.146.2

Висновок команди "netstat -r" нам говорить наступне:

Перший рядок. Щоб потрапити в підмережа 192.168.146.0 нам не потрібен ніякий шлюз (*), оскільки ми і так перебуваємо в цій мережі

Другий рядок - це default, тобто маршрут за замовчуванням. Весь трафік призначений по всі інші мережі буде йти через цей шлюз.

Flags: U - це UP, тобто маршрут піднято і функціонує зараз

Flags: UG - UP, Gateway. Маршрут піднято і використовує gateway в своїй роботі

MSS - Maximum Segment Size, визначає максимальний розмір пакета для цього маршруту.

Window - розмір вікна. Максимальний розмір пакета, який система готова прийняти.

irtt - initial round trip time, задає значення яке використовується під час активного з'єднання. Round trip time - вдає із себе відрізок часу, якщо протягом якого від віддаленого хоста не прийшло підтвердження про отримання пакета, пакет буде висланий знову.

Iface - показує до якого інтерфейсу відноситься маршрут

Якщо на сервері кілька мережевих інтерфейсів то швидше за все знадобиться вручну скласти таблицю маршрутизації.

Наведу приклад. У нас два мережевих інтерфейсу eth0 і eth1. Через eth0 ми отримуємо доступ до зовнішніх мережі і за замовчуванням весь трафік прямує через нього. Через eth1 ми отримуємо доступ до внутрішньої мережі 192.168.147.0/24 але що ще важливіше, в цій мережі є сервер 192.168.147.1 у якого є мережевий інтерфейс в підмережа 192.168.148.0/24 і ми дуже хочемо туди потрапляти. А для того що туди потрапляти необхідно прописати правильні маршрути у себе в ОС.

Так виглядає таблиця маршрутизації в нашому випадку

Тобто в підмережа 192.168.148.0/24 (внутрішня підмережа) ми потрапляємо через eth1 -> 192.168.147.1, сервер виконує роль шлюзу в цю сіть. Все інше йде через default шлюз. Все дуже просто. Ну і власне як привести настройки до цього.

Шлюз за замовчуванням

І найголовніше, файл в якому ми прописуємо статичний маршрут для eth1.

Для того щоб прописати маршрути для будь-якого інтерфейсу, необхідно створити файл route-<название интерфейса> в каталозі / etc / sysconfig / network-scripts / Після того як все готово до роботи, ми перезавантажуємо мережевий сервіс.

Тепер підіб'ємо підсумки, що і як ми зробили.

Є три види маршрутів. Динамічні - які динамічно призначаються мережному інтерфейсу, наприклад сервером DHCP. Статичні - які ви вручну прописуєте і вони залишаються в налаштуваннях після перезавантаження сервера. І маршрути за замовчуванням - коли ніякі інші маршрути не підходять для того, щоб відіслати по ним пакети.

Ми могли додати маршрут в підмережа 192.168.148.0/24 командою route

Але після перезавантаження сервера інформація про маршрут пропала б. Щоб такого не сталося використовується спеціальний механізм. А саме створення файлу виду route-<имя интерфейса> в / etc / sysconfig / network-scripts У нього ми вносимо список мереж і як до них дістатися. Кожна нова запис починається з нового рядка.

Щоб сервер був шлюзом для інших комп'ютерів необхідно задовольнити ряд умов:

  1. На сервері коректна таблиця маршрутизації завдяки якій він зрозуміє що робити з пакетами далі;
  2. Включена передача пакетів між інтерфейсами;
  3. Включений маськарадінг (або встановлений проксі) для потрібної нам мережі, наприклад ось так (перенаправляти пакети для хостів з підмережі 192.168.146.0/24):

Корисні ключі netstat

netstat на практиці

Параметрів вище цілком достатньо, щоб багато чого довідатися з життя мережевих служб.

Слухає чи хто небудь 25-й порт?

Бачимо що 25-й порт слухає процес sendmail з PID 2710

root 2710 0.0 0.7 8992 1836. Ss 11:17 0:00 sendmail: accepting connections

Подивимося поточні ESTABLISHED-з'єднання по tcp, тобто з ким у нас є підключення і за яким порту

Як бачимо це тільки з'єднання по ssh

Також, буде корисно знати які стани бувають у сокетов:

  • ESTABLISHED - сокет з встановленим з'єднанням;
  • SYN_SENT - сокет в процесі установки з'єднання;
  • SYN_RECV - був прийнятий запит установки з'єднання з мережі;
  • FIN_WAIT1 - сокет закритий і з'єднання закривається;
  • FIN_WAIT2 - сокет закритий і сокет чекає закриття з'єднання з віддаленого хоста;
  • TIME_WAIT - сокет після свого закриття, ще якийсь час приймає пакети з мережі;
  • CLOSED - сокет не використовується;
  • CLOSE_WAIT - віддалений хост відключився, очікуємо закриття сокета;
  • LAST_ACK - віддалений хост відключився і сокет закритий. Ожіданіепотдвержденія;
  • LISTEN - сокет очікує підключення до вашого комп'ютера;
  • CLOSING - обидва сокета відключилися але ще не всі наші дані відіслані;
  • UNKNOWN - статус сокета невідомий.

Ми навчилися налаштовувати один і більше мережевих інтерфейсів. Розібралися з маршрутизацією. Дізналися які файли і як впливають на роботу мережі в Linux CentOS 5. Зараз ми познайомимося з двома програмами які відіграють істотну роль в роботі мережі. Це програма nmap - яка сканує порти віддаленого хоста і повідомляється які порти на ньому відкриті. І програма tcpdump, вона переводить вашу мережеву плату в режим promiscuous, що дозволяє перехоплювати весь трафік проходить через карту.

Nmap дозволяє сканувати віддалені комп'ютери на предмет відкритих портів. З більш агресивними опціями можна дізнатися версію ОС і деякі інші речі.

Просканіруем віддалений хост. Як бачимо є дещо цікаве.

Іноді з метою виявлення несправностей нам потрібно з'ясувати, які пакети передаються по мережі. Це не складно зробити за допомогою tcpdump.

Скануємо діапазон портів







Схожі статті