Хороше детальне пояснення синтаксису / etc / network / interface?


139

Я зрозумів саму основну концепцію використання /etc/network/interfaces, але все, що я знаходжу в Інтернеті, - це приклади, приклад за прикладом, з якого я можу скопіювати та вставити. Що я сумую - це пояснення синтаксису, пояснення значення команд і порядок, який команди вимагають. Я хочу зрозуміти, тому що більшості часу копіювання-вставки недостатньо, тому що я не працюю на свіжому апараті, тому я не можу просто перезаписати існуючі конфігурації, оскільки це зламає багато матеріалів. man interfacesне дуже корисно, оскільки написано дуже складно.

Приклад запитань у мене є: що саме означає inetв ifaceрядку (я навіть не міг його знайти на сторінці сторінки), що саме означає manualу ifaceрядку (багато прикладів використовують це, але відповідно до manpage потрібен додатковий конфігураційний файл, який прикладів немає), коли я їх використовую чи потребую? Коли ні? Коли я створюю міст, що саме відбувається з інтерфейсами?


4
На головній сторінці йдеться про те, що відбувається після імені інтерфейсу - це сімейство адрес, яке використовує інтерфейс. "inet" - це ім'я для IPv4, inet6 для ipv6. Є також ipx, x25, appletalk ..., хоча ifupdown має справу лише з inet / inet6 / ipx, як пояснює сторінка man. manualозначає, що якщо вгору з цього приводу нічого не робиться, ви повинні зробити це самостійно вручну.
Стефан Шазелас

Відповіді:


168

Що ж, давайте розділимо його на частини, щоб зрозуміти /etc/network/interfaces:

Посилання шару + параметри типу інтерфейсу (як правило, перший із строф інтерфейсу та називається адреса сімейства + метод за допомогою interfaces(5)manpages):

auto interface- Запустіть інтерфейс (и) під час завантаження. Ось чому loінтерфейс використовує такий тип конфігурації зв'язків.

allow-auto interface - Такий же, як auto

allow-hotplug interface- Запустіть інтерфейс, коли буде виявлена ​​подія "гарячої штепсельної вилки". У реальному світі це використовується в тих самих ситуаціях, що й у тому, autoщо різниця полягає в тому, що він буде чекати події на кшталт "виявлення apde hotplug api" або "підключення кабелю". Див. " Супутні речі (гаряча пробка) " для отримання додаткової інформації.

Ці параметри в значній мірі "рівень 2" варіантів, встановлення станів посилань на інтерфейсах, і не пов'язані з "шаром 3" (маршрутизація та адресація). Як приклад, ви можете мати агрегацію посилань, де інтерфейс bond0 повинен бути вгору незалежно від стану зв'язку, і його члени можуть бути готовими після події стану посилання:

auto bond0
iface bond0 inet manual
        down ip link set $IFACE down
        post-down rmmod bonding
        pre-up modprobe bonding mode=4 miimon=200
        up ip link set $IFACE up mtu 9000
        up udevadm trigger

allow-hotplug eth0
iface eth0 inet manual
        up ifenslave bond0 $IFACE
        down ifenslave -d bond0 $IFACE 2> /dev/null

allow-hotplug eth1
iface eth1 inet manual
        up ifenslave bond0 $IFACE
        down ifenslave -d bond0 $IFACE 2> /dev/null

Отже, таким чином я створюю агрегацію посилань, і інтерфейси будуть додані до неї та видалені в станах кабельних каналів зв'язку.

Найпоширеніші типи інтерфейсів:

Усі параметри нижче - це суфікс визначеного інтерфейсу ( iface <Interface_family>). В основному iface eth0створює строфу, яку називають eth0на пристрої Ethernet. iface ppp0слід створити інтерфейс " точка-точка" , і він може мати різні способи отримання таких адрес, inet wvdialякі пересилають конфігурацію цього інтерфейсу до wvdialconfсценарію. Кортеж inet/ inet6+ optionвизначатиме версію протоколу IP , який буде використовуватися і як цю адресу буде налаштований ( static, dhcp, scripts...). В Інтернет-посібниках Debian ви дізнаєтесь більше про це.

