Как перенаправить многоадресный трафик между двумя разными локальными сетями с помощью iptables?

Если вы по-прежнему не можете размонтировать или перемонтировать устройство после остановки всех служб и процессов с открытыми файлами, возможно, ваше устройство занято файлом подкачки или разделом подкачки. Это не будет отображаться с fuserили lsof. Отключите подкачку с помощью:

sudo swapoff -a

Вы можете заранее проверить и показать сводку любых разделов подкачки или файлов подкачки с помощью:

swapon -s

или:

cat /proc/swaps

В качестве альтернативы использованию команды sudo swapoff -aвы также можете отключить своп, остановив службу или модуль systemd . Например:

sudo systemctl stop dphys-swapfile

или:

sudo systemctl stop var-swap.swap

В моем случае отключение подкачки было необходимо, помимо остановки любых служб и процессов с открытыми на запись файлами,чтобы я мог перемонтировать свой корневой раздел как только для чтения, чтобы запустить fsckна моем корневом разделе без перезагрузки. Это было необходимо на Raspberry Pi с Raspbian Jessie.

3
16.08.2017, 20:03
2 ответа

Я только что протестировал smcrouteс двумя сетевыми пространствами имен и двумя парами veth. Настройка:

ns1         <-- main namespace -->    ns2
10.0.0.1 -- 10.0.0.254  10.0.1.254 -- 10.0.1.1
veth0b      veth0a          veth1a    veth1b

Пакет Debian smcrouteимеет версию 2.0.0 и, похоже, не поддерживает виртуальный eth, поэтому я установил версию 2.3.1 с домашней страницы smcroute .руководство по многоадресному маршруту из smcrouteтакже очень полезно.

Я использовал пакет ssmpingдля тестирования многоадресной рассылки. Я запускал ssmpingdв ns2, пингуя с помощью ssmping -4 -I veth0b 10.0.1.1из ns1. Это исходные -многоадресные рассылки (SSM )с использованием группы 232.43.211.234. ​​Вы также можете протестировать любые -исходные многоадресные рассылки (ASM )с помощью asmping. Я не знаю, что использует LAN messenger.

Я включил переадресацию в основном пространстве имен, чтобы обеспечить прохождение одноадресных ping-запросов, а затем

smcroutectl add veth1a 10.0.1.1 232.43.211.234 veth0a

и все работало нормально. Я ожидаю, что он также будет работать с учетом ваших настроек, хотя вам также может потребоваться smcroutectl join, чтобы сообщить своим коммутаторам, что они должны правильно пересылать многоадресные рассылки. Несколько окон терминала tcpdumpна всех соответствующих интерфейсах очень помогают при отладке.

Следующая информация показалась мне интересной:

To be able to setup multicast routes a program must connect to the multicast routing socket in the kernel, when that socket is closed, which is done automatically when a UNIX program ends, the kernel cleans up all routes.

Это означает, что если вы намерены использовать функцию многоадресной маршрутизации ядра, вы должны использовать демон, а не инструмент командной строки.

Для статической и динамической маршрутизации говорится:

The intended purpose of smcroute is to aid in situations where dynamic multicast routing does not work properly. However, a dynamic multicast routing protocol is in nearly all cases the preferred solution. The reason for this is their ability to translate Layer-3 signalling to Layer-2 and vice versa (IGMP or MLD).

Наконец, обратите особое внимание на значение TTL, выдаваемое вашим мессенджером в локальной сети, см. часто задаваемые вопросы по многоадресной рассылке в конце.

5
27.01.2020, 21:21

Хорошо, похожеiptablesв одиночку НЕ подходит.

Я попробую smcrouteи/или pimdиз репозиториев Ubuntu. До сих пор я не смог заставить ни одну работу.

Использование smcroute:


iptables

