Iptables обрабатывает трафик с разных хостов по-разному, несмотря на правила

Здесь происходит что-то странное, и я не знаю, как это исправить. Сводка: трафик, похожий на tcpdump, обрабатывается iptables по-разному. Подробности ниже.

Испытательная установка:

  • Практическая (не теоретическая) подсеть 192.168.0.0/25
  • Как записывать трафик, который находится внутри VPN?
  • Почему принтер принтера Epson часто появляется в автономном режиме?
  • Как отключить ipv6 для определенного интерфейса в Linux?
  • Сеть и маршрутизация частных IP-диапазонов
  • Подключение маршрутизатора ADSL к беспроводному маршрутизатору. Что я делаю не так?
    • Устройство 0 – Линейная машина, сидящая на IP 192.168.0.121

    • Устройство 1 – немое устройство, которое просто отправляет пакеты на порт 4000 на 192.168.0.121. IP-адрес этого устройства устанавливается с помощью команды: sudo arp -s 192.168.0.27 MAC_ADDRESS, поскольку он не делает DHCP-запросы и не может быть сделан, чтобы делать что-либо, кроме своего задания.

    • Устройство 2 – Линейный аппарат, отправляющий пакеты на порт 4000 на 192.168.121 с помощью команды:

      Watch -n 1 "date | nc -4u -w1 -v 192.168.0.121 4000"

    Tcpdump вывод ситуации:

    22:00:01.845359 IP 192.168.3.30.50705 > 192.168.0.121.4000: UDP, length 1 22:00:01.845391 IP 192.168.3.30.50705 > 192.168.0.121.4000: UDP, length 29 22:00:02.022257 IP 192.168.0.27.27 > 192.168.0.121.4000: UDP, length 12 22:00:03.022797 IP 192.168.0.27.27 > 192.168.0.121.4000: UDP, length 12 ... 

    В этом случае выход socat udp-l:4000,fork stdout :

          XX@ XWed Sep 2 22:02:18 PDT 2015       XX  XWed Sep 2 22:02:22 PDT 201 ... 

    И выход socat udp-l:2700,fork stdout пуст.

    Странный мусор от датчика, и дата указана из приведенной выше команды. Обратите внимание, что IP-адрес назначения этого трафика является тем же самым в соответствии с tcpdump. Теперь, если я пересылаю весь трафик с UDP-порта 4000 на 2700:

     sudo iptables -t nat -A PREROUTING -p udp --dst 192.168.0.121 --dport 4000 -j DNAT --to-destination 192.168.0.121:2700 

    Tcpdump выглядит точно так же, но теперь выход socat udp-l:4000,fork stdout :

        @ @ @       @ @ @       @            @ @@    @    ... 

    И выход socat udp-l:2700,fork stdout :

     XXXWed Sep 2 22:05:42 PDT 2015 XXXWed Sep 2 22:05:46 PDT 2015 XXXWed Sep 2 22:05:50 PDT 2015 ... 

    Как вы можете видеть, трафик с устройства 1 игнорируется iptables и продолжается до хоста на порте 4000, но трафик с устройства 2 попадает в правило и отправляется на порт 2700. Я могу очистить iptables и переиздать правило все День, и он просто переключается между этими двумя состояниями.

    Кто-нибудь может понять, что может произойти?

  • Брандмауэр Windows: как разрешить трафик на определенном порту (например, 8080)?
  • Расширить сеть, подключив беспроводной маршрутизатор к проводному маршрутизатору?
  • Ручная настройка прокси-сервера в команде работает, но не устанавливает его в proxychains
  • Что интересно для IPv6?
  • Как увидеть попытки подключения, отклоненные брандмауэром в режиме реального времени?
  • Когда адаптер виртуальной машины VirtualBox установлен на NAT, VM может получить доступ к хост-компьютеру?
  • One Solution collect form web for “Iptables обрабатывает трафик с разных хостов по-разному, несмотря на правила”

    Оказывается, два устройства отправляли хост linux на 192.168.0.121 с 192.168.0.27, только с разными MAC-адресами. Очевидно, что это несовместимое поведение, и iptables нельзя ожидать, чтобы справиться с ним.

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

    Давайте будем гением компьютера.