Я хотел бы отправить поток с сервера Linux нескольким клиентам Linux через многоадресный адрес. Клиенты напрямую подключены к серверу, но разные интерфейсы: bnep0
и bnep1
. Кроме того, насколько я понимаю, мои многоадресные пакеты маршрутизируются на мой шлюз по умолчанию. eth0
.
Таблица маршрутизации ниже:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 bnep1
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 bnep0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Я полагаю, мне нужно создать специальное правило маршрутизации, чтобы мои многоадресные пакеты не отправлялись eth0
, но оба bnep0
и bnep1
. У меня вопрос: как я мог это сделать? Я пробовал использовать ip route
и iptables -t mangle ... TEE
, но мне это не удалось.
Заранее спасибо.
Решение состоит не во внедрении правил маршрутизации для дублирования пакетов на двух интерфейсах, а в том, чтобы слияние интерфейсы в один.
Для этого вам необходимо создать и использовать сетевой мост. Мост должен иметь уникальные IP-адреса, тогда как «настоящие» интерфейсы не должны иметь их, даже если они должны работать.
# apt-get install bridge-utils
# ifconfig bnep0 up
# ifconfig bnep1 up
# brctl addbr br0
# brctl addif br0 bnep0
# brctl addif br0 bnep1
# ifconfig br0 10.0.0.1 netmask 255.255.255.0