Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Администрирование систем Linux. Добавление IP-адресов и связывание сетевых интерфейсов

Оригинал: Binding and bonding
Автор: Paul Cobbaut
Дата публикации: 12 марта 2015 г.
Перевод: A. Панин
Дата перевода: 1 апреля 2015 г.

Глава 24. Добавление IP-адресов и связывание сетевых интерфейсов

Иногда приходится использовать более одного IP-адреса при работе с одной сетевой картой, причем в этом случае говорят о добавлении IP-адресов сетевого интерфейса (binding IP addresses).

Ядро Linux также может активировать множество сетевых карт, использующих один и тот же IP-адрес, причем данная технология называется связыванием сетевых интерфейсов (bonding).

В данной главе описываются процессы добавления IP-адресов и связывания сетевых интерфейсов в наиболее популярных дистрибутивах Linux.

24.1. Добавление IP-адресов сетевых интерфейсов в дистрибутивах Red Hat/Fedora

24.1.1. Добавление дополнительных IP-адресов

Для связывания более чем одного IP-адреса с одним и тем же сетевым интерфейсом следует использовать файл конфигурации сетевого интерфейса с именем ifcfg-eth0:0, где вместо второго значения 0 может использоваться любое число. В подобных файлах конфигурации обязательны к использованию всего две директивы.

