Предупреждение

Предупреждение
  • представьте себе серверное приложение, которое прослушивает только локальный хост,
  • не имеющий настроек для прослушивания других интерфейсов
  • хочется заставить его прослушивать другие интерфейсы, такие как eth0

связывать(libindp.so) может это сделать. Однако он недоступен в репозиториях Debian, что делает его неудобным. Поэтому я спрашиваю, есть ли альтернативы bindp для архивации той же цели?

решение1

Этот вопрос уже задавался дюжину раз, и приемлемым ответом будет использование iptables:

sysctl -w net.ipv4.conf.all.route_localnet=1 
iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:8080

Первая команда разрешает перенаправление из внешней сети во внутреннюю (что отключено по соображениям безопасности), а вторая — выполняет перенаправление (конечно, вам придется адаптировать порты к вашему конкретному случаю, который вы никак не объяснили).

Другим решением может стать использование OpenSSHлокального перенаправления портов, что позволяет сделать по сути то же самое, но без отключения защиты ядра (я не буду подробно описывать это, так как другое решение уже работает).

В зависимости от протокола, используемого вашей локальной службой, вы также можете использовать ее nginxкак обратный прокси-сервер или sshlкак мультиплексор.

Наконец, socatи stunnelдрузья также могут быть использованы для этой цели.

Преимущество решения iptables в том, что оно встроено в ядро ​​и, следовательно, работает быстрее.

Предупреждение

Поскольку SE — это система, в которой точный ответ считается лучшим, чем попытка решить проблемы, я попытался ответить на вопрос. Однако, учитывая ваше описание, в котором не хватает деталей, я подозреваю, что вы на самом деле находитесь в одном из этих двух случаев:

  1. Либо служба действительно может быть настроена на прослушивание интерфейса, доступного по слову, но вы не знаете как, в таком случае вам следовало бы описать саму службу и спросить, как сделать ее доступной извне.
  2. Или же сервис действительно не предназначен для мгновенного доступа по техническим причинам или причинам безопасности.

Но я не могу сказать точнее, так как не знаю, какая именно это служба.

решение2

сокатинструмент (Пакет Debian) может помочь:

socat -d -d TCP4-LISTEN:80,bind=192.168.1.1,fork TCP4:localhost:80

решение3

С IPv6Решение iptables не будет работать. Вместо этого вы можете использовать решение @Artem, например

sudo socat TCP6-LISTEN:80,bind=[2001::beef],fork TCP6:[2001::beef]:8080

Связанный контент