Настройка сети в 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 – это интерфейс)