Если вы по-прежнему не можете размонтировать или перемонтировать устройство после остановки всех служб и процессов с открытыми файлами, возможно, ваше устройство занято файлом подкачки или разделом подкачки. Это не будет отображаться с 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.
Я только что протестировал 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, выдаваемое вашим мессенджером в локальной сети, см. часто задаваемые вопросы по многоадресной рассылке в конце.
Хорошо, похоже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
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-адреса сетевого адаптера...
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
Кажется, все работает.Пусть какое-то время все работает со случайными перезагрузками и случайными сбоями в сети, нормальные вещи.
ДЕЛО