Як налаштувати статичну IP-адресу та чому
Зауважте! Я не говорю про інші способи створення мережі, як, наприклад, у NetworkManager. /etc/network/interfacesNM не торкається жодного пристрою, про який йдеться
Щоб мати можливість спілкуватися через мережу IP (IPv4 та IPv6), комп'ютер повинен знати, яку IP-адресу має. Тому addressнеобхідна директива, щоб сказати це комп'ютеру.
Коли комп'ютер хоче поговорити з іншим комп'ютером, він використовує IP-адресу інших комп'ютерів, щоб перевірити, чи є цей комп'ютер у тій же мережі, локальній мережі. Якщо так, комп'ютер може безпосередньо спілкуватися з іншим комп'ютером.
То як комп'ютер знає, коли він спілкується з комп'ютером в одній і тій же локальній мережі? Використовуючи мережі netmask, де чиста частина адреси встановлюється на одиниці, а частина хоста встановлюється на нулі. Таким чином, виконуючи побіт І операцію між кожним бітом IP-адреси та мережевою маскою, ми отримаємо мережеву адресу IP-адреси, де частина хоста дорівнює нулю. Отже, якщо ми робимо це на IP-адресі комп'ютерів та інших IP-адресах комп'ютерів, ми отримуємо кожну мережеву адресу. Якщо вони рівні, це означає, що комп'ютери знаходяться в одній мережі та можуть спілкуватися безпосередньо один з одним.
Якщо мережеві адреси не рівні, вони знаходяться в різних локальних мережах і не можуть безпосередньо спілкуватися один з одним. Тоді комп'ютер повинен використовувати спеціальний комп'ютер, який підключений до інших локальних мереж. Цей комп'ютер - це маршрутизатор (який також може мати брандмауер та NAT). Отже, коли комп'ютер хоче спілкуватися з іншими комп'ютерами за межами локальної мережі, він повинен знати адресу того комп’ютера, який встановлений gatewayдирективою. Якщо інший інтерфейс вже встановив gatewayзначення, ви не повинні і не повинні встановлювати іншу директиву про шлюз для цього інтерфейсу. У gatewayдирективі встановлює маршрут за замовчуванням для комп'ютера, так що вам потрібно тільки один для IPv4 і тільки один для IPv6 на кожній машині. Цю мережеву адресу можна встановити вручну за допомогою networkдирективи.
Колись комп'ютер хоче спілкуватися з усіма комп'ютерами в локальній мережі, і він використовує широкомовні адреси. Цю адресу слухають усі комп'ютери в одній локальній мережі. Це в основному те саме, що мережева адреса, за винятком того, що частина хоста - це не всі нулі та замість них усі. Ця широкомовна адреса задається директивою broadcastв інтерфейсі.
Адреса інтерфейсу networkпотрібно розраховувати лише один раз і зазвичай обчислюється правильно з цього addressта netmaskдиректив. Те саме з broadcastадресою. Тому їх не потрібно встановлювати. Насправді, якщо встановити одне або обидва значення неправильно, ви можете втратити зв’язок з Інтернетом та іншими комп’ютерами у своїй локальній мережі. Тож, якщо у вас є якісь дивні значення на них, нехай комп'ютер обчислює їх за вас.
Тож мінімальні статичні налаштування або строфи /etc/network/interfacesможуть виглядати так для пристрою eth1в приватній мережі:
iface eth1 static inet
address 192.168.44.10
netmask 255.255.255.0
gateway 192.168.44.1
Як працює розв’язування імен та як він прив’язаний до DNS.
Доменні імена використовуються для перетворення між простими для людини читаннями і запам'ятовуванням доменних імен та комп’ютерами не так просто запам'ятати IP-адресу, згадану вище. Це називається вирішенням імен .
Зазвичай це контролюється файлом /etc/nsswitc.confта рядком, з якого починається hosts:. Якщо ви попросите комп'ютер підключитися до комп'ютера my.example.com, він перегляне цей файл і спробує вирішити IP-адресу від імені my.example.com. Цей файл насправді не відповідає на питання, "який IP-адресу має my.example.com", він просто повідомляє комп'ютеру, де він може знайти відповідь.
Зазвичай він спробує /etc/hostsфайл спочатку для статичних локальних імен, потім avahi mDNSдля динамічних локальних імен, а потім resovler доменного імені DNS, щоб отримати ім’я з Інтернету.
Якщо деякі з них повільно відповідають на ваші запитання, це може здатися, що комп'ютер затримається на деякий час. Тож якщо ви це отримаєте, спочатку перевірте вирішення імені.
Отже, додаючи статичні адреси, ви можете просто додати його у свій /etc/hostsфайл. До речі, якщо у вас є статична адреса, ви, ймовірно, повинні змінити там IP-адресу для вашого комп'ютера на свою IP-адресу, а не за замовчуванням 127.0.1.1(що є в локальній мережі, де localhost, 127.0.0.1). Це працює добре лише для клієнтів, а не для серверів.
Динамічні адреси, які ви отримуєте від машин Linux із avahiпакетом та від Apple-машин (і MS Windows з iTunes?). Це обробляється "магією", і вам не потрібно буде це виправляти.
DNS використовується для доступу до Інтернету, і вам потрібно повідомити комп’ютеру, де ті сервери DNS, які ви хочете використовувати, яку IP-адресу використовувати та який домен DNS за замовчуванням.
Це робиться у файлі /etc/resolv.confі може бути статично налаштовано. Це не так добре працює в нашому не так статичному світі, тому зазвичай у вас встановлений пакет, який називається resolvconf. Це дозволить вам встановити ці налаштування у /e/n/interfacesфайлі.
Отже, якщо ми припускаємо, що ми хочемо додати один із DNS-серверів Googles 8.8.8.8, а також сервер DNS вашого провайдера 192.0.2.1, і ваш my.example.orgдомен за замовчуванням, ви просто відредагуйте /etc/network/interfacesфайл і додайте ці два рядки в строфу для статичного пристрою.
dns-nameservers 8.8.8.8 192.0.2.10
dns-search my.example.org
Ви також можете помітити, що DNS-роздільник використовуватиме не більше трьох серверів DNS. Будь ласка , подивіться на цей питання в man-page з resolv.conf. Як завжди, ви можете використовувати команду man nsswitch.conf, man resolv.confі man resolvconfдля отримання додаткової інформації.
Також зауважте, що я використовую домен example.com і example.org та IP мережу 192.0.2.0/24 для DNS-сервера на прикладі провайдера. Вони чітко визначені для використання в прикладах. Дивіться http://example.com/ або http://tools.ietf.org/html/rfc2606 та rfc5735
Як ви потім перевіряєте, чи працює він?
Це можна зробити багатьма способами, але я зазвичай використовую
getent hosts my.test.com
перевірити всю установку на дозвіл імені. Якщо я просто хочу перевірити, чи працює DNS, я використовую одну з цих команд:
host my.test.com
dig my.test.com
Але пам’ятайте, що вони перевіряють лише DNS через налаштування у /etc/resolv.confфайлі, а не в /etc/nsswitch.confчастині. Це може бути те, що ви хочете, чи ні.