Актуально для: Debian Lenny, Squeeze; Ubuntu
Денис "Reagent" Ходус @ 20.01.2011
Настройка
сети в Linux Debian. Топик призван стать памяткой для системного
администратора "как управлять сетью в Debian". В нем рассказываются
основные принципы и действия по управлению сетевыми настройками этого
семейства операционных систем.
Сетевые интерфейсы
Debian называет сетевые карты по имени eth и номеру. Виртуальные интерфейсы (loopback, vpn и т.п.) Debian именует отдельно, так-же по имени (например, tun, tap) и номеру за ним.
Например, если у Вас в компьютере 2 сетевых карты, то называться они будут по-умолчанию eth0 и eth1.
Следует учесть, что эта операционная система перманентно привязывает MAC-адрес физического сетевого интерфейса (сетевой карты) к номеру ethX. Так, если у Вас была сетевая карта в компьютере с именем eth0 и Вы ее поменяли, то, загрузившись после замены Вы не увидите ожидаемого eth0, а увидите уже eth1.
Как частный, но показательный случай: сервер с двумя сетевыми интерфейсами eth0 и eth1. Одна из сетевых карт сгорает и администратору приходится ее поменять. Запустив сервер он так и не дожидается ответа на пинг этого сетевого интерфейса. Зайдя под консолью - что он видит? Он видит старую вторую сетевую карту с именем eth1 и новую, но не с именем eth0, как ожидал, а с названием eth2! А это потому, что Debian закрепил за интерфейсом eth0 конкретный интерфейс с конкретным MAC-адресом.
Посмотреть закрепленные карты и их MAC можно по пути:
/etc/udev/rules.d/70-persistent-net.rules
Отредактировав этот файл Вы можете удалить старые сетевые карты из списка Debian.
IP-адреса
Долговременные настройки хранятся в файле /etc/network/interfaces
Вот пример файла:
В этом файле определен IPv4 адрес 192.168.0.1 на сетевой карте eth0. Так-же определен шлюз по-умолчанию 192.168.0.250. Опция dns-nameservers оставлена на случай отсутствия в файле /etc/resolv.conf информации о DNS-серверах.
Следует учесть, что современный Debian не нуждается в строках network и broadcast, прекрасно вычисляя их самостоятельно из IP-адреса и маски. Однако если Вы хотите перезадать эти значения - указать такие опции придется.
А вот пример этого файла для 2х сетевых карт:
На ходу значения IP адресов можно менять утилитой ifconfig:
Эта команда поменяет у сетевой карты eth0 IPv4 адрес на 192.168.0.33 с маской /24.
Если сетевые реквизиты требуется получать по DHCP - указываем в файле interfaces, например:
Указание DNS-сервера
DNS-серверы указываются (не более трех) в файле:
/etc/resolv.conf
Например, вот пример такого файла:
Поменяв в файле значения они сразу начинают действовать.
Имя машины и домен
Посмотреть или поменять на ходу имя машины можно командой hostname:
Домен указывается в файле:
/etc/resolv.conf
например, вот как пример файла resolv.conf:
Перманентно имя машины можно поменять в файле:
/etc/hostname
Но помните, что после этого необходимо поменять так-же имя хоста в файле
/etc/hosts
Чтобы значения в нем соответствовали новому имени хоста (там прописаны такие вещи, как 127.0.0.1, например).
Маршрутизация
Схема статической маршрутизации в Debian традиционная: статические маршруты и шлюз по-умолчанию.
На-лету маршрутизацией можно управлять через утилиту route:
Эта команда добавит маршрут к сети 10.0.3.0:255.255.255.0 на роутер с адресом 192.168.0.251.
А эта команда наоборот, удалит маршрут 10.0.3.0/24.
Роутер по-умолчанию указывается как 0.0.0.0/32 или default, например:
Эта команда добавит шлюз по-умолчанию 192.168.0.250.
Посмотреть текущие маршруты можно командой:
Перманентно статические маршруты указываются в файле
/etc/network/interfaces
Например, возьмем вот такой файл:
В этом файле видно, что:
а) Шлюз по-умолчанию 192.168.0.250
б) При поднятии интерфейса будут добавлены маршруты к сетям 10.0.0.0/24, 10.0.1.0/24 и 10.0.2.0/24 через, соответственно, 192.168.0.251, 192.168.0.252 и 192.168.0.253.
Маршрутизатор
По-умолчанию система не выполняет маршрутизацию проходящих пакетов. Чтобы ее включить (превратить наш сервер в маршрутизатор) необходимо установить переменную ядра
в значение "1".
Например:
Чтобы это значение сохранилось после перезагрузки - добавим его в файл
/etc/sysctl.conf
Вот такой строчкой:
Сетевые алиасы (несколько IP-адресов на одном интерфейсе)
Нередко можно встретить ситуацию, когда одной сетевой карте (или просто одному сетевому интерфейсу) необходимо назначить не один, а несколько IP-адресов. В таком случае:
а) Обязательно присваивается основной адрес интерфейсу ethX
б) Алиасы (добавочные IP-адреса) присваиваются как ethX:Y, где Y - номер алиаса
Например, вот так мы присвоим еще 2 IP-адреса интерфейсу eth0:
Перманентно эти интерфейсы указываются в том же файл, что и все остальные:
/etc/network/interfaces
Давайте приведем пример такого файла:
Тут видно, что мы указали один основной адрес и 3 алиаса. Следует заметить, что к алиасам нельзя применять опции gateway или dns-nameservers.
VLANы
Для начала, убедитесь, что у Вас установлен пакет vlan:
Если нет, то устанавливаем:
Для того, чтобы VLANы устанавливались при перезагрузки - их необходимо прописать в файле
/etc/network/interfaces
Например, вот пример такого файла:
Здесь видно объявление 3х VLANов. Причем и запись vlan333, и записи вида eth0.999 верны. Отличие будет лишь в их название в виде интерфейсов. Я предпочитаю вид eth.XXX, что дает мне сразу информацию о том - на каком интерфейсе влан лежит.
Так-же добавилась опция vlan_raw_device, указывающая системе - на какой сетевой карте этот VLAN будет таггироваться.
В процессе работы VLANами можно управлять через утилиту vconfig. Например:
Эта команда добавит VLAN=777 к интерфейсу eth0.
А эта команда - удалить VLAN vlan777.
Сетевые мосты
Что это такое - почитать можно в интернете. Для организации нам потребуются установленные bridge-utils. Проверим их наличие:
Если нет - ставим:
Мосты прописываются в файле
/etc/network/interfaces
Например, так:
Тут видно, что мы не настраиваем сетевые карты (не прописываем им IP адрес, не даем получить реквизиты по DHCP). Это необходимо так и делать!
Сетевой мост мы называем br0. Уже на нем прописываем все необходимые реквизиты и указываем опцию bridge_ports, которая показывает - какие сетевые интерфейсы включать в этот мост.
На ходу мосты управляются утилитой brctl. Например, таким образом можно создать сетевой мост из 2х сетевых карт (карты не должны быть настроены и должны находиться в состоянии down):
Эта последовательность команд:
а) Создаст виртуальный коммутатор br0
б) Добавит в него сетевые интерфейсы eth0 и eth1
в) "Поднимет" мост (up), т.е. включит его
После этого мосту можно дать сетевые реквизиты (а можно и не давать - в таком случае эти сетевые карты будут работать как неуправляемый коммутатор, из-вне к ним через эти соединений подключиться будет нельзя).
Другие примеры:
Эта команда удалит из виртуального коммутатора (моста) интерфейс eth1.
А эта команда удалит мост br0 совсем.
Link aggregation (Bonding)
Агрегация интерфейсов - способ поднять скорость передачи данных и/или обеспечить отказоустойчивость путем использования двух или более физических сетевых карт. Работает это так, что несколько сетевых карт выступают в роли одной виртуальной (не путать с мостом!), при этом, в зависимости от режима работы, эти сетевые карты или увеличивают пропускную способность (в то количество раз - сколько объединено сетевых карт), или дают отказоустойчивость (т.е. работает одна карта, если она сдыхает - начинает работать вторая), или и то, и другое.
Для работы требуется установленный пакет ifenslave-2.6. Если не установлен - ставим:
Конфигурация прописывается в файле
/etc/network/interfaces
Например, так:
Здесь видно, что физические карты не настраиваются - им не присваиваются статические IP адреса и не позволяется использовать DHCP для получения реквизитов. Вместо этого они участвуют в создании bond0 интерфейса, который уже и получает сетевые реквизиты.
ВНИМАНИЕ! На другой стороне сетевых кабелей необходимо, чтобы сетевые карты были настроены один-в-один так-же (т.е. работали в том же режиме). Если это аппаратные коммутаторы или маршрутизаторы - придется подбирать режим работы - какой поддерживается "железкой" на той стороне. Если это сервер - то лучше всего использовать:
а) такие-же сетевые карты (если это возможно)
б) такую-же ОС (это снизит вероятность сбоев в работе агрегатирования)
Автозапуск скриптов при поднятии/выключении интерфейса
Для этого служат 4 директории:
/etc/network/if-pre-up.d
/etc/network/if-up.d
/etc/network/if-down.d
/etc/network/if-post-down.d
Соответственно, в директории if-pre-up.d располагаются скрипты, которые запускается перед поднятием интерфейса; в if-up.d - скрипты, которые запускаются после поднятия интерфейса; в if-down.d - перед выключением интерфейса, а в if-post-down.d - после выключения.
Среди прочего, вызываемые скрипты могут использовать специальные переменные из окружения вызывающего процесса, например $IFACE (называние интерфейса) или $MODE (операция). Подробнее - в man-страницах.
Сетевые интерфейсы
Debian называет сетевые карты по имени eth и номеру. Виртуальные интерфейсы (loopback, vpn и т.п.) Debian именует отдельно, так-же по имени (например, tun, tap) и номеру за ним.
Например, если у Вас в компьютере 2 сетевых карты, то называться они будут по-умолчанию eth0 и eth1.
Следует учесть, что эта операционная система перманентно привязывает MAC-адрес физического сетевого интерфейса (сетевой карты) к номеру ethX. Так, если у Вас была сетевая карта в компьютере с именем eth0 и Вы ее поменяли, то, загрузившись после замены Вы не увидите ожидаемого eth0, а увидите уже eth1.
Как частный, но показательный случай: сервер с двумя сетевыми интерфейсами eth0 и eth1. Одна из сетевых карт сгорает и администратору приходится ее поменять. Запустив сервер он так и не дожидается ответа на пинг этого сетевого интерфейса. Зайдя под консолью - что он видит? Он видит старую вторую сетевую карту с именем eth1 и новую, но не с именем eth0, как ожидал, а с названием eth2! А это потому, что Debian закрепил за интерфейсом eth0 конкретный интерфейс с конкретным MAC-адресом.
Посмотреть закрепленные карты и их MAC можно по пути:
/etc/udev/rules.d/70-persistent-net.rules
Отредактировав этот файл Вы можете удалить старые сетевые карты из списка Debian.
IP-адреса
Долговременные настройки хранятся в файле /etc/network/interfaces
Вот пример файла:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.240
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.240
В этом файле определен IPv4 адрес 192.168.0.1 на сетевой карте eth0. Так-же определен шлюз по-умолчанию 192.168.0.250. Опция dns-nameservers оставлена на случай отсутствия в файле /etc/resolv.conf информации о DNS-серверах.
Следует учесть, что современный Debian не нуждается в строках network и broadcast, прекрасно вычисляя их самостоятельно из IP-адреса и маски. Однако если Вы хотите перезадать эти значения - указать такие опции придется.
А вот пример этого файла для 2х сетевых карт:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.240
auto eth1
iface eth1 inet static
address 192.168.100.1
netmask 255.255.255.0
network 192.168.100.0
broadcast 192.168.100.255
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.240
auto eth1
iface eth1 inet static
address 192.168.100.1
netmask 255.255.255.0
network 192.168.100.0
broadcast 192.168.100.255
На ходу значения IP адресов можно менять утилитой ifconfig:
# ifconfig eth0 inet 192.168.0.33 netmask 255.255.255.0
Эта команда поменяет у сетевой карты eth0 IPv4 адрес на 192.168.0.33 с маской /24.
Если сетевые реквизиты требуется получать по DHCP - указываем в файле interfaces, например:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
Указание DNS-сервера
DNS-серверы указываются (не более трех) в файле:
/etc/resolv.conf
Например, вот пример такого файла:
nameserver 192.168.0.240
nameserver 192.168.0.242
nameserver 192.168.0.242
Поменяв в файле значения они сразу начинают действовать.
Имя машины и домен
Посмотреть или поменять на ходу имя машины можно командой hostname:
# hostname
myserver
# hostname boo
# hostname
boo
myserver
# hostname boo
# hostname
boo
Домен указывается в файле:
/etc/resolv.conf
например, вот как пример файла resolv.conf:
domain mydomain.ru
nameserver 192.168.0.240
nameserver 192.168.0.242
nameserver 192.168.0.244
nameserver 192.168.0.240
nameserver 192.168.0.242
nameserver 192.168.0.244
Перманентно имя машины можно поменять в файле:
/etc/hostname
Но помните, что после этого необходимо поменять так-же имя хоста в файле
/etc/hosts
Чтобы значения в нем соответствовали новому имени хоста (там прописаны такие вещи, как 127.0.0.1, например).
Маршрутизация
Схема статической маршрутизации в Debian традиционная: статические маршруты и шлюз по-умолчанию.
На-лету маршрутизацией можно управлять через утилиту route:
# route add -net 10.0.3.0/24 gw 192.168.0.251
Эта команда добавит маршрут к сети 10.0.3.0:255.255.255.0 на роутер с адресом 192.168.0.251.
# route del -net 10.0.3.0/24
А эта команда наоборот, удалит маршрут 10.0.3.0/24.
Роутер по-умолчанию указывается как 0.0.0.0/32 или default, например:
# route add default gw 192.168.0.250
Эта команда добавит шлюз по-умолчанию 192.168.0.250.
Посмотреть текущие маршруты можно командой:
# netstat -r
Перманентно статические маршруты указываются в файле
/etc/network/interfaces
Например, возьмем вот такой файл:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.240
up route add -net 10.0.0.0/24 gw 192.168.0.251
up route add -net 10.0.1.0/24 gw 192.168.0.252
up route add -net 10.0.2.0/24 gw 192.168.0.253
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.240
up route add -net 10.0.0.0/24 gw 192.168.0.251
up route add -net 10.0.1.0/24 gw 192.168.0.252
up route add -net 10.0.2.0/24 gw 192.168.0.253
В этом файле видно, что:
а) Шлюз по-умолчанию 192.168.0.250
б) При поднятии интерфейса будут добавлены маршруты к сетям 10.0.0.0/24, 10.0.1.0/24 и 10.0.2.0/24 через, соответственно, 192.168.0.251, 192.168.0.252 и 192.168.0.253.
Маршрутизатор
По-умолчанию система не выполняет маршрутизацию проходящих пакетов. Чтобы ее включить (превратить наш сервер в маршрутизатор) необходимо установить переменную ядра
net.ipv4.ip_forward
в значение "1".
Например:
# sysctl net.ipv4.ip_forward=1
Чтобы это значение сохранилось после перезагрузки - добавим его в файл
/etc/sysctl.conf
Вот такой строчкой:
sysctl net.ipv4.ip_forward=1
Сетевые алиасы (несколько IP-адресов на одном интерфейсе)
Нередко можно встретить ситуацию, когда одной сетевой карте (или просто одному сетевому интерфейсу) необходимо назначить не один, а несколько IP-адресов. В таком случае:
а) Обязательно присваивается основной адрес интерфейсу ethX
б) Алиасы (добавочные IP-адреса) присваиваются как ethX:Y, где Y - номер алиаса
Например, вот так мы присвоим еще 2 IP-адреса интерфейсу eth0:
# ifconfig eth0:1 inet 192.168.1.1 netmask 255.255.255.0
# ifconfig eth0:2 inet 192.168.2.1 netmask 255.255.255.0
# ifconfig eth0:2 inet 192.168.2.1 netmask 255.255.255.0
Перманентно эти интерфейсы указываются в том же файл, что и все остальные:
/etc/network/interfaces
Давайте приведем пример такого файла:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 127.0.0.1
auto eth0:1
iface eth0:1 inet static
address 10.0.1.2
netmask 255.255.255.0
network 10.0.1.0
broadcast 10.0.1.255
auto eth0:2
iface eth0:2 inet static
address 10.100.10.3
netmask 255.255.255.0
network 10.100.10.0
broadcast 10.100.10.255
auto eth0:3
iface eth0:3 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 127.0.0.1
auto eth0:1
iface eth0:1 inet static
address 10.0.1.2
netmask 255.255.255.0
network 10.0.1.0
broadcast 10.0.1.255
auto eth0:2
iface eth0:2 inet static
address 10.100.10.3
netmask 255.255.255.0
network 10.100.10.0
broadcast 10.100.10.255
auto eth0:3
iface eth0:3 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
Тут видно, что мы указали один основной адрес и 3 алиаса. Следует заметить, что к алиасам нельзя применять опции gateway или dns-nameservers.
VLANы
Для начала, убедитесь, что у Вас установлен пакет vlan:
# dpkg --list | grep vlan
ii vlan 1.9-3 user mode programs to enable VLANs on your ethernet devices
ii vlan 1.9-3 user mode programs to enable VLANs on your ethernet devices
Если нет, то устанавливаем:
# aptitude install vlan
Для того, чтобы VLANы устанавливались при перезагрузки - их необходимо прописать в файле
/etc/network/interfaces
Например, вот пример такого файла:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 127.0.0.1
auto vlan333
iface vlan333 inet static
address 10.0.1.2
netmask 255.255.255.0
vlan_raw_device eth0
auto eth0.999
iface eth0.999 inet static
address 10.100.10.3
netmask 255.255.255.0
vlan_raw_device eth0
auto eth0.100
iface eth0.100 inet static
address 192.168.1.1
netmask 255.255.255.0
vlan_raw_device eth0
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 127.0.0.1
auto vlan333
iface vlan333 inet static
address 10.0.1.2
netmask 255.255.255.0
vlan_raw_device eth0
auto eth0.999
iface eth0.999 inet static
address 10.100.10.3
netmask 255.255.255.0
vlan_raw_device eth0
auto eth0.100
iface eth0.100 inet static
address 192.168.1.1
netmask 255.255.255.0
vlan_raw_device eth0
Здесь видно объявление 3х VLANов. Причем и запись vlan333, и записи вида eth0.999 верны. Отличие будет лишь в их название в виде интерфейсов. Я предпочитаю вид eth.XXX, что дает мне сразу информацию о том - на каком интерфейсе влан лежит.
Так-же добавилась опция vlan_raw_device, указывающая системе - на какой сетевой карте этот VLAN будет таггироваться.
В процессе работы VLANами можно управлять через утилиту vconfig. Например:
# vconfig add eth0 777
Эта команда добавит VLAN=777 к интерфейсу eth0.
# vconfig rem vlan777
А эта команда - удалить VLAN vlan777.
Сетевые мосты
Что это такое - почитать можно в интернете. Для организации нам потребуются установленные bridge-utils. Проверим их наличие:
# dpkg --list | grep bridge-utils
ii bridge-utils 1.4-5 Utilities for configuring the Linux Ethernet bridge
ii bridge-utils 1.4-5 Utilities for configuring the Linux Ethernet bridge
Если нет - ставим:
# aptitude install bridge-utils
Мосты прописываются в файле
/etc/network/interfaces
Например, так:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# Physical interface
#auto eth0
#iface eth0 inet manual
#auto eth1
#iface eth1 inet manual
# The primary network interface
auto br0
iface br0 inet static
bridge_ports eth0 eth1
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.240
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# Physical interface
#auto eth0
#iface eth0 inet manual
#auto eth1
#iface eth1 inet manual
# The primary network interface
auto br0
iface br0 inet static
bridge_ports eth0 eth1
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.240
Тут видно, что мы не настраиваем сетевые карты (не прописываем им IP адрес, не даем получить реквизиты по DHCP). Это необходимо так и делать!
Сетевой мост мы называем br0. Уже на нем прописываем все необходимые реквизиты и указываем опцию bridge_ports, которая показывает - какие сетевые интерфейсы включать в этот мост.
На ходу мосты управляются утилитой brctl. Например, таким образом можно создать сетевой мост из 2х сетевых карт (карты не должны быть настроены и должны находиться в состоянии down):
# brctl addbr "br0"
# brctl addif br0 eth0
# brctl addif br0 eth1
# ifconfig br0 up
# brctl addif br0 eth0
# brctl addif br0 eth1
# ifconfig br0 up
Эта последовательность команд:
а) Создаст виртуальный коммутатор br0
б) Добавит в него сетевые интерфейсы eth0 и eth1
в) "Поднимет" мост (up), т.е. включит его
После этого мосту можно дать сетевые реквизиты (а можно и не давать - в таком случае эти сетевые карты будут работать как неуправляемый коммутатор, из-вне к ним через эти соединений подключиться будет нельзя).
# ifconfig br0 inet 192.168.0.254 netmask 255.255.255.0
Другие примеры:
# brctl delif br0 eth1
Эта команда удалит из виртуального коммутатора (моста) интерфейс eth1.
# brctl delbr br0
А эта команда удалит мост br0 совсем.
Link aggregation (Bonding)
Агрегация интерфейсов - способ поднять скорость передачи данных и/или обеспечить отказоустойчивость путем использования двух или более физических сетевых карт. Работает это так, что несколько сетевых карт выступают в роли одной виртуальной (не путать с мостом!), при этом, в зависимости от режима работы, эти сетевые карты или увеличивают пропускную способность (в то количество раз - сколько объединено сетевых карт), или дают отказоустойчивость (т.е. работает одна карта, если она сдыхает - начинает работать вторая), или и то, и другое.
Для работы требуется установленный пакет ifenslave-2.6. Если не установлен - ставим:
# aptitude install ifenslave-2.6
Конфигурация прописывается в файле
/etc/network/interfaces
Например, так:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# Physical interface
#auto eth0
#iface eth0 inet manual
#auto eth1
#iface eth1 inet manual
# The primary network interface
auto bond0
iface bond0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.240
slaves eth0 eth1
bond_mode round-robin
bond_miimon 100
bond_downdelay 200
bond_updelay 200
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# Physical interface
#auto eth0
#iface eth0 inet manual
#auto eth1
#iface eth1 inet manual
# The primary network interface
auto bond0
iface bond0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.250
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 192.168.0.240
slaves eth0 eth1
bond_mode round-robin
bond_miimon 100
bond_downdelay 200
bond_updelay 200
Здесь видно, что физические карты не настраиваются - им не присваиваются статические IP адреса и не позволяется использовать DHCP для получения реквизитов. Вместо этого они участвуют в создании bond0 интерфейса, который уже и получает сетевые реквизиты.
ВНИМАНИЕ! На другой стороне сетевых кабелей необходимо, чтобы сетевые карты были настроены один-в-один так-же (т.е. работали в том же режиме). Если это аппаратные коммутаторы или маршрутизаторы - придется подбирать режим работы - какой поддерживается "железкой" на той стороне. Если это сервер - то лучше всего использовать:
а) такие-же сетевые карты (если это возможно)
б) такую-же ОС (это снизит вероятность сбоев в работе агрегатирования)
Автозапуск скриптов при поднятии/выключении интерфейса
Для этого служат 4 директории:
/etc/network/if-pre-up.d
/etc/network/if-up.d
/etc/network/if-down.d
/etc/network/if-post-down.d
Соответственно, в директории if-pre-up.d располагаются скрипты, которые запускается перед поднятием интерфейса; в if-up.d - скрипты, которые запускаются после поднятия интерфейса; в if-down.d - перед выключением интерфейса, а в if-post-down.d - после выключения.
Среди прочего, вызываемые скрипты могут использовать специальные переменные из окружения вызывающего процесса, например $IFACE (называние интерфейса) или $MODE (операция). Подробнее - в man-страницах.
Комментариев: 10
Страница: 1 из 1
Гость @ 12.11.2013 18:53
Автор спасибо ! Отлично всё написано !
Гость @ 04.10.2013 01:36
spasibo tebe avtor , klevaiy stateika
Гость @ 16.08.2013 12:49
СПАСИБО, автору и авторам! ОГРОМНОЕ!
Гость @ 12.12.2012 11:00
Хорошая и подробная статья, я тоже написал статью про настройку сети в debian/ubuntu
http://www.artcom-ufa.ru/posts/2011/07/20/nastroika-seti-v-linux
http://www.artcom-ufa.ru/posts/2011/07/20/nastroika-seti-v-linux
Гость @ 29.10.2012 18:46
Я так понял что статическая маршрутизация в /etc/network/interfaces типа:
up route add -net 10.0.0.0/24 gw 192.168.0.251
Не будет работать если не включена маршрутизация: # sysctl net.ipv4.ip_forward=1 ?
А то я второй день бьюсь. А netstat -r не кажет никаких мною добавленных в /etc/network/interfaces
маршрутов.
up route add -net 10.0.0.0/24 gw 192.168.0.251
Не будет работать если не включена маршрутизация: # sysctl net.ipv4.ip_forward=1 ?
А то я второй день бьюсь. А netstat -r не кажет никаких мною добавленных в /etc/network/interfaces
маршрутов.
Гость @ 25.10.2012 17:13
хорошая статья
Гость @ 07.09.2012 17:55
Классная статья! Просто, доступно, понятно и с примерами! С каждым днём всё больше люблю LINUX !
Гость @ 20.06.2012 13:00
Что
бы прочитать столько полезности, пришлось бы перелопатить несколько
десятков статей, а тут всё очень просто, наглядно и с примером конфига
=)
Фантастически полезная статья!
Огромное спасибо!
ps: сохранил в избранное и буду всем рекомендовать этот сайт!
Фантастически полезная статья!
Огромное спасибо!
ps: сохранил в избранное и буду всем рекомендовать этот сайт!
Гость @ 21.12.2011 03:45
Spasibo Gromadnoe
Гость @ 03.12.2011 21:22
Очень полезная статья для начинающих! Спасибо!
Спасибо
ОтветитьУдалить