Параметри інтерфейсів Ethernet:

inet static - Визначає статичну IP-адресу.

inet manual- Не визначає IP-адресу для інтерфейсу. Як правило, використовуються інтерфейси, що є членами мосту або агрегації, інтерфейси, які повинні працювати в розмитому режимі ( наприклад, дзеркальне відображення порту або мережеві TAP ) або налаштовані на них пристрої VLAN. Це спосіб зберегти інтерфейс без IP-адреси.

inet dhcp - Придбайте IP-адресу через протокол DHCP.

inet6 static - Визначає статичну адресу IPv6.

Приклад:

# Eth0
auto eth0
iface eth0 inet manual
    pre-up modprobe 8021q
    pre-up ifconfig eth0 up
    post-down ifconfig eth0 down

# Vlan Interface
auto vlan10
iface vlan10 inet static
        address 10.0.0.1
        netmask 255.255.255.0
        gateway 10.0.0.254
        vlan-raw-device eth0
        ip_rp_filter 0

Цей приклад привести eth0, і створити інтерфейс VLAN з ім'ям , vlan10який буде обробляти бирки з номером 10 на кадр Ethernet.

Загальні параметри всередині строфи інтерфейсу (шари 2 і 3):

address - IP-адреса для статичного IP-налаштованого інтерфейсу

netmask- мережева маска. Можливо, не вдасться вимкнути, якщо використовувати cidr-адресу. Приклад:

iface eth1 inet static
    address 192.168.1.2/24
    gateway 192.168.1.1

gateway- Шлюз за замовчуванням сервера. Будьте обережні, щоб використовувати лише одного цього хлопця.

vlan-raw-device - На інтерфейсі VLAN визначає свого "батька".

bridge_ports - На інтерфейсі мосту визначте його членів.

down- Використовуйте таку команду, щоб замінити інтерфейс замість ifdown.

post-down - Дії, вжиті відразу після виходу з інтерфейсу.

pre-up - Дії перед налаштуванням інтерфейсу.

up- Використовуйте таку команду, щоб створити інтерфейс замість ifup. Ваша уява повинна використовувати будь-який варіант, доступний на iputils. Як приклад, ми могли б використовувати up ip link set $IFACE up mtu 9000для включення jumbo кадри під час upроботи (замість того, щоб використовувати саму mtuопцію). Ви також можете зателефонувати на будь-яке інше програмне забезпечення, як-от up sleep 5; mii-tool -F 100baseTx-FD $IFACEпримусити 100 Мбіт / с повний дуплекс через 5 секунд після налаштування інтерфейсу.

hwaddress ether 00:00:00:00:00:00- Змініть mac-адресу інтерфейсу замість того, щоб використовувати ту, яка твердо кодується в rom, або генерується алгоритмами. Ви можете використовувати ключове слово, randomщоб отримати рандомізовану мак-адресу.

dns-nameservers- IP адреси серверів імен. Потрібен resolvconfпакет. Це спосіб сконцентрувати всю інформацію, /etc/network/interfacesа не використовувати /etc/resolv.confдля DNS-конфігурацій. Не редагуйте resolv.confфайл конфігурації вручну, оскільки це буде динамічно змінено програмами в системі.

dns-search example.net- Додайте example.net як домен до запитів хоста, створюючи FQDN. варіант domainз/etc/resolv.conf

wpa-ssid - Бездротовий зв’язок: встановлення бездротового протоколу WID SSID.

mtu- розмір MTU mtu 9000= Jumbo Frame. Корисно, якщо ваш вікно Linux підключено до комутаторів, які підтримують великі розміри MTU. Може порушити деякі протоколи (у мене був поганий досвід роботи з snmp та jumbo frame).

