2

У меня есть служба HTTP, связанная с портом 8000, к которому я хочу получить доступ с другого компьютера в сети, но я не могу подключиться с использованием внешнего IP-адреса машины (например, 192.168.0.105). Я проверил, что брандмауэр OS X не работает, поэтому я предполагаю, что проблема заключается в том, что служба связана только с IP-адресом 127.0.0.1, а не с внешним IP-адресом.

Какой самый простой способ временно переадресовать внешние соединения через порт 8000 на 127.0.0.1:8000?

4 ответа4

1

Самый простой и быстрый способ сделать локально связанные порты доступными общедоступному интерфейсу без перенастройки базовой службы - создать переадресацию порта ssh и сделать его доступным глобально (по умолчанию он прослушивает только локально)

Поскольку это одна и та же машина, вам придется использовать разные порты. На Mac, где работает служба, запустите

ssh -v -g -L 8001:localhost:8000 localhost

-v для подробного, так что вы видите входящие соединения

-g сделать его доступным на общедоступном интерфейсе

-L port:targethost:targetport хорошо, вы уже это знаете :-)

если у вас есть более одного активного интерфейса на машине, добавьте в оператор -L адрес, с которым вы хотите связать его.

1

Используйте ipfw, ему нравится iptables в linux.

Я предполагаю, что вы используете ssh порт для переадресации сервиса на ваш локальный компьютер.

ipfw add fwd 127.0.0.1,8000 tcp from any to 192.168.0.105 dst-port 8000

Другой компьютер в сети может получить доступ к услуге через 192.168.0.105:8000

0

Если я правильно понимаю, Squid может работать. Кроме того, попробуйте имя компьютера, а не IP, или какую-либо другую службу (ping, VNC, FTP и т.д.)

0

Во-первых, убедитесь, что вы идете после правильной проблемы. Вы можете проверить, какие IP-адреса прослушивает веб-сервер, с помощью команды netstat :

$ netstat -an | grep LISTEN
tcp46      0      0  *.8000                 *.*                    LISTEN
tcp4       0      0  *.88                   *.*                    LISTEN
tcp6       0      0  *.88                   *.*                    LISTEN
tcp4       0      0  127.0.0.1.631          *.*                    LISTEN
tcp6       0      0  ::1.631                *.*                    LISTEN

В первой строке этого примера «* .8000» означает, что что-то (предположительно веб-сервер) прослушивает порт 8000 на всех связанных IP-адресах. С другой стороны, последние две строки означают, что что-то прослушивается на порте 631 в петлях IPv4 и IPv6 (127.0.0.1 и::). Если вы видите «127.0.0.1:8000» при запуске команды, это означает, что вы на правильном пути в своем диагнозе.

Если это проблема, вероятно, лучше решить ее, привязав веб-сервер ко всем IP-адресам, а не пытаясь обойти его с помощью сервера пересылки. Проверьте ваши конфигурационные файлы Apache (по умолчанию в OS X - /etc/apache2/httpd.conf, плюс все, что из него "включено") на наличие директив "Listen". Если ты видишь

Listen 127.0.0.1:8000

измените это на

Listen 8000

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