Настройка двух сетевых карт в бридже

Изначально нужна утилита, которая позволяет это делать.

bridge-utils  

Если при установке возникает проблема, нужно заменить список менеджера пакетов! Они находятся по адресу

/etc/apt/sources.list

Генератор находится здесь:

https://repogen.simplylinux.ch/generate.php

Стандартный (Main) лист будет выглядеть так

###### Ubuntu Main Repos
deb http://ua.archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse

###### Ubuntu Update Repos
deb http://ua.archive.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse
deb http://ua.archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://ua.archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse

После изменения файла, нужно сделать

apt-get update

Это обновит списки, и

apt-get install bridge-utils  

даст спокойно установится.

Рекомендуется так так же обновить модули (ядро в этом случае не обновится, так как списки взяты Main)

apt-get dist-upgrade 

Далее, необходимо узнать какие у нас сетевые карты

ifconfig -a

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:332 errors:0 dropped:0 overruns:0 frame:0
TX packets:332 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:71881 (71.8 KB) TX bytes:71881 (71.8 KB)

p1p1 Link encap:Ethernet HWaddr
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15699 errors:0 dropped:0 overruns:0 frame:0
TX packets:56570 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2061226 (2.0 MB) TX bytes:75621193 (75.6 MB)
Interrupt:16 Memory:f7da0000-f7dc0000

p1p2 Link encap:Ethernet HWaddr
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9539 errors:0 dropped:0 overruns:0 frame:0
TX packets:43776 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1231590 (1.2 MB) TX bytes:59034815 (59.0 MB)
Interrupt:17 Memory:f7d40000-f7d60000

p2p1 Link encap:Ethernet HWaddr 1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Как видно, у нас две сетевые карты.  Одна p2p1, вторая p1p1 и p1p2 — с двумя портами.

Настроим так, чтобы был шлюз между p1p1 и p1p2,  а так же скопируем настройки соединения, которое у нас находится в файле

/etc/network/interfaces

# The primary network interface
auto p1p1
iface p1p1 inet static
address 10.0.1.150
netmask 255.255.255.0
network 10.0.1.1
broadcast 192.168.1.255
gateway 10.0.1.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 10.0.1.1

Видно,  что IP адрес выставлен в ручную, настроена маска и шлюз и маршруты

Настраиваем скрип, который создаст шлюз и присвоит ему ip адрес, который был настроен изначально.

ifconfig p1p1 0.0.0.0 down && ifconfig p1p2 0.0.0.0 down && brctl addbr mybridge &&  brctl addif mybridge p1p1 && brctl addif mybridge p1p2 && ifconfig p1p1 up && ifconfig p1p2 up && ifconfig mybridge up && ifconfig mybridge 10.0.1.150 netmask 255.255.255.0 broadcast 192.168.1.255 && route add default gw 10.0.1.1 && brctl stp mybridge on

Этот скрипт —  одна большая строка.

  • Изначально мы отключаем две сетевые p1p1 и p1p2
  • Создаем бридж mybridge
  • Привязываем к бриджу наши сетевые p1p1 и p1p2
  • Включаем  p1p1 и p1p2 и уже наш бридж 
  • Настраиваем Ip бриджа  ifconfig mybridge 10.0.1.150 netmask 255.255.255.0 broadcast 192.168.1.255
  • Добавляем по умолчанию шлюз route add default gw 10.0.1.1
  • Включаем параметр stp для бриджа.  (Основной задачей STP является устранение петель в топологии произвольной сети Ethernet, в которой есть один или более сетевых мостов)

Запуск длится некоторое время (Может быть до 10-ти, или 15-ти секунд, в зависимости от сервера)

После выполнения этой команды мы можем проверить результат вызовом  команды

ip a

Отобразит интерфейсы, но уже с mybridge который теперь уже будет иметь Ip адрес

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: p2p1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 94:de:80:b7:63:aa brd ff:ff:ff:ff:ff:ff
3: p1p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master mybridge state UP qlen 1000
link/ether
valid_lft forever preferred_lft forever
4: p1p2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master mybridge state UP qlen 1000
link/ether 00:15:17:8b:15:fd brd ff:ff:ff:ff:ff:ff
valid_lft forever preferred_lft forever
5: mybridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
inet 10.0.1.150/24 brd 192.168.1.255 scope global mybridge
link/ether f
valid_lft forever preferred_lft forever
valid_lft forever preferred_lft forever

Как видно, из результата state UP  активен для p1p1 и p1p2 — туда подключены  роутер, и устройство, которое будет работать через бридж.

В какой из двух разьемов подключать роутер, или устройство не важно! 

Для, того, чтобы настройки сохранялись после перезапуска, нужно их добавить в файл /etc/rc.local

Внимание! Если настройки скрипта будут не правильные, после перезагрузки сервера он не будет виден в сети! 

Для DHCP соединения, в конце прописываем … & brctl addif mybridge p1p1 && dhclient mybridge. Если сетевые интерфейсы (p1p1, p1p2) поменяются , то скрипт может не отработать и система может не загрузиться.

Создаем скрипт

touch /etc/script — создается сам файл

chmod a+x /etc/script  — даются права на запуск

echo '#! /bin/sh' > /etc/script — шапка скрипта

echo 'ifconfig p1p1 0.0.0.0 down && ifconfig p1p2 0.0.0.0 down && brctl addbr mybridge &&  brctl addif mybridge p1p1 && brctl addif mybridge p1p2 && ifconfig p1p1 up && ifconfig p1p2 up && ifconfig mybridge up && ifconfig mybridge 10.0.1.150 netmask 255.255.255.0 broadcast 192.168.1.255 && route add default gw 10.0.1.1 && brctl stp mybridge on' >> /etc/script      — тело скрипта (дописывается в конец)


Далее, чтобы  наш скрипт работал при загрузке, его нужно добавить в /etc/rc.local

Было:

cat /etc/rc.local
#!/bin/sh -e
#
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will «exit 0» on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

 

Стало

cat /etc/rc.local
#!/bin/sh -e
#
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will «exit 0» on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/etc/script

exit 0

Или в ручную запускать с командной строки как bash /etc/script