Налаштування мережі в Linux через конфиг-файли

   Перший раз я познайомився з цією операційною системою приблизно шість років тому. Тоді наскільки я пам'ятаю тільки що вийшов Red Hat, який я спробував встановити, але нас чекав неприємний сюрприз, у нас не вийшло в нього увійти. 
   Але стаття буде зовсім про інше. Пізніше, через мою голову і руки пройшли майже всі дистрибутиви Linux, і до кожної системі були свої підходи для настройки мережі. І в цій статті я спробую пояснити найпопулярніші з усіх. Я дуже сподіваюся, що ця стаття буде дуже корисна користувачам, які все ще клацають мишкою по екрану і ставлять галочки в різних графічних менеджерах, але вже починають розуміти що це зовсім не true =) 
   Також може бути ця стаття буде пізнавальною і тим користувачам, хто пише свої скрипти для управління мережею, і розміщує своє творіння в якому-небудь rc.local


  Отже, для початку поговоримо про главу сімейства, про один з найпоширеніших дистрибутивів по числу RHB (Red Hat based). 
Наприклад, до цього дистрибутива так само ставляться нижчеперелічені системи:
1. ASPLinux
2. Fedora
3. Mandriva
4. RHEL / CentOS

   Скрипти які необхідні для того щоб налаштувати мережі і самі конфігураційні файли в сімействі цих дистрибутивів розміщуються в / etc / sysconfig / network-scripts / 
Там можна знайти пару скриптів типу ifup- * і така ж кількість ifdown- *, які природно можуть підняти або опустити той чи інший тип інтерфейсу, а також ifcfg- * (де * - ім'я файлу), де розміщуються настройки даних інтерфейсів.
 Якщо ви ще не налаштували мережу то можна виявити там файл ifcfg-lo, який описує інтерфейс loopback. У мене на даний момент мається Fedora Core 7, файл цей виглядає так:

DEVICE = lo
IPADDR = 127.0.0.1
NETMASK = 255.0.0.0
NETWORK = 127.0.0.0
BROADCAST = 127.255.255.255
ONBOOT = yes
NAME = loopback

   Не всі настройки, які я тут перерахував обов'язкові. Дуже часто щоб задати інтерфейс можна просто вказати IPADDR і NETMASK. Вводити параметр DEVICE потрібно для того, якщо необхідно щоб в імені скрипта після "ifcfg-" було не ім'я інтерфейсу, а інше слово. Також тут можна вказати параметри BOOTPROTO (static або dhcp), GATEWAY, HWADDR (це якщо ви хочете змінити mac-адреса інтерфейсу) і багато інших. Повний список всіляких параметрів залежить від типу вашого дистрибутива і порушуваного інтерфейсу. Ну а якщо враховувати те, що офіційної інформації толком то і немає, впізнати його можна буде, тільки якщо перелопатити всі скрипти. 
За допомогою таких конфігураційних файлів можна задати PPP інтерфейси, ip тунелі також vlan і багато іншого
За допомогою наступного прикладу я покажу настройку ipip-тунелю (ifcfg-tun0):

DEVICE = tun0
MY_OUTER_IPADDR = 172.16.0.2
PEER_OUTER_IPADDR = 192.168.0.1
MY_INNER_IPADDR = 10.0.0.2
PEER_INNER_IPADDR = 10.0.0.1
TYPE = IPIP
TTL = 255

   На даному прикладі, у нас є адреса 172.16.0.2, можемо зробити тунель з машиною 192.168.0.1, при цьому вказав TTL = 255, далі тунелю присвоїмо адресу 10.0.0.2 peer 10.0.0.1 
Мало хто знає, що крім файлів ifcfg- * в тому ж каталозі можна розмістити файли відповідні їм route- * і rule- *
  Їх використовують для того щоб можна було прописати маршрути і правила маршрутизації ip route, ip rule, наприклад під час використання source-policy routing
Для тунелю, який я вказав тільки що вище, ці файли будуть виглядати так.

rule-tun0:
from 10.0.0.2 lookup mytable

route-tun0:
default dev tun0 table mytable
192.168.0.0/24 dev tun0

   Ми повністю знімемо головний біль, після того як створимо ці файли, які зроблять так, щоб відповідні маршрути і правила могли віддалятися і створюватися під час опускання і підняття інтерфейсу

   Мається ще одна досить таки цікава можливість - це створення алиасов (автоматичне). Якщо у вас є інтерфейс eth0 з адресою 192.168.0.1, а ще туди хочеться повісити і 192.168.0.2, то буде цілком достатньо створити файл з ім'ям ifcfg-etho0: 1, вписати, куди можна крім параметрів NETMASK, IPADDR та інших, ще REALDEVICE = eth0. У декого може виникнути гостра необхідність у створенні декількох алиасов, а для кожного створювати окремі файли трохи незручно, є вихід: нам допоможе ifcfg-eth0-range, який виглядає так

IPADDR_START = 192.168.0.5
IPADDR_END = 192.168.0.15
CLONENUM_START = 3
   Даний приклад допоможе створити інтерфейси eth0: 3-eth0: 13 з присвоєними адресами від 192.168.0.5 до 192.168.0.15
Ну і звичайно буде непробачно згадати про каталогах: ifdown.d і ifup.d, які лежать по тому ж шляху (/ etc / sysconfig / network-scripts).

   В дані каталоги можна помістити власні файли, вони будуть виконуватися під час опускання і підняття інтерфейсу. Вашим скриптам передадуть параметр $ 1 - це назва опущеного або піднятого інтерфейсу. Якщо у вас є мережа, яка налаштована за цими принципами, можна в будь-який момент підняти або опустити інтерфейс за допомогою команди ifdown.d name (name - це інтерфейс)