wpa-psk - Бездротовий зв'язок: встановіть шестидесятковий кодований PSK для вашого SSID.

ip_rp_filter 1- Увімкнено фільтр зворотного шляху . Корисно в ситуаціях, коли у вас є два маршрути до хоста, і це змусить пакет повернутися звідки він прийшов (той самий інтерфейс, використовуючи його маршрути). Приклад: Ви підключені до свого lan ( 192.168.1.1/24) і у вас є сервер dlna з одним інтерфейсом у вашому lan ( 192.168.1.10/24) та іншим інтерфейсом на dmz для виконання адміністративних завдань ( 172.16.1.1/24). Під час сеансу ssh з комп'ютера на dlna dmz ip, інформація повинна повернутися до вас, але зависне назавжди, оскільки ваш dlna-сервер намагатиметься надіслати відповідь безпосередньо через інтерфейс LAN. Якщо увімкнено rp_filter, він забезпечить повернення звідки звідки він прийшов. Більше інформації тут .

Деякі з цих варіантів не є обов'язковими. Debian попередить вас, якщо ви, наприклад, поставите IP-адресу в інтерфейс без маски.

Ви можете знайти більше хороших прикладів налаштування мережі тут .

Пов'язані речі :

Посилання, що містять інформацію про /etc/network/interfacesфайл конфігурації мережі:


Дякую, це дуже допомагає. Чи inetмає щось спільне з "інтернетом"? Я читав, що колись це означає "IPv4" і inet6означає "IPv6", але термін "inet" дійсно заплутаний, коли ви бачите його і плутаєте його з коротким терміном "Інтернет". Імена, які використовуються, як-от eth0, чи визначені ці, чи можу я їх обрати сам? Якщо у мене є більше одного адаптера локальної мережі, як я можу визначити, що ethналежить до якого адаптера LAN?
Foo Bar

2
І те й інше. Разом вони визначають спосіб придбання ip адреси (dhcp, статичний, скрипт ppp, без адреси) та версію протоколу ip ( inet= v4 та inet6= v6). Імена інтерфейсу значною мірою залежать від розподілу, який ви використовуєте, та способу udevналаштування. Debian використовує eth*і wlan*для кабельних і бездротових інтерфейсів. Fedora використовує схему biosdevname, де em0перший вбудований інтерфейс Ethernet на вашій материнській платі, а p<slot>p<eth port>також ім'я для PCI nic. Ви можете виправити імена мережі на /etc/udev/rules.d/70-persistent-net.rulesабо створити псевдоніми на interfaces.

2
Щодо "шлюзу - шлюзу за замовчуванням на сервері. Будьте обережні, щоб використовувати лише одного хлопця". Це один на строфу чи один інтерфейс шлюзу серед усіх строф?
ctbrown

2
Має бути один шлюз серед усіх строф, або ви матимете проблеми з маршрутом за замовчуванням. Для роботи з кількома шлюзами / мультипосиланнями знадобиться деяка роздумка з iptables + маркування пакету + правила ip.

Один невеликий запит, якщо у цьому файлі у мене є iface eth0 inet статична, а потім, якщо я запишу якесь IP-поле проти адреси, чи означає це, що цей конкретний IP, який я щойно написав, буде прив’язаний до MAC-адреси моєї системи?
k10

0

Я також додам, що:

  • інтерфейси призначені для служб ifup / ifdown.
  • Коли ви використовуєте enable-hotplug, він не почнеться з ifup / ifdown, bcos u потрібно використовувати прапор --allow = hotplug.

Ви можете відстежувати, що відбувається з ifup, використовуючи прапор --verbose.

Я не на 100% від цього, але здається, що в основному, коли виклик ifup буде виконати всі з / etc / network / інтерфейсів з up ... якщо не вказано інше.

Я не знаю, як це стосується: сервісних мереж ...

Було б добре, якби хтось зазначив, що відбувається після дзвінка:

service networking restart

стосовно ifup / ifdown.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.