Соединение сетевых интерфейсов в Linux

0

У меня есть две физические сетевые карты (eth2 и eth3) с eth2, подключающимся к домашнему маршрутизатору / dhcp-серверу, и eth3, подключенным к другой машине, которой требуется доступ к Интернету.

Я пытаюсь создать мост, чтобы вторая машина на eth3 могла быть подключена к локальной сети. Я пробовал следующее, однако он зависает при попытке получить IP-адрес от маршрутизатора. Аналогично, попытка задать статический маршрут тоже не работает.

$ sudo aptitude install bridge-utils
$ sudo ifconfig eth2 down
$ sudo ifconfig eth3 down
$ sudo brctl addbr br0
$ sudo brctl addif br0 eth2 eth3
$ sudo dhclient br0 # this hangs and fails to get a dhcp address

Я пытался убедиться, что моя таблица маршрутизации имитирует то, как она выглядит при обычном использовании eth2, я вообще не могу попасть в шлюз.

$ route -n
Таблица маршрутизации IP ядра
Шлюз назначения Genmask Флаги Метрика Ссылка Использовать Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 2 0 0 br0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 br0

Я попытался «закрепить» MAC-адрес маршрутизатора, пока у меня был мост eth2 / 3, но он также не смог получить свой IP-адрес.

Одна интересная вещь, которую я заметил, состояла в том, что, пытаясь разрушить мост и активировать мой интернет на eth2, у меня были проблемы с пингом шлюза. Оказалось, что ipmasq был установлен и работал, вызывая странные проблемы. Когда я остановил службу ipmasq, мой интернет снова начал нормально работать. Я полностью удалил пакет «ipmasq» и снова попытался соединить сетевые адаптеры, думая, что это может вызывать проблемы, но все равно не удалось.

Любые предложения относительно того, как решить эту проблему? Любой надежный способ заставить это работать?

uzzi09
источник
Почему бы просто не подключить другой компьютер к маршрутизатору?
Келтари
Был ли интерфейс моста запущен в то время? Попробуйте:ifconfig br0 up
Дэвид Шварц
@Keltari - роутер вне досягаемости. Да, есть множество других способов достижения конечной цели, однако это конкретная проблема, которую я хотел бы решить.
uzzi09
@David - Да, интерфейс моста, похоже, был запущен dhclient самостоятельно. ifconfig покажет его в списке, но не будет назначен IP-адрес.
uzzi09
Вы также включили eth2 и eth3 и убедитесь, что они находятся в режиме PROMISC? (Я думаю, что мост выполняет роль PROMISC автоматически, но вы их сбили вручную)
Дэвид Шварц

Ответы:

1

После настройки интерфейсов моста вызовите интерфейс моста и его членов:

for i in br0 eth2 eth3; do
 sudo ifconfig $i up # or sudo ip link set dev $i up
done

После этого, в зависимости от настроек STP для моста, может пройти меньше или больше секунд, пока мост фактически не перейдет в режим пересылки. Если вам не нужно связующее дерево, выполните следующие команды после добавления интерфейсов-членов, чтобы оно быстрее входило в состояние пересылки:

sudo brctl stp br0 off  # disable spanning tree protocol
sudo brctl setfd br0 0 # configure forwarding delay to 0

Дайте нам знать, если это работает.

О.Г.
источник
Я не поднял eth2 / 3, так как ни в одном из учебных пособий ничего не сказано о том, как их поднимать. Я обязательно попробую это и сделаю Спасибо за предложение.
uzzi09