109.3 Урок 1
Сертифікат: |
LPIC-1 |
---|---|
Версія: |
5.0 |
Розділ: |
109 Основи мереж |
Тема: |
109.3 Основи усунення несправностей мережі |
Урок: |
1 з 2 |
Вступ
Linux має дуже гнучкі та потужні мережні можливості. Насправді операційні системи на базі Linux часто використовуються на звичайних мережних пристроях, включаючи дороге комерційне обладнання. Мережі на основі Linux самі по собі можуть мати сертифікацію. З огляду на це, цей урок охопить лише кілька базових інструментів налаштування та усунення несправностей.
Перед цим уроком обов’язково перегляньте уроки про протоколи Інтернету та постійну конфігурацію мережі. У цьому уроці ми розглянемо інструменти для налаштування та усунення несправностей мереж IPv4 і IPv6.
Хоча це не офіційна мета, пакетні аналізатори, такі як tcpdump
, є корисними інструментами для усунення несправностей. Сніфери пакетів дозволяють переглядати та записувати пакети, що надходять до мережного інтерфейсу або виходять з нього. Такі інструменти, як hex viewers і protocol analysers можна використовувати для перегляду цих пакетів більш детально, ніж це зазвичай дозволяє аналізатор пакетів. Не завадило б хоча б знати про такі програми.
Про команду ip
Команда ip
— це досить нова утиліта, яка використовується для перегляду та налаштування майже будь-чого, що стосується мережних конфігурацій. У цьому уроці розглядаються деякі з підкоманд ip
, які найбільш часто використовуються, але це тільки верхній шар того, що доступно. Навчившись читати документацію, ви зможете працювати з цією командою набагато ефективніше.
Кожна підкоманда ip
має власну man-сторінку. У розділі SEE ALSO
команди ip
є список цих man-сторінок:
$ man ip ... SEE ALSO ip-address(8), ip-addrlabel(8), ip-l2tp(8), ip-link(8), ip-maddress(8), ip-monitor(8), ip-mroute(8), ip-neighbour(8), ip-netns(8), ip- ntable(8), ip-route(8), ip-rule(8), ip-tcp_metrics(8), ip-token(8), ip- tunnel(8), ip-xfrm(8) IP Command reference ip-cref.ps ...
Замість того, щоб переглядати це кожного разу, коли вам потрібна man-сторінка, просто додайте -
та назву підкоманди до ip
, наприклад, man ip-route
.
Іншим джерелом інформації є функція довідки. Щоб переглянути вбудовану довідку, додайте help
після підкоманди:
$ ip address help Usage: ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ] [ CONFFLAG-LIST ] ip address del IFADDR dev IFNAME [mngtmpaddr] ip address {save|flush} [ dev IFNAME ] [ scope SCOPE-ID ] [ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up] ip address [ show [ dev IFNAME ] [ scope SCOPE-ID ] [ master DEVICE ] [ type TYPE ] [ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up] [ vrf NAME ] ] ip address {showdump|restore} IFADDR := PREFIX | ADDR peer PREFIX ...
Огляд маски мережі та маршрутизації
IPv4 і IPv6 відомі як протоколи маршрутизації. Це означає, що вони розроблені таким чином, щоб розробники мереж могли контролювати потік трафіку. Ethernet не є протоколом маршрутизації. Це означає, що якщо ви з’єднаєте купу пристроїв, використовуючи лише Ethernet, ви дуже мало зможете зробити, щоб контролювати потік мережного трафіку.
Протоколи маршрутизації дозволяють розробникам мереж сегментувати мережі, щоб зменшити вимоги до обробки пристроїв підключення, забезпечити резервування та керувати трафіком.
Адреси IPv4 і IPv6 мають дві частини. Перший набір бітів становить мережну частину, а другий набір – вузлову частину. Кількість бітів, які складають частину мережі, визначається мережною маскою (також називається subnet mask). Іноді її також називають довжиною префікса. Незалежно від того, як це називається, це кількість бітів, які машина розглядає як мережну частину адреси. Для IPv4 іноді це вказується в десятковій нотації з крапкою.
Нижче наведено приклад використання IPv4. Зверніть увагу, як двійкові цифри зберігають своє розрядне значення в октетах, навіть якщо їх розділити маскою мережі.
192.168.130.5/20 192 168 130 5 11000000 10101000 10000010 00000101 20 bits = 11111111 11111111 11110000 00000000 Network = 192.168.128.0 Host = 2.5
Мережна частина адреси використовується машинами IPv4 або IPv6 для пошуку в їх таблицях маршрутизації інтерфейсу, через який потрібно надіслати пакет. Коли хост IPv4 або IPv6 із увімкненою маршрутизацією отримує пакет, який не призначений самому хосту, він намагається зіставити мережну частину пункту призначення з мережею в таблиці маршрутизації. Якщо відповідний запис знайдено, він надсилає пакет до пункту призначення, указаного в таблиці маршрутизації. Якщо записів не знайдено, а маршрут за замовчуванням налаштовано, пакет надсилається за маршрутом за замовчуванням. Якщо запис не знайдено і маршрут за замовчуванням не налаштовано, пакет відхиляється.
Налаштування інтерфейсу
Ми розглянемо два інструменти, які можна використовувати для налаштування мережного інтерфейсу: ifconfig
та ip
. Програма ifconfig, хоча й досі широко використовується, вважається застарілим інструментом і може бути недоступною в нових системах.
Tip
|
У нових дистрибутивах Linux встановлення пакунку |
Перш ніж налаштовувати інтерфейс, ви повинні спочатку дізнатись, які інтерфейси доступні. Є кілька способів зробити це. Одним із способів є використання опції -a
для команди ifconfig
:
$ ifconfig -a
Інший спосіб – за допомогою ip
. Іноді ви побачите приклади з ip addr
, ip a
, а деякі з ip address
. Вони є синонімами. Офіційно підкомандою є ip address
. Це означає, що якщо ви бажаєте переглянути man-сторінку, ви повинні використовувати man ip-address
, а не man ip-addr
.
Підкоманда link
для ip
виведе посилання на інтерфейси, доступні для налаштування:
$ ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:54:18:57 brd ff:ff:ff:ff:ff:ff 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:ab:11:3e brd ff:ff:ff:ff:ff:ff
Припускаючи, що файлову систему sys
змонтовано, ви також можете вивести вміст /sys/class/net
:
$ ls /sys/class/net enp0s3 enp0s8 lo
Щоб налаштувати інтерфейс за допомогою ifconfig
, ви повинні увійти в систему як root або скористатися утилітою, такою як sudo
, щоб запустити команду з правами root. Дотримуйтеся прикладу нижче:
# ifconfig enp1s0 192.168.50.50/24
Версія ifconfig
для Linux є гнучкою щодо того, як ви вказуєте маску підмережі:
# ifconfig eth2 192.168.50.50 netmask 255.255.255.0 # ifconfig eth2 192.168.50.50 netmask 0xffffff00 # ifconfig enp0s8 add 2001:db8::10/64
Зверніть увагу, як у IPv6 було використано ключове слово add
. Якщо перед IPv6-адресою не поставити add
, ви отримаєте повідомлення про помилку.
Наступна команда налаштовує інтерфейс за допомогою ip
:
# ip addr add 192.168.5.5/24 dev enp0s8 # ip addr add 2001:db8::10/64 dev enp0s8
З ip
та сама команда використовується як для IPv4, так і для IPv6.
Налаштування параметрів низького рівня
Команда ip link
використовується для налаштування параметрів інтерфейсу низького рівня або протоколів, таких як VLAN, ARP або MTU, або для вимкнення інтерфейсу.
Загальним завданням для ip link
є вимикання або вмикання інтерфейсу. Це також можна зробити за допомогою ifconfig
:
# ip link set dev enp0s8 down # ip link show dev enp0s8 3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000 link/ether 08:00:27:ab:11:3e brd ff:ff:ff:ff:ff:ff # ifconfig enp0s8 up # ip link show dev enp0s8 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:ab:11:3e brd ff:ff:ff:ff:ff:ff
Іноді може знадобитися налаштувати MTU інтерфейсу. Як і у випадку з увімкненням/вимкненням інтерфейсів, це можна зробити за допомогою ifconfig
або ip link
:
# ip link set enp0s8 mtu 2000 # ip link show dev enp0s3 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:54:53:59 brd ff:ff:ff:ff:ff:ff # ifconfig enp0s3 mtu 1500 # ip link show dev enp0s3 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:54:53:59 brd ff:ff:ff:ff:ff:ff
Таблиця маршрутизації
Усі команди route
, netstat -r
і ip route
можна використовувати для перегляду вашої таблиці маршрутизації. Якщо ви хочете змінити свої маршрути, вам потрібно використовувати route
або ip route
. Нижче наведено приклади перегляду таблиці маршрутизації:
$ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default 10.0.2.2 0.0.0.0 UG 0 0 0 enp0s3 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3 192.168.150.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8 $ ip route default via 10.0.2.2 dev enp0s3 proto dhcp metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 192.168.150.0/24 dev enp0s8 proto kernel scope link src 192.168.150.200 $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 10.0.2.2 0.0.0.0 UG 100 0 0 enp0s3 10.0.2.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3 192.168.150.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8
Зверніть увагу, що немає виведення щодо IPv6. Якщо ви бажаєте переглянути свою таблицю маршрутизації для IPv6, ви повинні використовувати route -6
, netstat -6r
та ip -6 route
.
$ route -6 Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If 2001:db8::/64 [::] U 256 0 0 enp0s8 fe80::/64 [::] U 100 0 0 enp0s3 2002:a00::/24 [::] !n 1024 0 0 lo [::]/0 2001:db8::1 UG 1 0 0 enp0s8 localhost/128 [::] Un 0 2 84 lo 2001:db8::10/128 [::] Un 0 1 0 lo fe80::a00:27ff:fe54:5359/128 [::] Un 0 1 0 lo ff00::/8 [::] U 256 1 3 enp0s3 ff00::/8 [::] U 256 1 6 enp0s8
Приклад netstat -r6
пропущено, оскільки його вихід ідентичний route -6
. Деякі результати наведеної вище команди route
є зрозумілими. Стовпець Flag
містить певну інформацію про маршрут. Прапор U
вказує на те, що маршрут готовий до використання. !
означає відхилення маршруту, тобто маршрут із !
не використовуватиметься. Прапорець n
означає, що маршрут не кешовано. Ядро підтримує кеш маршрутів для швидшого пошуку окремо від усіх відомих маршрутів. Прапор G
вказує на шлюз. Стовпець Metric
або Met
не використовується ядром. Це стосується адміністративної відстані до цілі. Ця адміністративна відстань використовується протоколами маршрутизації для визначення динамічних маршрутів. Стовпець Ref
— це кількість посилань або кількість разів використання маршруту. Як і Metric
, він не використовується ядром Linux. Стовпець Use
показує кількість пошуків для маршруту.
У вихідних даних netstat -r
MSS
вказує на максимальний розмір сегмента для з’єднань TCP за цим маршрутом. Стовпець Window
показує розмір вікна TCP за умовчанням. irtt
показує час проходження туди й назад для пакетів на цьому маршруті.
Вихідні дані ip route
та ip -6 route
виглядають наступним чином:
-
Пункт призначення.
-
Додатково адреса, за якою зазначена назва інтерфейсу.
-
Протокол маршрутизації, який використовується для додавання маршруту.
-
Охоплення маршруту. Якщо це опущено, це глобальна область або шлюз.
-
Метрика маршруту. Вона використовується протоколами динамічної маршрутизації для визначення вартості маршруту. Це не використовується більшістю систем.
-
Якщо це маршрут IPv6, перевага маршруту RFC4191.
На кількох прикладах прояснимо це:
- Приклад для IPv4
-
default via 10.0.2.2 dev enp0s3 proto dhcp metric 100
-
Пунктом призначення є маршрут за замовчуванням.
-
Адреса шлюзу
10.0.2.2
доступна через інтерфейсenp0s3
. -
Маршрут було додано до таблиці маршрутизації DHCP.
-
Область опущено, тому вона глобальна.
-
Вартість маршруту дорівнює 100.
-
Немає параметрів маршруту IPv6.
-
- приклад для IPv6
-
fc0::/64 dev enp0s8 proto kernel metric 256 pref medium
-
Місцем призначення є
fc0::/64
. -
Він доступний через інтерфейс
enp0s8
. -
Він був доданий автоматично ядром.
-
Область опущено, тому вона глобальна.
-
Маршрут має вартість
256
. -
Він має параметр IPv6
medium
.
-
Керування маршрутами
Маршрутами можна керувати за допомогою route
або ip route
. Нижче наведено приклад додавання та видалення маршруту за допомогою команди route
. З route
ви повинні використовувати опцію -6
для IPv6:
# ping6 -c 2 2001:db8:1::20 connect: Network is unreachable # route -6 add 2001:db8:1::/64 gw 2001:db8::3 # ping6 -c 2 2001:db8:1::20 PING 2001:db8:1::20(2001:db8:1::20) 56 data bytes 64 bytes from 2001:db8:1::20: icmp_seq=1 ttl=64 time=0.451 ms 64 bytes from 2001:db8:1::20: icmp_seq=2 ttl=64 time=0.438 ms # route -6 del 2001:db8:1::/64 gw 2001:db8::3 # ping6 -c 2 2001:db8:1::20 connect: Network is unreachable
Нижче наведено той самий приклад використання команди ip route
:
# ping6 -c 2 2001:db8:1:20 connect: Network is unreachable # ip route add 2001:db8:1::/64 via 2001:db8::3 # ping6 -c 2 2001:db8:1:20 PING 2001:db8:1::20(2001:db8:1::20) 56 data bytes 64 bytes from 2001:db8:1::20: icmp_seq=2 ttl=64 time=0.529 ms 64 bytes from 2001:db8:1::20: icmp_seq=2 ttl=64 time=0.438 ms # ip route del 2001:db8:1::/64 via 2001:db8::3 # ping6 -c 2 2001:db8:1::20 connect: Network is unreachable
Вправи до посібника
-
За допомогою яких команд можна вивести список наявних у системі мережних адаптерів?
-
Як би ви тимчасово вимкнули інтерфейс? Як би ви його знову ввімкнули?
-
Що з наведеного нижче є прийнятною маскою підмережі для IPv4?
0.0.0.255
255.0.255.0
255.252.0.0
/24
-
Які команди можна використовувати для перевірки маршруту за замовчуванням?
-
Як додати другу IP-адресу до інтерфейсу?
Дослідницькі вправи
-
Яку підкоманду
ip
можна використати для налаштування тегування vlan? -
Як би ви налаштували маршрут за замовчуванням?
-
Як отримати детальну інформацію про команду
ip neighbour
? Що станеться, якщо запустити її? -
Як би ви зробили резервну копію своєї таблиці маршрутизації? Як би ви відновили її?
-
Яку підкоманду
ip
можна використати для налаштування параметрів зв’язуючого дерева?
Підсумки
Мережа зазвичай налаштовується за допомогою сценаріїв запуску системи або помічника, такого як NetworkManager. Більшість дистрибутивів мають інструменти, які редагують файли конфігурації сценарію запуску. Зверніться до документації свого дистрибутива, щоб дізнатися більше.
Можливість ручного налаштування мережі дозволяє ефективніше вирішувати проблеми. Це корисно в мінімальних середовищах, які використовуються для таких речей, як відновлення з резервних копій або перехід на нове обладнання.
Утиліти, розглянуті в цьому розділі, мають більше функціональних можливостей, ніж розглянуті в цьому уроці. Було б доцільно переглянути сторінку довідки кожної з них, щоб ознайомитися з доступними параметрами. Команди ss
та ip
— це сучасний спосіб виконання завдань, а решта, які описано, хоча й досі широко використовуються, вважаються застарілими інструментами.
Найкращий спосіб ознайомитися з розглянутими інструментами – це практика. Використовуючи комп’ютер із невеликим об’ємом оперативної пам’яті, можна налаштувати віртуальну мережну лабораторію за допомогою віртуальних машин, з якими можна практикуватися. Трьох віртуальних машин достатньо, щоб зручно працювати з перерахованими інструментами.
Команди, які використані в цьому уроці:
ifconfig
-
Застаріла утиліта, яка використовується для налаштування мережних інтерфейсів і перегляду їх стану.
ip
-
Сучасна і універсальна утиліта, яка використовується для налаштування мережних інтерфейсів і перегляду їх стану.
netstat
-
Застаріла команда, яка використовується для перегляду поточних мережних підключень і інформації про маршрути.
route
-
Застаріла команда, яка використовується для перегляду або зміни таблиці маршрутизації системи.
Відповіді до вправ посібника
-
За допомогою яких команд можна вивести список наявних у системі мережних адаптерів?
Будь-яка з наведених нижче команд:
ip link
,ifconfig -a
абоls /sys/class/net
-
Як би ви тимчасово вимкнули інтерфейс? Як би ви його знову ввімкнули?
Ви можете використовувати
ifconfig
абоip link
:Використання
ifconfig
:$ ifconfig wlan1 down $ ifconfig wlan1 up
Використання
ip link
:$ ip link set wlan1 down $ ip link set wlan1 up
-
Що з наведеного нижче є прийнятною маскою підмережі для IPv4?
-
255.252.0.0
-
/24
Інші наведені маски недійсні, оскільки вони не розділяють чітко адресу на дві частини, перша частина визначає мережу, а друга – хост. Крайні ліві біти маски завжди будуть
1
, а праві —0
.
-
-
Які команди можна використовувати для перевірки маршруту за замовчуванням?
Ви можете використовувати
route
,netstat -r
абоip route
:$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default server 0.0.0.0 UG 600 0 0 wlan1 192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 wlan1 $ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default server 0.0.0.0 UG 0 0 0 wlan1 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan1 $ ip route default via 192.168.1.20 dev wlan1 proto static metric 600 192.168.1.0/24 dev wlan1 proto kernel scope link src 192.168.1.24 metric 600
-
Як додати другу IP-адресу до інтерфейсу?
Можна використати
ip address
абоifconfig
. Майте на увазі, щоifconfig
є застарілим інструментом:$ ip addr add 172.16.15.16/16 dev enp0s9 label enp0s9:sub1
Частина команди
label enp0s9:sub1
додає псевдонім доenp0s9
. Якщо ви не використовуєте застарілийifconfig
, ви можете пропустити це. Якщо ви це зробите, команда працюватиме, але адреса, яку ви щойно додали, не відображатиметься під час виведення данихifconfig
.Ви також можете використовувати
ifconfig
:$ ifconfig enp0s9:sub1 172.16.15.16/16
Відповіді до дослідницьких вправ
-
Яку підкоманду
ip
можна використати для налаштування тегування vlan?ip link
має параметрvlan
, який можна використовувати. Нижче наведено приклад позначення підінтерфейсу тегом vlan 20.# ip link add link enp0s9 name enp0s9.20 type vlan id 20
-
Як би ви налаштували маршрут за замовчуванням?
Використання
route
абоip route
:# route add default gw 192.168.1.1 # ip route add default via 192.168.1.1
-
Як отримати детальну інформацію про команду
ip neighbour
? Що станеться, якщо запустити її?Прочитавши man-сторінку:
$ man ip-neigbour
Команда відображає ваш ARP-кеш:
$ ip neighbour 10.0.2.2 dev enp0s3 lladdr 52:54:00:12:35:02 REACHABLE
-
Як би ви зробили резервну копію своєї таблиці маршрутизації? Як би ви відновили її?
Наведений нижче приклад демонструє резервне копіювання та відновлення таблиці маршрутизації:
# ip route save > /root/routes/route_backup # ip route restore < /root/routes/route_backup
-
Яку підкоманду
ip
можна використати для налаштування параметрів зв’язуючого дерева?Подібно до керування параметрами vlan,
ip link
може налаштувати зв’язуюче дерево за допомогою типуbridge
. У прикладі показано додавання віртуального інтерфейсу з пріоритетом STP 50:# ip link add link enp0s9 name enp0s9.50 type bridge priority 50