Запуск домашнего сервера Ubuntu 14.04LTS. У меня есть небольшое устройство IOT, которое отправляет сообщения HTTP на удаленный веб-сервер, который я хочу перенаправить в локальный процесс (в основном перехватывая его сообщения в моем собственном локальном процессе). Сервер использует eth0 (встроенный порт Ethernet), устройство IOT находится на eth1, который является USB-ключом Ethernet. Я создал мост в / etc / network / interfaces
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0 eth1
Я использовал следующее правило iptables для перенаправления трафика моста на локальный порт 22041. Это нормально работает.
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 22041
Проблема в том, что он также перенаправляет трафик порта 80 на сервер, когда что-либо в локальной сети пытается получить доступ к веб-странице. Если я запустил firefox http://127.0.0.1/page'с сервера, все работает нормально. Если я запускаю firefox httpt: // server_ip / page с другого компьютера в локальной сети, он перенаправляется на порт 22041.
Я думал, что '-i br0' применит это правило только к трафику, идущему с моста, но, очевидно, это не то, что происходит. Как запретить iptables перенаправлять внешний трафик на порт 22041?
Заранее спасибо, TD
Думаю, я нашел свой ответ в другом посте. Если я использую Physdev для сопоставления eth1 вместо сопоставления на мосту, он работает и не останавливает мой обычный трафик.
iptables -t nat -A PREROUTING -m physdev --physdev-in eth1 -p tcp --dport 80 -j REDIRECT --to-port 22041