-A INPUT -i lo -j ACCEPT
-A FORWARD -i slan1 -o olan1 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p igmp -j ACCEPT
-A FORWARD -i olan1 -o slan1 -p tcp -m tcp --dport 50000 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -i olan1 -o slan1 -p udp -m udp --dport 50000 -m conntrack --ctstate NEW -j ACCEPT
-A PREROUTING -d 239.255.100.100/32 -j TTL --ttl-set 64

smcroute 2.3.1 от troglobit.

Извлечено в/opt

./configureиспользовались параметры по умолчанию.

файл конфигурации в:

/usr/local/etc/smcroute.conf

#phyint olan1 enable ttl-threshold 1
phyint olan1 enable ttl-threshold 5
phyint slan1 enable ttl-threshold 5
mgroup from olan1 group 239.255.100.100
mgroup from slan1 group 239.255.100.100
mroute from olan1 group 239.255.100.100 to slan1
mroute from slan1 group 239.255.100.100 to olan
  • ttl -порог --это минимальный порог?
  • Если TTL моего пакета равен 1, означает ли это, что phyint... проигнорирует его?. На всякий случай поменял на 5.

sudo smcrouted

sudo smcroutectl show groups

GROUP (S,G)                        INBOUND                                                                                                    
(*, 239.255.100.100)               slan1
(*, 239.255.100.100)               olan1

sudo smcroutectl show routs

ROUTE (S,G)                        INBOUND          PACKETS    BYTES  OUTBOUND                                                                
(*, 239.255.100.100)               slan1                  0        0  olan1
(*, 239.255.100.100)               olan1                  0        0  slan1
(10.10.10.154, 239.255.100.100)    slan1                  2      344  olan1
(192.168.2.53, 239.255.255.250)    olan1                  4      776 
(10.10.10.101, 239.255.100.100)    slan1                  1       32  olan1
(192.168.2.101, 239.255.100.100)   olan1                  1       32  slan1
(10.10.10.1, 239.255.100.100)      slan1                  2       64  olan1

Не все...

На многопользовательском ПК с WinXP -пришлось изменить маршрут:

route add 224.0.0.0 mask 240.0.0.0 10.10.10.153

необходимо использовать номер интерфейса вместо IP-адреса сетевого адаптера...

  • Метрика становится равной 1. Является ли это проблемой TTL...

sudo smcroutectl show routs

ROUTE (S,G)                        INBOUND          PACKETS    BYTES  OUTBOUND
(*, 239.255.100.100)               slan1                  0        0  olan1
(*, 239.255.100.100)               olan1                  0        0  slan1
(192.168.2.53, 239.255.255.250)    olan1                  4      776 
(10.10.10.153, 239.255.100.100)    slan1                  1       32  olan1

LAN Messenger 1.2.32 network preferences

  • Время ожидания соединения (секунд)--максимальное выходное значение
  • Максимальное количество попыток --Максимальное исходящее значение

Сделайте smcroute демоном с помощью Upstart в Ubuntu 14

/etc/init/smcroute.conf

# Upstart for custom compiled smcroute
## jc 2017 08 24
description "SMCRoute, a static multicast router"
author      "jc"
# Stanzas
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
# When to start the service
# start on runlevel [2345]
start on (local-filesystems and net-device-up IFACE!=lo) or runlevel [2345]
# When to stop the service
#stop on runlevel [016]
stop on runlevel [!2345]
# Automatically restart process if crashed
expect fork
respawn
exec /usr/local/sbin/smcrouted -N -f /usr/local/etc/smcroute.conf -d 10 -l notice

Кажется, все работает.Пусть какое-то время все работает со случайными перезагрузками и случайными сбоями в сети, нормальные вещи.

ДЕЛО

  • Сделать smcroute демоном
  • Сделать добавление маршрута постоянным
  • Требуется проверка правила iptables...
  • Сделать так, чтобы компьютер с Win7 видел подсеть
1
27.01.2020, 21:21

Теги

Похожие вопросы