Коли для налаштування мережевого інтерфейсу вручну потрібні мережа, мовлення та шлюз?


10

https://wiki.debian.org/NetworkConfiguration#Bridging_without_Switching

Наведена вище URL-адреса говорить наступне. Але мені незрозуміло, коли вони необов’язкові та коли - ні. Не могли б ви надати мені посилання на посилання, що описують це? Дякую.

Якщо ви налаштовуєте його вручну, тоді щось подібне встановить шлюз за замовчуванням (мережа, трансляція та шлюз необов’язкові):

auto eth0
iface eth0 inet static
    address 192.0.2.7
    netmask 255.255.255.0
    gateway 192.0.2.254

2
В останніх версіях Ubuntu, які використовують dnsmasq, вам також потрібно оголосити сервери імен DNS.
chili555

@ chili555, це працює, якщо додати пакет Resolconf. Прочитайте мою відповідь внизу під цією. ;-) Ви добре з відповіддю, користувач1424739?
Андерс

Я вважаю, що в останніх версіях Ubuntu, що resoluvconf встановлений за замовчуванням; ні??
chili555

1
Не могли б ви трохи поглянути на відповідь @Anders. Дивіться, що мені робити, коли хтось відповість на моє запитання?
user.dz

@ chili555 Так, це так. Але я просто хотів уточнити зв'язок між цим пакетом та dns-серверами в / e / n / інтерфейсах. Вибачте, якщо мені було незрозуміло.
Андерс

Відповіді:


25

Як налаштувати статичну 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частині. Це може бути те, що ви хочете, чи ні.


1
Гарне пояснення, дякую. Оскільки chili555 зазначає важливість DNS для вирішення доменних імен, буде добре, якщо ви додасте пункт про це. (Що стосується підключення до Інтернету чи WAN, то тут потрібно все налаштувати)
user.dz

Щось на зразок цього?
Андерс

1
Будь ласка. :-) Цікаво, чи це достатньо хороша відповідь для користувача1424739
Anders

У будь-якому разі, /etc/internet/interfacesвони збираються застаріти Ubuntu на користь своїх NetPlan, побачити /etc/netplan/*.yamlта NM(що можна змінити nm-tools).
Андерс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.