У меня есть виртуальная машина Debian 11 на компьютере с Windows. У него 3 сетевых адаптера. Один внешний (WAN), один внутренний (LAN) и еще один частный (экспериментальный).
Я использую коробку в качестве маршрутизатора, который, в свою очередь, использует мой DSL-маршрутизатор обратно через сетевую карту WAN, которая фактически подключена к коробке Hyper-V. Все работает по маршрутизации.
Чего я пытаюсь достичь, и, прочитав много статей, до сих пор не удалось, так это то, что я пытаюсь перехватить один порт (4444), например, на один общедоступный IP-адрес в Интернете и перенаправить его обратно на машину на моем ЛВС. Звучит просто, и я уверен, что это так, но я не могу заставить его работать.
Чтобы было ясно, это НЕТ пытаясь открыть общедоступный порт и настроить его внутреннюю маршрутизацию. Это делается для перехвата одного единственного порта (рассматриваемое приложение подключается к нескольким портам). Я хочу, чтобы вся связь шла к целевому серверу в обычном режиме, но я хочу, чтобы этот порт был направлен на мою машину, где у меня есть сервер сокетов, настроенный для связи.
Я знаю, что ответ связан с iptables, но я просто не могу правильно понять команды. Всякий раз, когда я делаю
iptables -t nat -A ВЫВОД -p tcp --dport 4444 -j DNAT --назначение 10.0.0.111:4444
он даже не отображается в моем iptables -L
. Переадресация включена. Я также пробовал:
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 4444 -j DNAT --назначение 10.0.0.111:4444
Я даже применил его к eth0, который является шлюзом по умолчанию.
eth0 — Общедоступная глобальная сеть
eth1 — локальная сеть
eth2 — экспериментировал с назначением рассматриваемого общедоступного IP-адреса, но это портит маршрутизацию для всех портов, поэтому отказался от этого.