Астроювання мережевого інтерфейсу.
Отже, у Вас є всі необхідні програми, адреси та інформація про мережу. Можна приступати до настройки мережевих інтерфейсів. Настройка полягає в присвоєнні відповідних адрес мережевому пристрою і установці потрібних значень для інших параметрів мережевого пристрою. Найбільш часто для цього використовується програма ifconfig.
Ви повинні запустити її приблизно таким чином:
root# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 upВ цьому випадку мережевому пристрою eth0 буде присвоєна IP-адреса 192.168.0.1 і маска 255.255.255.0. Ключ up в кінці команди робить інтерфейс активним. Ця дія за замовчуванням, тому Ви можете пропустити цей ключ. Для деактивації інтерфейсу використовуйте команду ifconfig eth0 down.
Ядро при конфігурації інтерфейсу приймає деякі значення за замовчуванням. Наприклад, ви можете явно вказати мережеву і широкомовну адресу для інтерфейсу, проте якщо Ви цього не зробите, як в прикладі вище, ядро спробує “вгадати“ правильні значення на основі вказаних адреси і маски. Якщо Ви не вкажете маску, вона буде вибрана відповідно до того класу адрес, в який потрапить вказана адреса. В прикладі вище ядро припустило б, що машина знаходиться в мережі класу С, і встановило б мережеву адресу в 192.168.0.0 а широкомовний в 192.168.0.255.
Програма ifconfig має безліч опцій, найкорисніші з яких:
Up
активує інтерфейс (ця дія за умовчанням).
Down
деактивує інтерфейс
Arp
дозволяє і забороняє використовування протоколу перетворення адрес (arp) на даному інтерфейсі.
Allmulti
дозволяє і забороняє прийом апаратних пакетів з декількома адресатами (multicast-пакетів). Такі пакети дозволяють групі машин приймати пакети, відправлені на спеціальну адресу. Така можливість використовується в додатках на зразок відеоконференцзв'язку, але як правило не використовується
Mtu N
дозволяє встановить MTU для інтерфейсу
netmask <addr>
цей параметр дозволяє задати маску мережі, в якій знаходиться даний інтерфейс
irq <addr>
цей параметр працює тільки з певними типами мережевих карт і дозволяє задати IRQ для відповідної інтерфейсу карти
[-]broadcast [addr]
цей параметр дозволяє прийом широкомовних пакетів на задану адресу або забороняє прийом таких пакетів.
[-]pointopoint [addr]
цей параметр дозволяє встановити адресу машини на протилежному кінці з'єднання крапка-крапка (наприклад slip або ppp)
hw <type> <addr>
цей параметр дозволяє задати апаратну адресу деяких типів мережевих пристроїв. Ця опція рідко використовується в мережах ethernet, але дуже корисна в мережах інших типів мереж, таких як X.25
Ви можете використовувати програму ifconfig для будь-якого мережевого інтерфейсу. Деякі програми, такі як pppd і dip автоматично конфігурують мережевий інтерфейс після створення і не вимагають подальшої ручної настройки.
астроювання кільцевого інтерфейсу.
“Кільцевий“ інтерфейс – спеціальний інтерфейс, що зв'язує Вашу машину саму з собою. Його можна використовувати для різної мети. Наприклад, Ви можете забажати протестувати яке-небудь мережеве програмне забезпечення, не втручаючись в роботу інших машин в мережі. Для цього інтерфейсу спеціально зарезервована адреса `127.0.0.1'. Тому, запустивши telnet на адресу 127.0.0.1 на будь-якій машині, отримайте з'єднання з цією ж машиною. Настройка кільцевого інтерфейсу дуже проста (Як правило ці дії виконує один з скриптів ініціалізацій).
root# ifconfig lo 127.0.0.1 root# route add -host 127.0.0.1 loаршрутизація.
Маршрутизація – широка тема, і про неї можна написати дуже багато. Для більшості, проте, схема маршрутизації буде достатньо простої, тому тут буде розглянуті тільки базові питання, пов'язані з маршрутизацією.
Почнемо з визначення. Отже, що ж таке IP-маршрутизація?
IP-маршрутизацією називається процес, за допомогою якого машина з декількома мережевими інтерфейсами вибирає, через який з інтерфейсів послати отриманий IP-пакет.
Проілюструємо це визначення на прикладі. Уявіть собі звичайний офісний маршрутизатор, який має PPP-з'єднання з Інтернетом, дещо підключених сегментів локальної ethernet-мережі і PPP-з'єднання з іншим офісом. Коли через один з інтерфейсів на маршрутизатор приходить IP-пакет, маршрутизатор повинен вирішити, через який з інтерфейсів відправляти цей пакет далі. Навіть простим машинам може бути потрібно маршрутизувати пакети, оскільки вони мають щонайменше два інтерфейси – один кільцевий, описаний вище, і другий, через який вони підключені до реальної мережі, наприклад ethernet-інтерфейс, або інтерфейс підключення по послідовних лініях PPP або SLIP.
Як же відбувається маршрутизація? На кожній машині зберігається спеціальний список правил маршрутизації, званий таблицею маршрутизації. Будь-який рядок цієї таблиці як правило містить щонайменше три поля. Перше поле – адреса призначення, друге – ім'я інтерфейсу, через який слід відправляти пакети, і третє – IP-адреса машини, через яку передаватимуться пакети. В Linux, Ви можете проглянути таблицю маршрутизації за допомогою наступної команди:
user% cat /proc/net/routeабо однієї з команд:
user% /sbin/route -n user% netstat -rПроцес маршрутизації достатньо простий: коли машина одержує IP-пакет, його адреса призначення (адреса машини, на яку відправлений цей пакет) звіряється з кожним рядком таблиці маршрутизації. Вибирається відповідний рядок і пакет передається через вказаний в цьому рядку інтерфейс. Якщо поле адреси “машини-передавача” заповнено, то пакет передається на цю машину, інакше вважається, що адресат пакету знаходиться в мережі, до якої підключений даний інтерфейс.
Для управління таблицею маршрутизації використовується програма route. Ця програма перетворить свої аргументи в параметри виклику ядра, і ядро додає, видаляє або змінює рядки в таблиці маршрутизації.
Простий приклад. Уявіть собі, що у вас є ethernet-мережа. Вона організована як мережа класу С з адресою 192.168.1.0. Вашій машині була виділена адреса 192.168.1.10 і було сказано, що маршрутизатор, через який Ваша мережа підключена до Інтернету знаходиться за адресою 192.168.1.1.
Насамперед Ви повинні набудувати мережевий інтерфейс. Команда виглядатиме так:
root# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 upПісля цього Ви повинні додати в таблицю маршрутизації на Вашій машині рядок, згідно якого пакети на машини з адресами 192.168.1.* ядро повинне відправляти через інтерфейс eth0. Це робиться за допомогою наступної команди:
root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0Зверніть увагу на використовування опції “-net“. Ця опція вказує, що адреса призначення в таблиці маршрутизації буде адресою мережі. За допомогою опції “-host” ви можете задати маршрут на конкретну IP-адресу.
Цей маршрут дозволить вам встановлювати IP-з'єднання з всіма машинами у вашому локальному ethernet-сегменті. Але як бути з всією рештою машин?
Би було дуже складне задавати маршрути для всіх можливих IP-мереж явно, тому використовують наступний трюк – маршрут за замовчуванням. Маршрут за замовчуванням підходить для всіх адрес призначення, не вказаних в таблиці маршрутизації. За допомогою маршруту за замовчуванням Ви говорите ядру – “а все інше відправляй туди”. В нашому прикладі маршрут за умовчанням настроюється командою:
root# route add default gw 192.168.1.1 eth0Опція “gw” вказує програмі route що наступний аргумент – IP-адреса або ім'я маршрутизатора, на який треба відправляти всі пакети, відповідні цьому рядку таблиці маршрутизації.
Отже повністю настройка виглядатиме так:
root# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 root# route add default gw 192.168.1.1 eth0Якщо Ви уважно проглянете ваші “rc” файли, що настроюють мережу, Ви знайдете, що принаймні один з них виглядає приблизно так, як і в нашому прикладі. Приведена конфігурація – одна з найпоширеніших.
Розглянемо тепер дещо складнішу конфігурацію маршрутизації в мережі. Уявіть собі, що ви повинні побудувати маршрутизатор з попереднього прикладу. У цього маршрутизатора є одне PPP-з'єднання і три підключені ethernet-сегменти. Настройка маршрутизації виглядатиме так:
root# route add -net 192.168.1.0 netmask 255.255.255.0 eth0 root# route add -net 192.168.2.0 netmask 255.255.255.0 eth1 root# route add -net 192.168.3.0 netmask 255.255.255.0 eth2 root# route add default ppp0У всій мережі тільки маршрутизатор повинен мати в своїй таблиці маршрутизації окремі рядки для кожної з підмереж. На решті машин зв'язок з іншими сегментами локальної мережі здійснюватиметься за допомогою маршруту за замовчуванням. Вони відправлятимуть пакети на маршрутизатор, а той передаватиме їх в потрібний сегмент мережі. Вас може здивувати, що маршрут за замовчуванням на маршрутизаторі не використовує опції “gw”. Причина проста. Протоколи з'єднання по послідовних лініях, такі як PPP і SLIP завжди мають тільки дві машини в мережі – (з'єднання крапка-крапка) тому вказівка адреси безглуздо – на тому кінці з'єднання тільки одна машина. Таким чином, для подібних з'єднань немає потреби вказувати адресу маршрутизатора, на який треба передавати пакети. Для інших типів мереж, таких як ethernet, arcnet або token ring потрібно вказувати адресу маршрутизатора, оскільки ці мережі підтримують підключення відразу багатьох машин до одного сегменту мережі.
ping- посилка пакетів ICMP ECHO_REQUEST мережевим хостам
СИНТАКСИС
/usr/sbin/ping хост [таймаут]
/usr/sbin/ping -s [-drvRlfnq] [-i час очікування] [-p шаблон] хост [розмір_даних [кіл_пакетів]]
ОПИС
Команда pingвикористовує датаграму ECHO_REQUEST протоколу ICMP, щоб викликати відповідь ICMP ECHO_RESPONSE вказаного хоста або мережевого шлюзу. Якщо хост відповідає, pingвидає повідомлення, що хост живий (хост is alive), в стандартний вихідний потік і завершує роботу. В іншому випадку, після таймаутсекунд вона видає повідомлення, що від хоста відповіді немає (no answer from хост). Стандартнезначення тайм-ауту - 20 секунд.
ВИКОРИСТАННЯ
Коли вказаний ключ -s, pingпосилає датаграму кожну секунду і друкує один рядок висновку для кожної отриманої відповіді ECHO_RESPONSE. В цьому випадку pingобчислює час обходу (round trip times) і статистику втрати пакетів; після завершення або після закінчення тайм-аутукоманда друкує відповідну підсумкову інформацію. Якщо вказана необов'язкова кількість пакетів (кіл_пакетів),ping посилає тільки відповідну кількість запитів. Якщо кількість пакетів не вказана, команда виконуватиметься нескінченно. Для припинення висновку, що продовжується, використовуйте клавішу переривання (Ctrl+C).
Стандартний розмір пакету датаграми рівний 64 байтам, але можна задати і інший розмір за допомогою аргументу командної стрічки розмір_даних. Врахуйте, що оскільки pingавтоматично додає 8- байтовий заголовок до кожної відправленої датаграми, розмір пакету, що показується при використовуванні опції -sз аргументом розмір_даних, завжди буде на 8 байтів більше, ніж вказане вами значення.
При використанні pingдля пошуку збоїв в мережі, необхідно спочатку виконати pingна локальний хост, щоб переконатися, що працює локальний мережевий інтерфейс.
Опції
Команда pingсприймає наступні опції:
-d | Режим відладки. Постачальнику передається опція SO_DEBUG. |
-f | Лавинний ping. Видає пакети відразу після повернення або сто разів в секунду, залежно від того, що швидше. Для кожного посланого ECHO_REQUEST друкується точка ".", а для кожного отриманого ECHO_REPLY друкується забій (backspace). Це дозволяє швидко оцінити, скільки пакетів втрачено. Тільки привілейований користувач може використовувати цю опцію. Ця команда може істотно збільшити завантаження мережі і її треба використовувати обережно. |
-i час_очікування | Чекати час_очікуваннясекунд між посилками пакетів. За замовчуванням інтервал між посилками пакетів – одна секунда. Ця опція несумісна з опцією -f. |
-l | Виключити маршрут до джерела. Використовує цю опцію в заголовку IP для посилки пакету вказаному хостуі назад. Звичайно вказується з опцією -R. Опція -lдопустима тільки коли як хост вказаний localhostабо `uname -n`. |
-n | Тільки числова видача. Не робити спроби шукати символьні імена для адрес хостів. |
-p шаблон | Вказаний шаблонвикористовується для заповнення посланих пакетів. Шаблонзадається, як шіснадцятковий рядок байтів і може мати довжину до 16 байтів. Шаблон повторюється для заповнення розділу даних пакету. Наприклад, -p ffвикликає заповнення пакетів одиницями. Ця опція корисна при пошуку проблем мережі, пов'язаних з переданими даними. |
-q | Скорочений висновок. Не видається ніщо, окрім сумарних рядків при запуску і завершенні роботи. |
-r | Не використовувати звичайні таблиці маршрутизації і посилати напряму вказаному хостув підключеній мережі. Якщо хост не знаходиться в безпосередньо підключеній мережі, повертається помилка. Цю опцію можна використовувати для звернення до локального хосту через інтерфейс, віддалений демоном маршрутизації |
-R | Записати маршрут. Встановлює опцію запису маршруту IP, внаслідок чого маршрут пакету буде записаний в заголовку IP. Вміст запису маршруту буде виданий, тільки якщо вказана опція -vі встановлюватиметься для пакетів, що повертаються, тільки якщо цільовий хост зберігає запис маршруту між видачами або якщо задана опція -l. |
-s | Посилати датаграму кожну секунду і друкувати рядок висновку для кожної отриманої відповіді ECHO_RESPONSE (якщо відповіді немає, ніщо не видається). |
-v | Детальний висновок. Видає всі отримані пакети ICMP, окрім ECHO_RESPONSE. |
netstat- показ статус мережі
СИНТАКСИС
netstat [-Aan] [-f сімейство_адрес] [-I інтерфейс] [-p ім’я_протоколу] [система] [core]
netstat[-n] [-s] [-i | -r] [-f сімейство_адрес] #@: #@; #@< #@=
netstat #@> #@? інтервал #@@ #@A
ОПИС
Команда netstatпоказує вміст різних структур даних, пов'язаних з сіткою, в різних форматах залежно від вказаних опцій.
ВИКОРИСТАННЯ
Перша форма команди показує список активних сокетів (sockets) для кожного протоколу. Друга форма вибирає одну з декількох інших мережевих структур даних.
Третя форма показує динамічну статистику пересилки пакетів по конфігурованих мережевих інтерфейсах; аргумент інтервалзадає, скільки секунд збирається інформація між послідовними показами.
Значення за замовчуванням для аргументу система - /unix; для аргументу coreяк значення за умовчанням використовується /dev/kmem.
Опції
netstatсприймає наступні опції:
-a | Показувати стан всіх сокетів; звичайно сокети, що використовуються серверними процесами, не показуються. | ||||||
-A | Показувати адреси будь-яких управляючих блоків протоколу, пов'язаних з сокетами; використовується для відладки. | ||||||
-i | Показувати стан автоматично конфігурованих (auto-configured) інтерфейсів. Інтерфейси, статично конфігуровані в системі, але не знайдені під час завантаження, не показуються. | ||||||
-n | Показувати мережні адреси як числа. netstatзвичайно показує адреси як символи. Цю опцію можна використовувати з будь-яким форматом показу. | ||||||
-r | Показати таблиці маршрутизації. При використовуванні з опцією -s, показує статистику маршрутизації. | ||||||
-s | Показати статистичну інформацію по протоколах. При використовуванні з опцією -r, показує статистику маршрутизації. | ||||||
-f сімейство_адрес | Обмежити показ статистики або адрес управляючих блоків тільки вказаним сімейство_адрес, як яке можна вказувати:
| ||||||
-I інтерфейс | Виділити інформацію про вказаний інтерфейс в окремий стовпець; за замовчуванням (для третьої форми команди) використовується інтерфейс з найбільшим об'ємом переданої інформації з моменту останнього перезавантаження системи. Як інтерфейсможна вказувати будь-який з інтерфейсів, перерахованих у файлі конфігурації системи, наприклад, emd1або lo0. | ||||||
-p ім’я_протоколу | Обмежити показ статистики або адрес управляючих блоків тільки протоколом з вказаним ім’я_протоколу, наприклад tcp. |
Активні сокети (перша форма)
Для кожного активного сокета показується протокол, розмір черг прийому і отримання
(в байтах), локальна і віддалена адреса, а також внутрішній стан протоколу.
Символьний формат, звичайно що використовується для показу адрес сокетів, - це або:
Ім’я_хоста.порт
якщо ім'я хоста вказано, або:
мережа.порт
якщо адреса сокета задає мережу, але не конкретний хост. Імена хостів і мереж беруться з відповідних записів у файлі /etc/hosts або /etc/networks.
Якщо ім'я мережі або хоста для адреси невідомо (або якщо вказана опція -n), адреса показується числами. Не вказані або "узагальнені" адреси і порти показуються як "*". .
окети TCP
Для сокетів TCP допустимі наступні значення стану:
CLOSED | Закритий. Сокет не використовується. | |
LISTEN | Чекає вхідних з'єднань. | |
SYN_SENT | Активно намагається встановити з'єднання. | |
SYN_RECEIVED | Йде початкова синхронізація з'єднання. | |
ESTABLISHED | З'єднання встановлено. | |
CLOSE_WAIT | Віддалена сторона відключилася; очікування закриття сокета. | |
FIN_WAIT_1 | Сокет закритий; відключення з'єднання. | |
CLOSING | Сокет закритий, потім віддалена сторона відключилася; очікування підтвердження. | |
LAST_ACK | Віддалена сторона відключилася, потім сокет закритий; очікування підтвердження. | |
FIN_WAIT_2 | Сокет закритий; очікування відключення віддаленої сторони. | |
TIME_WAIT | Очікування після закриття повторної передачі відключення віддаленої сторони. | |
Мережеві структури даних (друга форма)
Дані, що показуються, залежать від вибору опції, -iабо -r. Якщо вказано обидві опції, netstatвибере -i.
Показ таблиці маршрутизації
Таблиця маршрутизації показує всі наявні маршрути (routes) і статус кожного з них. Кожний маршрут складається з цільового хоста або мережі і шлюзу (gateway), який використовується для пересилки пакетів. Стовпець flags(прапори) показує статус маршруту (U, якщо він включений), чи веде маршрут на шлюз (G), чи був маршрут створений динамічно за допомогою перенаправлення (D)і чи використовується адреса індивідуального хоста (H) замість адреси мережі. Наприклад, інтерфейс закільцьовування (loopback transport provider), lo0, завжди має прапорH.
Прямі маршрути створюються для кожного інтерфейсу, підключеного до локального хосту; поле gateway (шлюз) для таких записів показує адресу вихідного інтерфейсу.
Стовпець refcntпоказує поточну кількість активних використовувань для маршруту. Протоколи, орієнтовані на з'єднання, звичайно використовують в ході з'єднання один маршрут, тоді як протоколи без з'єднання одержують маршрут для кожної посилки одному і тому ж адресату.
Стовпець useпоказує кількість пакетів, посланих по маршруту.
Стовпець interfaceпоказує мережевий інтерфейс, що використовується маршрутом.
Сумарна статистика передачі даних (третя форма)
Коли заданий аргумент інтервал, netstatпоказує таблицю сумарної статистичної інформації про передані пакети, помилки і колізії. Перший рядок даних, а також кожний подальший
24-й рядок, що показується, містить сумарну статистичну інформацію з моменту останнього перезавантаження системи. Кожний подальший рядок показує дані, накопичені за черговий вказаний в командному рядку інтервалз моменту останнього показу.
Попередження
Таблиці ядра можуть змінюватися по ходу їх обробки програмою netstat, що приводить до некоректних або неповних результатів.