Як налаштувати статичну IP-адресу та чому
Зауважте! Я не говорю про інші способи створення мережі, як, наприклад, у NetworkManager. /etc/network/interfaces
NM не торкається жодного пристрою, про який йдеться
Щоб мати можливість спілкуватися через мережу 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
частині. Це може бути те, що ви хочете, чи ні.