4.4 Урок 1
Сертифікат: |
Linux Essentials |
---|---|
Версія: |
1.6 |
Розділ: |
4 Операційна система Linux |
Тема: |
4.4 Ваш комп’ютер у мережі |
Урок: |
1 з 1 |
Вступ
У сучасному світі будь-які обчислювальні пристрої обмінюються інформацією через мережі. У самому серці концепції комп’ютерних мереж лежать фізичні зв’язки між пристроєм та іншими вузлами. Ці зв’язки називаються з’єднаннями (каналами, лінками), і вони є основним визом зв’язку між двома різними пристроями. Зв’язки можуть бути встановлені за допомогою різноманітних середовищ передавання даних, таких як мідні кабелі, оптичні волокна, радіохвилі або лазери.
Кожен канал зв’язку під’єднаний до інтерфейсу пристрою. Кожен пристрій може мати кілька інтерфейсів і, таким чином, підключатися до кількох каналів. За допомогою цих зє’днань комп’ютери можуть утворювати мережу - невелика групу пристроїв, які можуть безпосередньо підключатися один до одного. У світі є багато прикладів таких мереж. Щоб мати можливість спілкуватися за межами мережі канального рівня, пристрої використовують маршрутизатори. Уявіть, що мережі канального рівня - це острови, з’єднані мостами, якими інформація має пройти, щоб дістатися пристрою на віддаленому острові. Роль таких мостів в мереах виконують маршрутизатори.
Ця модель веде до кількох різних рівнів мережі:
- Канальний рівень
-
Забезпечує зв’язок між безпосередньо підключеними пристроями.
- Мережний рівень
-
Забезпечує маршрутизацію за межами окремих мереж і унікальну адресацію пристроїв за межами однієї мережі канального рівня.
- Прикладний рівень
-
Дозволяє окремим програмам підключатися одна до одної.
З самого початку комп’ютерні мережі використовували ті ж методи зв’язку, що й телефонний зв’язок, і відповідно були комутовані. Це означає, що для того, щоб два вузли могли обмінюватися даними, між ними потрібно створити спеціальний наскрізний зв’язок. Цей метод працював добре, проте він займав всю пропускну здатність каналу для роботи двох вузлів.
Згодом комп’ютерні мережі перейшли до пакетної комутації. У цьому методі дані групуються і до них додається заголовок, який міститься інформацію про те, звідки надходить інформація і куди вона прямує. Фактична інформація міститься в цьому кадрі та надсилається за посиланням одержувачу, зазначеному в заголовку кадру. Це дозволяє кільком пристроям спільно використовувати один канал та спілкуватися майже одночасно.
Мережа канального рівня
Завдання будь-якого пакета полягає в перенесенні інформації від джерела до місця призначення через з’єднання між цими пристроями. Цим пристроям потрібен спосіб взаємної ідентифікації. Для цього використовуються адреси канального рівня. В мережі Ethernet MAC-адреси (MAC, Media Access Control) використовуються для ідентифікації окремих пристроїв. MAC-адреса складається з 48 біт. Вони не обов’язково є глобально унікальними і не можуть використовуватися для адресації інших вузлів за межами поточної мережі. Таким чином, ці адреси не можуть використовуватися для маршрутизації пакетів до інших мереж. Одержувач пакета перевіряє, чи відповідає адреса призначення його власній адресі канального рівня, і, якщо відповідає, то він обробляє пакет. Інакше пакет скидається. Винятком з цього правила є широкомовні пакети (пакет, надісланий кожному в даній локальній мережі), які завжди приймаються.
Команда ip link show
відображає список усіх доступних мережевих інтерфейсів та їхніх адрес канального рівня, а також деяку іншу інформацію про максимальний розмір пакету:
$ ip link show 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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff
Наведений вище результат показує, що пристрій має два інтерфейси, lo
та ens33
. lo
- це інтерфейс зворотної петлі, що має MAC-адресу 00:00:00:00:00:00
, тоді як ens33
є інтерфейсом Ethernet та має MAC-адресу `00:0c:29:33:3b:25 `.
Мережі IPv4
Щоб відвідувати такі веб-сайти, як Google або Twitter, перевіряти електронну пошту або дозволяти підприємствам підключатися один до одного, пакети повинні мати можливість переміщуватися з однієї мережі канального рівня в іншу. Часто ці мережі підключаються лише опосередковано, коли пакети мають перетнути кілька проміжних мереж з канального рівня, щоб досягти місця призначення.
Адреси канального рівня мережевого інтерфейсу не можна використовувати за межами цієї конкретної мережі канального рівня. Оскільки ця адреса не має жодного значення для пристроїв в інших мережах канального рівня, для реалізації маршрутизації необхідні глобально унікальні адреси. Ця схема адресації, разом із загальною концепцією маршрутизації, реалізована за допомогою Інтернет протоколу (IP, Internet Protocol).
Note
|
Протокол — це набір процедур, які дозволяють усім сторонам, які дотримуються протоколу, бути взаємно сумісними. Протокол можна розглядати як визначення стандарту. У обчислювальній техніці Інтернет-протокол є стандартом, погодженим усіма, щоб різні пристрої, вироблені різними виробниками, могли взаємодіяти один з одним. |
Адресація IPv4
IP-адреси, як і MAC-адреси, є способом вказати, звідки надходить пакет даних і куди він прямує. IPv4 був першим інтернет-протоколом. Адреси IPv4 мають довжину 32 біти, що теоретично забезпечує максимальну кількість 4 294 967 296 адрес. Однак кількість цих адрес, які можуть використовуватися пристроями, набагато менша, оскільки деякі діапазони зарезервовані для особливих випадків використання, таких як широкомовні адреси (які використовуються для охоплення всіх учасників певної мережі), адреси багатоадресної передачі (подібні до широкомовних адрес, але пристрій має налаштовуватися на зразок радіо) або зарезервовані для приватного використання.
В придатному для читання форматі IPv4-адреси позначаються чотирма числами, розділеними крапкою. Кожне число може варіюватися від 0
до 255
. Наприклад, розглянемо таку IP-адресу:
192.168.0.1
Технічно кожне з цих чисел представляє вісім окремих бітів. Таким чином, цю адресу можна також записати так:
11000000.10101000.00000000.00000001
На практиці використовується десятковий запис, показаний вище. Однак побітове представлення також важливе для розуміння підмереж.
IPv4 підмережі
Для підтримки маршрутизації IP-адресу можна розділити на дві частини: мережну та вузлову. Мережна частина адреси визначає мережу, в якій перебуває пристрій, і використовується для маршрутизації пакетів до цієї мережі. Вузлова частина використовується для конкретної ідентифікації даного пристрою в мережі та для передачі пакету його конкретному одержувачу, як тільки він досягає своєї мережі канального рівня.
IP-адреси можуть бути розбиті на адресу підмережі та вузлову частини в будь-якому місці. Так звана маска підмережі визначає, де відбувається це розділення. Давайте ще раз розглянемо двійкове представлення IP-адреси з попереднього прикладу:
11000000.10101000.00000000.00000001
Тепер розглянемо для цієї IP-адреси маску підмережі, яка встановлює кожен біт, який належить до мережі, в 1
, а кожен біт, що належить до вузлової частини, в 0
:
11111111.11111111.11111111.00000000
На практиці маска мережі записується в десятковому записі:
255.255.255.0
Це означає, що ця мережа має діапазон від 192.168.0.0
до 192.168.0.255
. Зверніть увагу, що перші три числа, для яких всі біти в масці мережі встановлені в 1, залишаються незмінними у всіх IP-адресах діапазону.
Нарешті, існує альтернативний запис маски підмережі, який називається безкласова маршрутизація (CIDR, Classless Inter-Domain Routing). Це позначення просто вказує, скільки бітів встановлено в масці підмережі, і додає це число до IP-адреси. У прикладі 24 з 32 бітів встановлені на 1
у масці підмережі. Це може бути виражено у запису CIDR як 192.168.0.1/24
.
Приватні IPv4 адреси
Як згадувалося раніше, певні розділи адресного простору IPv4 зарезервовані для особливих випадків використання. Одним із таких варіантів використання є діапазон приватних адрес. Наступні підмережі зарезервовані для приватної адресації:
-
10.0.0.0/8
-
172.16.0.0/12
-
192.168.0.0/16
Адреси з цих підмереж може використовувати будь-хто. Однак ці підмережі не можна маршрутизувати в загальнодоступному Інтернеті, оскільки вони потенційно використовуються багатьма мережами одночасно.
Сьогодні більшість мереж використовують ці внутрішні адреси. Вони дозволяють внутрішній зв’язок без необхідності будь-якого призначення зовнішньої адреси. Більшість інтернет-з’єднань сьогодні мають лише одну зовнішню адресу IPv4. Маршрутизатори відображають усі внутрішні адреси на цю єдину зовнішню IP-адресу під час пересилання пакетів в Інтернет. Це називається трансляцією мережних адрес (NAT, Network Address Translation). Особливий випадок NAT, коли маршрутизатор зіставляє внутрішні адреси з однією зовнішньою IP-адресою, іноді називається маскування. Це дозволяє будь-якому пристрою у внутрішній мережі встановлювати нові з’єднання з будь-якою глобальною IP-адресою в Інтернеті.
Note
|
За допомогою маскування на внутрішні пристрої не можна посилатися з Інтернету, оскільки вони не мають глобально допустимої адреси. Однак це не функція безпеки. Навіть при використанні masquerading все одно потрібен міжмережний екран. |
Налаштування IPv4 адресації
Існує два основних способи налаштування IPv4-адрес на комп’ютері. Шляхом призначення адрес вручну або за допомогою протоколу динамічної конфігурації вузла (DHCP, Dynamic Host Configuration Protocol) для автоматичного налаштування.
При використанні DHCP центральний сервер контролює, які адреси призначаються відповідним пристроям. Сервер також може надавати пристроям іншу інформацію про мережу, таку як IP-адреси DNS-серверів, IP-адресу маршрутизатора за замовчуванням або, у разі складніших налаштувань, для запуску операційної системи через мережу. DHCP увімкнено за замовчуванням у багатьох системах, тому ви, ймовірно, вже матимете IP-адресу, коли підключитеся до мережі.
IP-адреси також можна вручну додати до інтерфейсу за допомогою команди ip addr add
. Тут ми додаємо адресу 192.168.0.5
до інтерфейсу ens33
. Мережа використовує маску мережі 255.255.255.0
, яка дорівнює /24
при застосуванні CIDR:
$ sudo ip addr add 192.168.0.5/255.255.255.0 dev ens33
Тепер ми можемо перевірити, що адреса була додана за допомогою команди ip addr show
:
$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 25: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff inet 192.168.0.5/24 192.168.0.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::010c:29ff:fe33:3b25/64 scope link noprefixroute valid_lft forever preferred_lft forever
Наведені вище вихідні дані показують інтерфейс lo
і інтерфейс ens33
з адресою, встановленою командою вище.
Щоб перевірити доступність пристрою, можна використати команду ping
. Вона надсилає особливий тип повідомлення, який називається echo-запит, у якому відправник запитує одержувача на відповідь. Якщо з’єднання між двома пристроями успішно встановлено, одержувач надішле назад echo-відповідь і таким чином підтвердить з’єднання:
$ ping -c 3 192.168.0.1 PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. 64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=2.16 ms 64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=1.85 ms 64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=3.41 ms --- 192.168.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 5ms rtt min/avg/max/mdev = 1.849/2.473/3.410/0.674 ms
Параметр -c 3
зупиняє ping
після надсилання трьох echo-запитів. Інакше ping
продовжуватиме працювати постійно, і його потрібно зупинити, натиснувши Ctrl+C.
Маршрутизація IPv4
Маршрутизація - це процес, в якому пакет потрапляє з вихідної мережі в мережу призначення. Кожен кінцевий пристрій підтримує таблицю маршрутизації, яка містить інформацію про те, до якої IP-мережі можна отримати прямий доступ через підключення пристрою до мереж канального рівня, і до якої IP-мережі можна отримати доступ, передаючи пакети маршрутизатору. Нарешті, маршрут за замовчуванням визначає маршрутизатор, який отримує всі пакети, які не відповідають жодному іншому маршруту.
Під час встановлення з’єднання пристрій шукає IP-адресу отримувача у своїй таблиці маршрутизації. Якщо запис відповідає адресі, пакет або надсилається до відповідної мережі канального рівня, або передається на маршрутизатор, зазначений у таблиці маршрутизації.
Самі маршрутизатори також підтримують таблиці маршрутизації. При отриманні пакету маршрутизатор також шукає адресу призначення у власній таблиці маршрутизації та надсилає пакет наступному маршрутизатору. Це повторюється, поки пакет не прибуде до маршрутизатора в мережі призначення. Кожен маршрутизатор, який бере участь у передаванні пакетів, називається hop. Останній маршрутизатор знаходить мережу з прямим підключенням для адреси призначення у своїй таблиці маршрутизації та надсилає пакети до свого інтерфейсу призначення.
Більшість домашніх мереж мають лише одну точку виходу - маршрутизатор, який під’єднаний до провайдера послуг Інтернету (ISP, internet service provider). У цьому випадку пристрій просто пересилає всі пакети, які не призначені для внутрішньої мережі, безпосередньо на домашній маршрутизатор, який потім надсилає їх на маршрутизатор провайдера для подальшого пересилання. Це приклад використання маршруту за замовчуванням.
Команда ip route show
відображає поточну таблицю маршрутизації IPv4:
$ ip route show 127.0.0.0/8 via 127.0.0.1 dev lo0 192.168.0.0/24 dev ens33 scope link
Щоб додати маршрут за замовчуванням, все, що потрібно, це внутрішня адреса маршрутизатора, який буде шлюзом за замовчуванням. Якщо, наприклад, маршрутизатор має адресу 192.168.0.1
, то наступна команда встановлює його як маршрут за замовчуванням:
$ sudo ip route add default via 192.168.0.1
Щоб перевірити, знову запустіть ip route show
:
$ ip route show default via 192.168.0.1 dev ens33 127.0.0.0/8 via 127.0.0.1 dev lo0 192.168.0.0/24 dev ens33 scope link
Мережі IPv6
IPv6 був розроблений, щоб усунути недоліки IPv4, головним чином брак адрес, оскільки все більше пристроїв підключалися до мережі. Проте IPv6 також містить інші функції, такі як нові протоколи для автоматичного налаштування мережі. Замість 32 біт адреса IPv6 використовує 128. Це дозволяє отримати приблизно 2128 адрес. Однак, як і IPv4, кількість глобально унікальних адрес, які можна використовувати, набагато менша через те, що певні діапазони адрес зарезервовані для інших цілей. Ця велика кількість адрес означає, що публічних адрес більше ніж достатньо для кожного пристрою, який зараз підключений до Інтернету, і для багатьох інших. Таким чином зменшується потреба в маскуванні адрес та вирішуються проблеми IPv4, такі як затримка під час передавання даних та неможливість безпосереднього підключення до замаскованого пристрою.
Адреси IPv6
Адреси IPv6 використовують 8 груп по 4 шістнадцяткові цифри, кожна з груп відокремлюється двокрапкою:
2001:0db8:0000:abcd:0000:0000:0000:7334
Note
|
Шістнадцяткові цифри знаходяться в діапазоні від |
Щоб полегшити сприйняття адреси, початкові нулі з кожної групи можна видалити при записі, однак кожна група повинна містити принаймні одну цифру:
2001:db8:0:abcd:0:0:0:7334
Якщо кілька груп, що містять лише нулі, йдуть безпосередньо одна за одною, вони можуть бути повністю замінені на '::':
2001:db8:0:abcd::7334
Однак цю позначку можна використовувати лише один раз для кожної адреси.
Префікс IPv6
Перші 64 біти IPv6-адреси відомі як префікс маршрутизації. Префікс використовується маршрутизаторами, щоб визначити, до якої мережі належить пристрій і, отже, за яким шляхом потрібно надіслати дані. Адреса підмережі завжди визначається в межах префіксу. Провайдери зазвичай роздають своїм клієнтам префікси /48 або /56, залишаючи їм 16 або 8 біт для внутрішньої підмережі.
У IPv6 є три основних типи префіксів:
Глобальна унікальна адреса: При цьому префікс призначається з блоків, зарезервованих для глобальних адрес. Ці адреси дійсні в усьому Інтернеті.
- Унікальна локальна адреса
-
Її не можна маршрутизувати в Інтернеті. Однак ці адреси можуть бути перенаправлені всередині організації. Ці адреси використовуються в мережі, щоб переконатися, що пристрої все ще мають адресу, навіть якщо немає з’єднання з Інтернетом. Вони є еквівалентом діапазонів приватних адрес IPv4. Перші 8 біт завжди є
fc
абоfd
, за якими слідують 40 випадково згенерованих біт. - Локальна адреса каналу
-
Доступні лише за певним посиланням. Кожен мережевий інтерфейс із підтримкою IPv6 має одну таку адресу, яка починається з
fe80
. Ці адреси використовуються внутрішньо IPv6 для запиту додаткових адрес за допомогою автоматичної конфігурації та пошуку інших комп’ютерів у мережі за допомогою протоколу Neighbor Discovery.
Ідентифікатор інтерфейсу IPv6
Хоча префікс визначає, в якій мережі знаходиться пристрій, ідентифікатор інтерфейсу використовується для нумерації пристроїв у мережі. Останні 64 біти в адресі IPv6 утворюють ідентифікатор інтерфейсу, як і останні біти адреси IPv4.
Коли IPv6-адреса призначається вручну, ідентифікатор інтерфейсу встановлюється як частина адреси. При використанні автоматичної конфігурації адреси ідентифікатор інтерфейсу або вибирається випадковим чином, або виводиться з адреси канального рівня пристрою. Це призводить до того, що в адресі IPv6 з’являється частина адреси канального рівня.
Налаштування адреси IPv6
Як і IPv4, адресу IPv6 можна призначити вручну або автоматично. Однак IPv6 має два різних типи автоматичної конфігурації: DHCPv6 та автоконфігурація адреси без стану (SLAAC, Stateless Address Autoconfiguration).
SLAAC є простішим із двох автоматизованих методів і цей метод вбудований прямо в стандарт IPv6. Повідомлення використовують новий протокол виявлення сусіда (NDP, Neighbor Discovery Protocol), який дозволяє пристроям знаходити один одного та запитувати інформацію про мережу. Ця інформація надсилається маршрутизаторами і може містити префікси IPv6, які пристрої можуть використовувати, поєднуючи їх із ідентифікатором інтерфейсу за своїм вибором, якщо отримана адреса ще не використовується. Пристрої не надають маршрутизатору зворотний зв’язок про фактичні адреси, які вони створили.
DHCPv6, з іншого боку, є оновленим DHCP, призначеним для роботи зі змінами у IPv6. Це дозволяє точніше контролювати інформацію, що передається клієнтам, наприклад, дозволяє щоразу надавати одну й ту саму адресу одному і тому ж клієнту та надсилати клієнту більше налаштувань, ніж SLAAC. При використанні DHCPv6 клієнти повинні отримати явну згоду сервера DHCP, щоб використовувати адресу.
Метод статичного призначення інтерфейсу адреси IPv6 такий самий, як і для IPv4:
$ sudo ip addr add 2001:db8:0:abcd:0:0:0:7334/64 dev ens33
Щоб переконатися, що призначення спрацювало, використовується та сама команда ip addr show
:
$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 25: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:0c:29:33:3b:25 brd ff:ff:ff:ff:ff:ff inet 192.168.0.5/24 192.168.0.255 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::010c:29ff:fe33:3b25/64 scope link noprefixroute valid_lft forever preferred_lft forever inet6 2001:db8:0:abcd::7334/64 scope global valid_lft forever preferred_lft forever
Тут ми також бачимо локальну адресу каналу fe80::010c:29ff:fe33:3b25/64
.
Як і для IPv4, команду ping також можна використовувати для підтвердження доступності пристроїв через IPv6:
$ ping 2001:db8:0:abcd::1 PING 2001:db8:0:abcd::1(2001:db8:0:abcd::1) 56 data bytes 64 bytes from 2001:db8:0:abcd::1: icmp_seq=1 ttl=64 time=0.030 ms 64 bytes from 2001:db8:0:abcd::1: icmp_seq=2 ttl=64 time=0.040 ms 64 bytes from 2001:db8:0:abcd::1: icmp_seq=3 ttl=64 time=0.072 ms --- 2001:db8:0:abcd::1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 43ms rtt min/avg/max/mdev = 0.030/0.047/0.072/0.018 ms
Note
|
У деяких системах Linux |
Щоб повторно перевірити локальну адресу каналу, знову скористайтеся командою ping. Але оскільки всі інтерфейси використовують префікс fe80::/64
, правильний інтерфейс необхідно вказати разом з адресою:
$ ping6 -c 1 fe80::010c:29ff:fe33:3b25%ens33 PING fe80::010c:29ff:fe33:3b25(fe80::010c:29ff:fe33:3b25) 56 data bytes 64 bytes from fe80::010c:29ff:fe33:3b25%ens33: icmp_seq=1 ttl=64 time=0.049 ms --- fe80::010c:29ff:fe33:3b25 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.049/0.049/0.049/0.000 ms
DNS
IP-адреси важко запам’ятати, і вони не мають необхідного ефекту, якщо ви намагаєтеся продати послугу чи продукт. Ось тут і вступає в гру система доменних імен (DNS, Domain Name System). У своїй найпростішій формі DNS — це розподілена телефонна книга, яка співставляє зручні для запам’ятовування доменні імена, такі як example.com
, з IP-адресами. Коли, наприклад, користувач переходить на веб-сайт, він вводить DNS-ім’я вузла як частину URL-адреси. Потім веб-браузер надсилає ім’я DNS на будь-який налаштований DNS-резольвер. Цей DNS-резольвер, у свою чергу, знаходить адресу, яка зіставляється з доменом. Потім резольвер повертає цю адресу, а веб-браузер намагається зв’язатися з веб-сервером за цією IP-адресою.
Резольвери, які Linux використовує для пошуку даних DNS, налаштовані у файлі конфігурації /etc/resolv.conf
:
$ cat /etc/resolv.conf search lpi nameserver 192.168.0.1
Коли резольвер виконує пошук імені, він спочатку перевіряє файл /etc/hosts
, щоб побачити, чи містить він адресу для імені, за яким був запит. Якщо це так, він повертає цю адресу і не зв’язується з DNS. Це дозволяє адміністраторам мережі забезпечувати вирішення імен без необхідності налаштовувати повноцінний DNS-сервер. Кожен рядок у цьому файлі містить одну IP-адресу з одним або кількома іменами:
127.0.0.1 localhost.localdomain localhost ::1 localhost.localdomain localhost 192.168.0.10 server 2001:db8:0:abcd::f server
Щоб виконати пошук у DNS, скористайтеся командою host
:
$ host learning.lpi.org learning.lpi.org has address 208.94.166.198
Більш детальну інформацію можна отримати за допомогою команди dig
:
$ dig learning.lpi.org ; <<>> DiG 9.14.3 <<>> learning.lpi.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21525 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 2ac55879b1adef30a93013705d3306d2128571347df8eadf (bad) ;; QUESTION SECTION: ;learning.lpi.org. IN A ;; ANSWER SECTION: learning.lpi.org. 550 IN A 208.94.166.198 ;; Query time: 3 msec ;; SERVER: 192.168.0.1#53(192.168.0.1) ;; WHEN: Sat Jul 20 14:20:21 EST 2019 ;; MSG SIZE rcvd: 89
Тут ми також бачимо назви типів записів DNS, у даному випадку A
для IPv4.
Сокети
Сокет є кінцевою точкою зв’язку для двох програм, які спілкуються між собою. Якщо сокет підключений через мережу, програми можуть працювати на різних пристроях, наприклад, веб-браузер, що працює на ноутбуці користувача, і веб-сервер, що працює в центрі обробки даних компанії.
Існує три основних типи сокетів:
- Unix сокети
-
З’єднують процеси, запущені на одному пристрої.
- Протокол датаграм користувача (UDP, User Datagram Protocol)
-
З’єднують застосунки за допомогою протоколу, який є швидким, але не стійким.
- Протокол керування передаванням (TCP, Transmission Control Protocol)
-
Надійніші за UDP-сокети і, наприклад, підтверджують отримання даних.
Сокети Unix можуть з’єднувати лише застосунки, запущені на одному пристрої. Однак сокети TCP і UDP можуть підключатися через мережу. TCP дозволяє створити потік даних, які завжди надходять у тому порядку, в якому вони були надіслані. UDP працює за принципом надіслав та забув; пакет надіслано, але його доставка адресату не гарантується. Проте UDP не має накладних витрат як TCP, що робить його ідеальним для програм з низькою затримкою, таких як онлайн-відеоігри.
TCP і UDP використовують порти для адресації кількох сокетів на одній IP-адресі. Хоча вихідний порт для підключення зазвичай є випадковим, порти призначення стандартизовані для певної служби. Наприклад, HTTP зазвичай розміщується на порту 80, HTTPS запускається на порту 443. SSH, протокол для безпечного входу у віддалену систему Linux, прослуховує порт 22.
Команда ss
дозволяє адміністратору досліджувати всі сокети на комп’ютері Linux. Вона показує все, починаючи з адреси джерела, адреси призначення та типу. Однією з її найкращих особливостей є використання фільтрів, щоб користувач міг відстежувати сокети в будь-якому стані підключення, який він бажає. ss
можна запустити з набором параметрів, а також з застосуванням фільтру, щоб обмежити відображену інформацію.
При виконанні команди без будь-яких параметрів вона показує список усіх встановлених сокетів. Використання параметра -p
додає інформацію про процес використання кожного сокету. Параметр –s
показує загальний список сокетів. Для цього інструменту доступно багато інших опцій, але основні — це -4
та -6
для фільтрації протоколів IPv4 або IPv6 відповідно, -t
та -u
дозволяють адміністратору вибрати сокети TCP або UDP і -l
, щоб показати лише сокет, який прослуховує нові з’єднання.
Наприклад, у наведеній нижче команді перелічено всі сокети TCP, які зараз використовуються:
$ ss -t State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 192.168.0.5:49412 192.168.0.1:https ESTAB 0 0 192.168.0.5:37616 192.168.0.1:https ESTAB 0 0 192.168.0.5:40114 192.168.0.1:https ESTAB 0 0 192.168.0.5:54948 192.168.0.1:imap ...
Вправи до посібника
-
Мережного адміністратора просять призначити дві IP-адреси інтерфейсу
ens33
хоста, одну адресу IPv4 (192.168.10.10/24
) і одну адресу IPv6 (2001:0:0:abcd:0:8a2e:0370:7334/64
). Які команди він повинен ввести, щоб досягти цього результату? -
Які адреси, наведені в списку нижче, є приватними?
192.168.10.1
120.56.78.35
172.16.57.47
10.100.49.162
200.120.42.6
-
Який запис ви б додали до файлу hosts, щоб призначити
192.168.0.15
дляexample.com
? -
Який ефект матиме наступна команда?
sudo ip -6 route add default via 2001:db8:0:abcd::1
Дослідницькі вправи
-
Назвіть тип запису DNS, який використовується для обслуговування таких запитів:
-
Текстові дані
-
Зворотний пошук IP-адреси
-
Домен, який не має власної адреси і покладається на інший домен для отримання цієї інформації
-
Поштовий сервер
-
-
У Linux є функція, яка називається мостом (bridging), що вона робить і чим корисна?
-
Який параметр потрібно вказати команді
ss
, щоб переглянути всі підключені UDP-сокети? -
Яка команда показує список усіх сокетів, запущених на пристрої Linux?
-
Наступний результат генерується командою з попередньої вправи. Скільки активних TCP і UDP-сокетів?
Total: 978 (kernel 0) TCP: 4 (estab 0, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 0 - - RAW 1 0 1 UDP 7 5 2 TCP 4 3 1 INET 12 8 4 FRAG 0 0 0
Підсумки
У цій темі розглядається мережа вашого комп’ютера Linux. Спочатку ми дізналися про різні рівні мережі:
-
Канальний рівень безпосередньо з’єднує пристрої.
-
Мережевий рівень забезпечує маршрутизацію між мережами та глобальним адресним простором.
-
Рівень застосунків з’єднує застосунки між собою.
Ми побачили, як IPv4 і IPv6 використовуються для адресації окремих комп’ютерів, і як TCP і UDP створюють сокети, які використовуються застосунками для підключення один до одного. Ми також дізналися, як DNS використовується для співставлення імен з IP-адресами.
Команди, які використовуються у вправах:
dig
-
Формує запит до DNS та надає докладну інформацію про запити та відповіді DNS.
host
-
Формує запит до DNS та надає вихідні дані у скороченому вигляді.
ip
-
Налаштовує мережу в Linux, включно з мережними інтерфейсами, адресами та маршрутизацією.
ping
-
Перевіряє підключення до віддаленого пристрою.
ss
-
Показує інформацію про сокети.
Відповіді до вправ посібника
-
Мережного адміністратора просять призначити дві IP-адреси інтерфейсу
ens33
хоста, одну адресу IPv4 (192.168.10.10/24
) і одну адресу IPv6 (2001:0:0:abcd:0:8a2e:0370:7334/64
). Які команди він повинен ввести, щоб досягти цього результату?sudo ip addr add 192.168.10.10/24 dev ens33 sudo ip addr add 2001:0:0:abcd:0:8a2e:0370:7334/64 dev ens33
-
Які адреси, наведені в списку нижче, є приватними?
192.168.10.1
X
120.56.78.35
172.16.57.47
X
10.100.49.162
X
200.120.42.6
-
Який запис ви б додали до файлу hosts, щоб призначити
192.168.0.15
дляexample.com
?192.168.0.15 example.com
-
Який ефект матиме наступна команда?
sudo ip -6 route add default via 2001:db8:0:abcd::1
Вона додасть до таблиці маршрут за замовчуванням, який надсилає весь трафік IPv6 на маршрутизатор з внутрішньою адресою
2001:db8:0:abcd::1
.
Відповіді до дослідницьких вправ
-
Назвіть тип запису DNS, який використовується для обслуговування таких запитів:
-
Текстові дані
TXT
-
Зворотний пошук IP-адреси
PTR
-
Домен, який не має власної адреси і покладається на інший домен для отримання цієї інформації
CNAME
-
Поштовий сервер
MX
-
-
У Linux є функція, яка називається мостом (bridging), що вона робить і чим корисна?
Міст з’єднує кілька мережевих інтерфейсів. Усі інтерфейси, підключені до мосту, можуть спілкуватися так, ніби вони підключені до однієї мережі канального рівня: усі пристрої використовують IP-адреси з однієї підмережі і не потребують маршрутизатора для підключення один до одного.
-
Який параметр потрібно вказати команді
ss
, щоб переглянути всі підключені UDP-сокети?Параметр
-u
показує всі встановлені UDP-сокети. -
Яка команда показує список усіх сокетів, запущених на пристрої Linux?
Команда
ss -s
показує список усіх сокетів -
Наступний результат генерується командою з попередньої вправи. Скільки активних TCP і UDP-сокетів?
Total: 978 (kernel 0) TCP: 4 (estab 0, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 0 - - RAW 1 0 1 UDP 7 5 2 TCP 4 3 1 INET 12 8 4 FRAG 0 0 0
Активно 11 сокетів TCP та UDP.