Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Debian: Настройка сети

Практика



Настройка сети в 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

Вот пример файла:

# 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

В этом файле определен 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


На ходу значения 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


Указание DNS-сервера

DNS-серверы указываются (не более трех) в файле:

/etc/resolv.conf

Например, вот пример такого файла:

nameserver 192.168.0.240
nameserver 192.168.0.242

Поменяв в файле значения они сразу начинают действовать.


Имя машины и домен

Посмотреть или поменять на ходу имя машины можно командой hostname:

# hostname
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

Перманентно имя машины можно поменять в файле:

/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

В этом файле видно, что:

а) Шлюз по-умолчанию 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

Перманентно эти интерфейсы указываются в том же файл, что и все остальные:

/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

Тут видно, что мы указали один основной адрес и 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

Если нет, то устанавливаем:

# 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

Здесь видно объявление 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

Если нет - ставим:

# 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

Тут видно, что мы не настраиваем сетевые карты (не прописываем им IP адрес, не даем получить реквизиты по DHCP). Это необходимо так и делать!

Сетевой мост мы называем br0. Уже на нем прописываем все необходимые реквизиты и указываем опцию bridge_ports, которая показывает - какие сетевые интерфейсы включать в этот мост.

На ходу мосты управляются утилитой brctl. Например, таким образом можно создать сетевой мост из 2х сетевых карт (карты не должны быть настроены и должны находиться в состоянии down):

# brctl addbr "br0"
# 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

Здесь видно, что физические карты не настраиваются - им не присваиваются статические 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-страницах.

Вау!! 😲 Ты еще не читал? Это зря!

создано: 2017-05-10
обновлено: 2021-07-14
133186



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Компьютерные сети

Термины: Компьютерные сети