У меня есть несколько устройств Amazon Alexa (эхо, две точки) и интеллектуальный переключатель Belkin Wemo. Приложение Alexa позволяет сканировать устройства для «умного дома» и автоматически добавлять все найденное. Обычно это осуществляется путем связи между приложением, Amazon и сетевым облаком устройства, но, очевидно, Wemo, в частности, использует обнаружение устройств SSDP. Алекса находит Wemo почти каждый раз.
Я на самом деле хочу, чтобы он потерпел неудачу, при этом разрешая удаленное управление Wemo из IFTTT. Да, я знаю, что это странный вариант использования :) Моя первая попытка состояла в том, чтобы настроить вторичную сеть и прикрепить к ней Wemo. Но по какой-то причине Wemo и маршрутизатор не будут оставаться на связи в этой сети более минуты. Поэтому я отказался от этого и попытался сделать это с помощью правил брандмауэра, которые находятся далеко за пределами моей зоны комфорта. Я также незнаком с SSDP/UPNP, но быстро понимаю эту идею. Я использую DD WRT на роутере. Я назначил каждому устройству Alexa, моему телефону и Wemo статический IP-адрес.
Учитывая, что я не знаю деталей механизма обнаружения Alexa, я предполагаю, что мне нужно отказаться от получения сообщений M-SEARCH от Echo и отправки уведомлений NOTIFY с Wemo. Я бы хотел, чтобы функция обнаружения устройств работала в моей сети; Я использую пульты iTunes и Plex и могу добавить больше похожих устройств. Я также не уверен, какое устройство Alexa/ телефон будет инициировать обнаружение, поэтому я счастлив блокировать их все.
Итак, мне нужны некоторые правила маршрутизатора, которые сбрасывают связь SSDP между двумя устройствами, не отключая весь протокол или обычную связь HTTP (которую, как я полагаю, использует IFTTT) с любым устройством.
Что я пробовал, где A - это локальный IP-адрес Wemo, а B - один из четырех других IP-адресов устройства:
iptables -I FORWARD -s A -d B -j logdrop
iptables -I FORWARD -s B -d A -j logdrop
Предполагается, что ответы будут одноадресными, поэтому я бы подумал, что это отбросит ответ на M-SEARCH. Может я использую не ту таблицу?
iptables -I INPUT -s A -d B -j logdrop
iptables -I INPUT -s B -d A -j logdrop
repeat for OUTPUT, PREROUTING, POSTROUTING
Нету. Попытался добавить UDP (и отдельно TCP, или ни того, ни другого, просто из соображений правильности при сохранении указанных выше вариаций таблицы)
iptables -I FORWARD -p udp -s A -d B logdrop
iptables -I FORWARD -p udp -s B -d A logdrop
Так что это все еще не сработало. Может быть, я могу попробовать возиться с возможностью многоадресной рассылки?
iptables -I FORWARD -p udp -s A -d 239.255.255.250 -j logdrop
iptables -I FORWARD -p udp -s 239.255.255.250 -d A -j logdrop
iptables -I FORWARD -p udp -s B -d 239.255.255.250 -j logdrop
iptables -I FORWARD -p udp -s 239.255.255.250 -d B -j logdrop
also the INPUT/OUTPUT/PRE/POSTROUTING tables
Нету.
Поэтому я перепробовал много комбинаций (не каждую перестановку из того, что я показал, но многие из них) и, как правило, не мог удержать их от нахождения друг друга. Черт, я даже пытался полностью отключить UPNP на маршрутизаторе. Даже это не похоже на работу. Я не знаю, как эти проклятые устройства общаются! Я бы понюхал пакет, но это Wi-Fi, и я на Windows, так что, видимо, это сложно. Мне повезло с более общими правилами, например, iptables -I FORWARD -d A -j logdrop
но они слишком радикальны и, конечно, сломали способность IFTTT подключаться, и мне было трудно понять, какие правила делают магию затем.
Итак, после двух ночных попыток, пришло время обратиться за помощью. Как правильно настроить правила брандмауэра? Или что я в корне неправильно понимаю о SSDP или правилах маршрутизации (или теоретически Alexa)?