5

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

Служба (всего 10-строчный скрипт Python) прослушивает localhost:10000. iptables теперь должен перенаправлять каждый TCP-запрос на внешний порт на этот локальный порт, чтобы каждый из этих портов был открыт. У меня мало опыта работы с iptables, и у меня нет времени читать больше об этом предмете, поэтому я не могу заставить его работать.

Я старался:

iptables -A PREROUTING -t nat -i eth0 -p tcp -j DNAT --to-destination 127.0.0.1:10000

Но при сканировании из локальной сети все порты выглядят отфильтрованными, а не открытыми. В настоящее время нет других активных правил, и все политики настроены на ACC.

Как я могу получить это право?

Заранее спасибо!

2 ответа2

5

Так как ваши политики приняты, вы можете использовать строку iptables с 2 изменениями:

  1. добавить диапазон портов назначения с --dport 1:65535
  2. измените 127.0.0.1 с вашим IP-интерфейсом (IP-адрес eth0)

например, эта строка работает, если ваш eth0 IP равен 192.168.1.10:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 1:65535 -j DNAT --to-destination 192.168.1.10:10000

все подключения к 192.168.1.10 (к любому порту) будут перенаправлены на порт 10000.

Редактировать: Вы также можете использовать цель REDIRECT:

iptables -t nat -A PREROUTING -p tcp --dport 1:65535 -j REDIRECT --to-ports 10000

это все равно не поможет вам, если вы слушаете только localhost.

1

Вот ссылка на более свежий ответ:https://unix.stackexchange.com/questions/111433/iptables-redirect-outside-requests-to-127-0-0-1/112232

Этот действительно помог мне.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .