У меня есть несколько довольно глупых IP-устройств в подсети с моим сервером Ubuntu, и сервер получает потоковые данные с каждого устройства. Я столкнулся с проблемой, заключающейся в том, что когда ARP-запрос выдается устройству во время потоковой передачи данных на сервер, этот запрос игнорируется, тайм-аут записи в кэш-память и сервер прекращает прием потока.
Итак, чтобы полностью запретить серверу отправлять запросы ARP на эти устройства, я хотел бы добавить статическую запись ARP для каждого, что-то вроде
arp -i eth2 -s ip.of.the.device mac:of:the:device
Но эти «статические» записи ARP потеряны если сеть отключена / включена или если сервер перезагружен. Где лучшее место для автоматического добавления этих записей, предпочтительно где-то, что будет добавлять их заново каждый раз, когда вызывается интерфейс eth2?
Я действительно не хочу писать скрипт, который контролирует вывод из arp
и повторно добавляет записи в кэш, если они отсутствуют.
Редактировать, чтобы добавить мой окончательный сценарий:
Создан файл
/etc/network/if-up.d/add-my-static-arp
С содержанием:
#!/bin/sh
arp -i eth0 -s 192.168.0.4 00:50:cc:44:55:55
arp -i eth0 -s 192.168.0.5 00:50:cc:44:55:56
arp -i eth0 -s 192.168.0.6 00:50:cc:44:55:57
И затем, очевидно, добавьте разрешение на его выполнение:
chmod +x /etc/network/if-up.d/add-my-static-arp
И эти записи arp будут добавляться или добавляться вручную каждый раз при запуске любого сетевого интерфейса.
Взгляните на сценарии в /etc/network/if-up.d
. Они вызываются каждый раз, когда интерфейс переходит в состояние . Вы можете создать скрипт с необходимыми командами и поместить его туда.
/etc/ethers
Этот файл должен содержать:
mac ip-address