Перенаправление локального хоста: порт на внешнийIP: NewPort

У нас есть приложение, работающее на нашем Linux-сервере. Из этого приложения, когда мы пытаемся получить доступ к localhost (127.0.0.1): localport, он должен быть перенаправлен на внешний IP-адрес. Пользователи будут только пытаться получить доступ к локальному хосту на определенном порту, который будет автоматически перенаправлен. Я прочитал таблицу iptables nat, но PREROUTING и POSTROUTING не будут применяться, если я прав, поскольку я обращаюсь к порту на локальном хосте от самого локального хоста, который вообще не касается сетевого интерфейса. Удивление таблицы OUTPUT может оказаться полезным, но когда я попытался использовать некоторые комбинации, это не сработало. Правильно ли я использую или вообще не могу это сделать?

Может ли кто-нибудь указать мне в правильном направлении?

2 Solutions collect form web for “Перенаправление локального хоста: порт на внешнийIP: NewPort”

Я решил сделать это сам.

2, и для достижения этого должен быть установлен флаг.

Пример, используемый здесь для «telnet localhost XXXX», должен пересылать пакеты в Ext.er.nal.IP: YYYY.

sysctl -w net.ipv4.conf.all.route_localnet = 1

Этот флаг, к сожалению, существует только на самых последних ядрах Linux и недоступен на старом ядре (в старом ядре нет никакого альтернативного флага). Я не совсем уверен, какое точное ядро ​​- это флаг, доступный от этого. Я считаю, что он доступен в версиях ядра 3.XX. Этот флаг должен учитывать адреса loopback как правильный адрес источника или получателя. Источник: https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt

iptables -t nat -A OUTPUT -p tcp -dport XXXX -j DNAT -to-destination Ext.er.nal.IP: YYYY

Вышеупомянутая команда изменит пакеты, которые относятся к localhost: XXXX с IP-адресом назначения: Ext.er.nal.IP: YYYY

iptables -t nat -A POSTROUTING -j MASQUERADE

Команда будет изменять IP-адрес источника как общедоступный ip вашего компьютера.

Вы можете сделать свои правила более строгими, добавив соответствующие исходные и целевые IP-адреса и интерфейсы, используя -s, -d, -i и -o. См. «Man iptables».

Благодаря Джону У. Смиту и Вуртелю. Предложения были очень полезными.

Самый простой способ выполнить это – установить netcat и inetd (Debian имеет это в openbsd-inetd ).

Добавьте строку в /etc/inetd.conf :

 127.0.0.1:1234 stream tcp nowait root /bin/nc nc ex.ter.nal.ip 1234 

Замените 1234 номером реального порта и ex.ter.nal.ip реальным внешним IP-адресом. Вам может потребоваться добавить .1000 или некоторое большее число в параметр nowait если необходимо сделать более 128 подключений в минуту; это означает, что вы не сможете выполнить безусловную перезагрузку вашей системы.

У меня также есть -q 4 -w 10 как опции nc , так как это помогает в моей ситуации, но вам может и не понадобиться.

Перезагрузите inetd после изменения файла inetd.conf .

В этом случае nc запускается inetd как ретрансляционный процесс, который работает достаточно хорошо.

  • iptables-restore просто говорит «FAILED»
  • Неожиданный вывод нетстата в условиях DNAT
  • iptables и журналы
  • Копирование / зеркальное отображение трафика на WAN-интерфейсы без поддержки «iptables tee»
  • iptables не действует на scapy-пакеты
  • Iptables не может переходить из / в внутреннюю локальную сеть с помощью proxmox
  • IPTABLES, чтобы разрешить ssh, ftp, pop и т. Д. С одного статического IP-адреса с открытым HTTP / SSL
  • Как отметить поток с помощью iptables?
  • Переносные интерфейсные интерфейсы для шлюзовой машины
  • Трафик определенного трафика на определенный интерфейс
  • Восстановить правила с помощью iptables-restore, игнорируя ошибки
  • Linux и Unix - лучшая ОС в мире.