경고하다

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

접합재(libindp.so)가 이를 수행할 수 있습니다. 하지만 데비안 저장소에서는 사용할 수 없어 사용이 불편합니다. 그래서 저는 같은 목표를 달성하기 위해 바인딩에 대한 대안이 있는지 묻고 싶습니다.

답변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

관련 정보