경고

경고
  • localhost에서만 수신 대기하는 서버 애플리케이션을 상상해 보세요.
  • 다른 인터페이스에서 수신할 수 있는 설정이 없습니다.
  • eth0과 같은 다른 인터페이스에서 강제로 수신 대기하도록 만들고 싶습니다.

바인드(libindp.so)가 그렇게 할 수 있습니다. 그러나 데비안 리포지토리에서는 사용할 수 없으므로 불편합니다. 따라서 동일한 목표를 보관하기 위해 binp에 대한 대안이 있습니까?

답변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멀티플렉서로 사용할 수도 있습니다.

마지막으로 , socatstunnel친구들도 이를 위해 사용될 수 있습니다.

iptables 솔루션의 장점은 커널 내에 있으므로 더 빠르다는 것입니다.

경고

SE는 실제로 문제를 해결하려고 노력하는 것보다 정확하게 대답하는 것이 더 낫다고 판단되는 시스템이므로 질문에 대답하려고 노력했습니다. 그러나 귀하의 설명이 세부 사항이 부족하여 실제로 귀하는 다음 두 가지 경우 중 하나에 속한다고 생각됩니다.

  1. 실제로 서비스가 단어로 접근 가능한 인터페이스를 수신하도록 구성될 수 있지만 어떻게 해야 하는지 알 수 없습니다. 이 경우 서비스 자체를 설명하고 외부에서 이를 사용 가능하게 만드는 방법을 물어봐야 합니다.
  2. 또는 기술이나 보안상의 이유로 서비스가 실제로 말로 접근할 수 없도록 되어 있습니다.

하지만 어떤 서비스인지 모르면 더 정확하게는 알 수 없습니다.

답변2

소캣도구 (데비안 패키지) 도울 수있다:

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

관련 정보