OS X - 외부 포트를 로컬 루프백 주소로 전달

OS X - 외부 포트를 로컬 루프백 주소로 전달

네트워크의 다른 컴퓨팅에서 액세스하려는 포트 8000에 연결된 HTTP 서비스가 있지만 시스템의 외부 IP 주소(예: 192.168.0.105)를 사용하여 연결할 수 없는 것 같습니다. OS X 방화벽이 실행되고 있지 않은 것을 확인했기 때문에 서비스가 외부 IP 주소가 아닌 IP 주소 127.0.0.1에만 바인딩되어 있는 것이 문제라고 가정합니다.

포트 8000의 외부 연결을 127.0.0.1:8000으로 일시적으로 전달하는 가장 쉬운 방법은 무엇입니까?

답변1

기본 서비스를 재구성하지 않고 로컬로 바인딩된 포트를 공용 인터페이스에서 사용할 수 있게 만드는 가장 쉽고 빠른 방법은 SSH 포트 전달을 생성하여 전역적으로 사용할 수 있도록 만드는 것입니다(기본적으로 로컬에서만 수신 대기함).

동일한 시스템이기 때문에 다른 포트를 사용해야 합니다. 서비스가 실행되는 Mac에서 시작

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

-v자세한 내용을 보려면 들어오는 연결을 볼 수 있습니다.

-g공개 인터페이스에서 사용할 수 있도록 하기 위해

-L port:targethost:targetport글쎄, 당신은 이미 그것을 알고 있습니다 :-)

머신에 둘 이상의 활성 인터페이스가 있는 경우 -L바인딩하려는 주소를 포함하도록 명령문을 확장하십시오.

답변2

ipfw를 사용하면 Linux의 iptables를 좋아합니다.

나는 당신이 서비스를 로컬로 전달하는 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을 통해 서비스에 액세스할 수 있습니다.

답변3

제가 이해한 것이 맞다면,오징어작동할 수도 있습니다. 또한 IP나 다른 서비스(ping, VNC, FTP 등) 대신 컴퓨터 이름을 사용해 보세요.

답변4

먼저 올바른 문제를 해결하고 있는지 확인하세요. 다음 명령을 사용하여 웹 서버가 수신 대기 중인 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"은 무언가(아마도 웹 서버)가 바인딩된 모든 IP의 포트 8000에서 수신 대기하고 있음을 의미합니다. 반면에 마지막 두 줄은 IPv4 및 IPv6 루프백(127.0.0.1 및 ::)의 포트 631에서 수신 대기 중임을 의미합니다. 명령을 실행할 때 "127.0.0.1:8000"이 표시되면 진단이 올바른 방향으로 진행되고 있다는 의미입니다.

이것이 문제인 경우 전달자를 사용하여 문제를 해결하려고 하기보다는 웹 서버를 모든 IP에 바인딩하여 문제를 해결하는 것이 가장 좋습니다. "Listen" 지시어가 있는지 Apache 구성 파일(OS X의 기본값은 /etc/apache2/httpd.conf와 여기에 "포함"된 모든 항목)을 확인하세요. 네가 본다면

Listen 127.0.0.1:8000

그것을로 바꾸다

Listen 8000

관련 정보