Назад | Перейти на главную страницу

Перенаправление чисто локальной связи на другой интерфейс и порт (Linux)

У меня такая ситуация:
Один интерфейс (устройство), идентифицированный IP-адресом 192.168.1.x (I1), который подключается через любую службу к другому интерфейсу с IP 192.168.1.y (I2) к порту (P2) в той же локальной сети. Теперь я хочу перенаправить все кадры / пакеты (данные в целом), которые отправляются с I1 на I2: P2, на другое устройство с IP-адресом 192.168.1.z (I3) и портом (P3) в той же локальной сети.

Что пробовал:
Я заглянул в iptables но в конечном итоге выяснилось, что они (в частности, таблицы nat) работают только с пакетами, поступающими во внешнюю сеть (WAN). Исключением является ситуация, когда правила установлены на подключаемом устройстве (I1), тогда эти команды оболочки выполнили свою работу:

iptables -t nat -A OUTPUT -p tcp -d I2 --dport P2 -j DNAT --to I3:P3
iptables -t nat -A INPUT -p tcp -s I3 --sport P3 -j SNAT --to I2:P2

Поскольку я хотел применить правила на локальном маршрутизаторе, я попытался проверить, проходит ли связь между I1 и I2 через него:
iptables -t raw -I PREROUTING -s I1 -d I2 -j LOG
И, вероятно, это не так, поскольку я не смог найти никаких журналов с двумя IP-адресами (файл журнала был в / var / log / сообщения).

Я начал понимать, что связь по локальной сети проходит через коммутатор с использованием MAC-адресов и не может быть записана там, это правда? Я полагаю, что «переключатель» физически (в) той же коробке, что и маршрутизатор.

Наконец, я думаю, что мне может даже не понадобиться перенаправление, и я просто запускаю нужные службы на I2 (который является виртуальным интерфейсом), но это не вопрос.

Итак, мой главный вопрос:
Можно ли перенаправить трафик (изменить пакеты), идущий от I1 к I2: P2 в коммутатор / маршрутизатор что он проходит, так что пункт назначения будет I3: P3 и I3 мог бы тогда ответить таким же образом (маскироваться под I2: P2), не замечая I1?

Я предполагаю, что это может быть невозможно, и перенаправление на этом уровне связано с (виртуальными) мостами. Если да, то можно ли добиться того же результата в противном случае? Я могу модифицировать только переключатель и интерфейсы I2, I3 (НЕ I1).

Вы можете сделать это изменение только на своем I1 устройство и используя там iptables NAT или подобное.

Если вы настроили отдельные IP-подсети в своей текущей локальной сети, чтобы x и y находятся в разных подсетях, то вы можете выполнить эту манипуляцию с адресатом в маршрутизаторе, потому что тогда пакеты будут проходить через маршрутизатор.

Очевидно, вы находитесь в том же сегменте сети, и, как вы догадались, в этом случае трафик НЕ проходит через маршрутизатор.

Есть два места, где вы можете внести необходимые корректировки:

  1. Исходное устройство (I1), где вам нужно только DNAT исходящих пакетов:

    iptables -t nat -A OUTPUT -p tcp -d I2 --dport P2 -j DNAT --to I3:P3
    
  2. Второе устройство (I2), где вам нужны и DNAT, и SNAT, и у вас должна быть включена пересылка пакетов:

    iptables -t nat -A PREROUTING -p tcp -s I1 -d I2 --dport P2 -j DNAT --to-destination I3:P3
    iptables -t nat -A POSTROUTING -p tcp -s I1 -d I3 --dport P3 -m conntrack --ctstate DNAT -j SNAT --to-source I2