[root@rhel6 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE="eth0:0"
IPADDR="192.168.1.133"
[root@rhel6 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE="eth0:0"
IPADDR="192.168.1.142"

24.1.2. Активация дополнительных IP-адресов

Для активации виртуального сетевого интерфейса следует использовать утилиту ifup, для его деактивации - утилиту ifdown.

[root@rhel6 ~]# ifup eth0:0
[root@rhel6 ~]# ifconfig | grep 'inet '
         inet addr:192.168.1.99  Bcast:192.168.1.255  Mask:255.255.255.0
         inet addr:192.168.1.133  Bcast:192.168.1.255  Mask:255.255.255.0
         inet addr:127.0.0.1  Mask:255.0.0.0
[root@rhel6 ~]# ifup eth0:1
[root@rhel6 ~]# ifconfig | grep 'inet '
         inet addr:192.168.1.99  Bcast:192.168.1.255  Mask:255.255.255.0
         inet addr:192.168.1.133  Bcast:192.168.1.255  Mask:255.255.255.0
         inet addr:192.168.1.142  Bcast:192.168.1.255  Mask:255.255.255.0
         inet addr:127.0.0.1  Mask:255.0.0.0

24.1.3. Проверка корректности добавления дополнительных IP-адресов

Для проверки корректности добавления и активации дополнительных IP-адресов сетевого интерфейса следует либо использовать утилиту ping на другом компьютере, либо использовать утилиту ifconfig таким образом, как показано в примере ниже.

[root@rhel6 ~]# ifconfig 
eth0   Link encap:Ethernet  HWaddr 08:00:27:DD:0D:5C 
       inet addr:192.168.1.99  Bcast:192.168.1.255  Mask:255.255.255.0
       inet6 addr: fe80::a00:27ff:fedd:d5c/64 Scope:Link
       UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
       RX packets:1259 errors:0 dropped:0 overruns:0 frame:0
       TX packets:545 errors:0 dropped:0 overruns:0 carrier:0
       collisions:0 txqueuelen:1000 
       RX bytes:115260 (112.5 KiB)  TX bytes:84293 (82.3 KiB)

eth0:0 Link encap:Ethernet  HWaddr 08:00:27:DD:0D:5C 
       inet addr:192.168.1.133  Bcast:192.168.1.255  Mask:255.255.255.0
       UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:1 Link encap:Ethernet  HWaddr 08:00:27:DD:0D:5C 
       inet addr:192.168.1.142  Bcast:192.168.1.255  Mask:255.255.255.0
       UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

24.2. Добавление IP-адресов сетевых интерфейсов в дистрибутивах Debian/Ubuntu

24.2.1. Добавление дополнительных IP-адресов

Указание дополнительных IP-адресов для одной и той же сетевой карты осуществляется в рамках файла конфигурации /etc/network/interfaces путем добавления устройств с именами eth0:x. Кроме того, при редактировании данного файла конфигурации обязательно указание масок сетей сетевых интерфейсов.

debian5:~# cat /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
iface eth0 inet static
address 192.168.1.34
network 192.168.1.0
netmask 255.255.255.0
gateway 192.168.1.1
auto eth0

auto eth0:0
iface eth0:0 inet static
address 192.168.1.233
netmask 255.255.255.0

auto eth0:1
iface eth0:1 inet static
address 192.168.1.242
netmask 255.255.255.0

24.2.2. Активация дополнительных IP-адресов

Используйте утилиту ifup для активации дополнительных IP-адресов.

debian5:~# ifup eth0:0
debian5:~# ifup eth0:1

24.2.3. Проверка корректности добавления дополнительных IP-адресов

Для проверки корректности добавления и активации дополнительных IP-адресов следует либо использовать утилиту ping с другого компьютера, либо использовать утилиту ifconfig таким образом, как показано в примере ниже.

debian5:~# ifconfig | grep 'inet '
      inet addr:192.168.1.34  Bcast:192.168.1.255  Mask:255.255.255.0
      inet addr:192.168.1.233  Bcast:192.168.1.255  Mask:255.255.255.0
      inet addr:192.168.1.242  Bcast:192.168.1.255  Mask:255.255.255.0
      inet addr:127.0.0.1  Mask:255.0.0.0

24.3. Связывание сетевых интерфейсов в дистрибутивах RedHat/Fedora

Начнем с выполнения команды ifconfig -a для получения списка всех сетевых карт, установленных в компьютере.

[root@rhel6 network-scripts]# ifconfig -a | grep Ethernet
eth0      Link encap:Ethernet  HWaddr 08:00:27:DD:0D:5C 
eth1      Link encap:Ethernet  HWaddr 08:00:27:DA:C1:49 
eth2      Link encap:Ethernet  HWaddr 08:00:27:40:03:3B

В данном примере мы будем связывать сетевые интерфейсы eth1 и eth2.

Назовем нашу связку сетевых интерфейсов bond0 и добавим это название в файл конфигурации утилиты modprobe для того, чтобы ядро ОС автоматически загружало модуль bonding в момент, когда мы будем активировать соответствующий сетевой интерфейс.

[root@rhel6 network-scripts]# cat /etc/modprobe.d/bonding.conf 
alias bond0 bonding

После этого мы должны будем создать файл конфигурации /etc/sysconfig/network-scripts/ifcfg-bond0 для сохранения параметров конфигурации нашего сетевого интерфейса bond0.

[root@rhel6 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@rhel6 network-scripts]# cat ifcfg-bond0 
DEVICE=bond0
IPADDR=192.168.1.199
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

На следующем этапе мы должны будем создать два файла конфигурации, по одному для каждой сетевой карты, используемой для создания виртуального сетевого интерфейса bond0.

[root@rhel6 network-scripts]# cat ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
[root@rhel6 network-scripts]# cat ifcfg-eth2
DEVICE=eth2
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no

Наконец, мы активируем сетевой интерфейс с помощью команды ifup bond0.

[root@rhel6 network-scripts]# ifup bond0
[root@rhel6 network-scripts]# ifconfig bond0
bond0     Link encap:Ethernet   HWaddr 08:00:27:DA:C1:49 
          inet addr:192.168.1.199  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:feda:c149/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:251 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:39852 (38.9 KiB)  TX bytes:1070 (1.0 KiB)

Информация о виртуальном сетевом интерфейсе bond0 также будет присутствовать в одноименном файле из директории /proc/net/bonding.

[root@rhel6 network-scripts]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 08:00:27:da:c1:49

Slave Interface: eth2
MII Status: up
Link Failure Count: 0
Permanent HW addr: 08:00:27:40:03:3b

24.4. Связывание сетевых интерфейсов в дистрибутивах Debian/Ubuntu

Начнем с выполнения команды ifconfig -a для получения списка всех сетевых карт, установленных в компьютере.

debian5:~# ifconfig -a | grep Ethernet
eth0      Link encap:Ethernet  HWaddr 08:00:27:bb:18:a4
eth1      Link encap:Ethernet  HWaddr 08:00:27:63:9a:95
eth2      Link encap:Ethernet  HWaddr 08:00:27:27:a4:92

В данном примере мы будем связывать сетевые интерфейсы eth1 и eth2.

Также нам придется установить пакет программного обеспечения ifenslave.

debian5:~# aptitude search ifenslave
p ifenslave     - Attach and detach slave interfaces to a bonding device
p ifenslave-2.6 - Attach and detach slave interfaces to a bonding device
debian5:~# aptitude install ifenslave
Чтение списков пакетов  Готово
...

После этого нам придется отредактировать файл конфигурации /etc/network/interfaces, добавив в него информацию о виртуальном сетевом интерфейсе bond0.

debian5:~# tail -7 /etc/network/interfaces
iface bond0 inet static
 address 192.168.1.42
 netmask 255.255.255.0
 gateway 192.168.1.1
 slaves eth1 eth2
 bond-mode active-backup
 bond_primary eth1

В более старых версиях дистрибутивов Debian/Ubintu вам придется вручную выполнить команду modprobe bonding, но в современных версиях данных дистрибутивов этого уже не требуется. Используйте утилиту ifup для активации сетевого интерфейса и проверьте его работоспособность.

debian5:~# ifup bond0
debian5:~# ifconfig bond0
bond0     Link encap:Ethernet  HWaddr 08:00:27:63:9a:95 
         inet addr:192.168.1.42  Bcast:192.168.1.255  Mask:255.255.255.0
         inet6 addr: fe80::a00:27ff:fe63:9a95/64 Scope:Link
         UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
         RX packets:212 errors:0 dropped:0 overruns:0 frame:0
         TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0 
         RX bytes:31978 (31.2 KiB)  TX bytes:6709 (6.5 KiB)

Информация о виртуальном сетевом интерфейсе bond0 также будет присутствовать в одноименном файле из директории /proc/net/bonding/.

debian5:~# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.2.5 (March 21, 2008)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth1
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 08:00:27:63:9a:95

Slave Interface: eth2
MII Status: up
Link Failure Count: 0
Permanent HW addr: 08:00:27:27:a4:92

24.5. Практическое задание: добавление IP-адресов и связывание сетевых интерфейсов

1. Свяжите дополнительный IP-адрес с одной из ваших сетевых карт. Проверьте его работоспособность (может ли ваш сосед использовать данный IP-адрес для входа в вашу систему с использованием протокола ssh)!

2. Используйте утилиту ifdown для деактивации данного IP-адреса.

3. Убедитесь в том, что ваш сосед также успешно связал дополнительный IP-адрес с сетевой картой перед продолжением выполнения заданий.

4. Добавьте дополнительную сетевую карту (или две) в вашу виртуальную машину и используйте информацию из теоретической части главы для связывания двух сетевых карт.

24.6. Корректная процедура выполнения практического задания: добавление IP-адресов и связывание сетевых интерфейсов

1. Свяжите дополнительный IP-адрес с одной из ваших сетевых карт. Проверьте его работоспособность (может ли ваш сосед использовать данный IP-адрес для входа в вашу систему с использованием протокола ssh)!

В дистрибутивах RedHat/Fedora:

Следует добавить файлы конфигурации /etc/sysconfig/network-scripts/ifcfg-ethX:X, содержащие описания виртуальных сетевых интерфейсов, таким образом, как показано в теоретической части главы.

В дистрибутивах Debian/Ubuntu:

Следует модифицировать файл конфигурации /etc/network/interfaces, добавив в него описания виртуальных сетевых интерфейсов таким образом, как показано в теоретической части главы.

2. Используйте утилиту ifdown для деактивации данного IP-адреса.

ifdown eth0:0

3. Убедитесь в том, что ваш сосед также успешно связал дополнительный IP-адрес с сетевой картой перед продолжением выполнения заданий.

ping $дополнительный_ip_адрес_соседа

или

ssh $дополнительный_ip_адрес_соседа

4. Добавьте дополнительную сетевую карту (или две) в вашу виртуальную машину и используйте информацию из теоретической части главы для связывания двух сетевых карт.

В дистрибутивах RedHat/Fedora:

Следует добавить в директорию /etc/sysconfig/network-scripts файлы ifcfg-ethX и ifcfg-bondX, заполненные таким образом, как показано в теоретической части главы. Также не забудьте о необходимости редактирования файла конфигурации утилиты modprobe.

В дистрибутивах Debian/Ubuntu:

Следует модифицировать файл /etc/network/interfaces таким образом, как показано в теоретической части главы. Не забудьте о необходимости установки пакета программного обеспечения ifenslave.


Предыдущий раздел: Оглавление Следующий раздел:
Глава 23. Перехват сетевого трафика   Глава 25. Клиент и сервер ssh