2013-02-07 4 views
1

내 안드로이드 장치에서 호스팅되는 HTTP 서버가 있습니다. 무선 라우터 뒤에있는 가정용 와이파 이로 연결되어 있어도 인터넷에서 액세스 할 수 있기를 바랍니다.NATed HTTP 서버에 액세스

또한 인터넷에서 라우터 구성에 액세스 할 수 없기 때문에 라우터에서 정적 포트 포워딩을 구성하는 것은 옵션이 아닙니다.

어떤 옵션이 있습니까?

내가이 시도 :

안드로이드 앱은 안드로이드 장치에서 HTTP 요청을 전송 특정 포트 번호에서 (8080 말), 가정을 통해 인터넷에서 웹 서버 (로컬 IP 주소를 192.168.0.1 말) WIFI,

라우터는 원본 주소를 공개 IP 주소 (예 : 111.100.45.65)로 수정하고 원본 포트 번호를 임의의 임의의 포트 번호 (예 : 39824)로 수정하고 동적 NAT 테이블에 항목을 만듭니다.

내부 IP 내부 포트 외부 포트 192.168.0.1이 항목이어야 몇 시간 동안 유지됩니다 내 이해 당으로서 8080 39824

. 인터넷상의 웹 서버는 원본 IP와 포트를 각각 111.100.45.65와 39824로보고합니다.

android 앱에서 인터넷의 웹 서버로 HTTP 요청을 보낸 후 장치의 포트 8080에서 HTTP 서버를 실행합니다. 이제 인터넷에서 포트 39824에있는 111.100.45.65 주소로 HTTP 요청을 보내려면 장치에서 실행중인 HTTP 서버가이를 받아야합니다 (라우터는 동적 NAT 테이블에서 요청을 해결하고이를 내 장치로 전달합니다) .

하지만 어떤 이유로이 요청이 해결되지 않습니다. 모든 포인터.

+0

정말 VPN을 사용하고 싶습니다. –

+0

VPN도 옵션이 아닙니다.나는 TCP 구멍 펀칭을 달성하기 위해 노력하고 있습니다. 나는 안드로이드 (라우터 뒤에)의 특정 포트에서 공개 서버에 연결하고 있습니다. 또한, 내 애플 리케이션의 동일한 포트에서 다른 스레드에서 듣고 있어요. 공개 서버가 이제 라우터 IP와 포트를 인식하고 있기 때문에 스레드가 공개 서버에서 클라이언트의 HTTP 요청을받을 수 있어야합니까? – rohitverma

답변

0

아니요. 앱은 포트 39824를 통해 웹의 http 서버와 통신 할 수 있습니다. 이 포트를 사용하여 웹에서 사용자의 장치에있는 http 서버에 연결할 수있는 사람은 없습니다. 라우터에서 포트 포워딩을해야 인터넷에 연결할 수 있습니다.

1

먼저 인터넷에서 라우터 구성에 액세스하는 것과 관련하여 대부분의 라우터는 실제로 WAN 인터페이스에서 로그인을 지원합니다. 대부분의 라우터에서는 기본적으로 꺼져 있지만 암호가 안전하다면이 기능을 활성화 할 수 없습니다.

두 번째로, 인터넷에서 웹 서버에 프록시를 설정하면 효과가 있습니다.

  1. Android 기기에서 인터넷의 웹 서버로 연결을 시작하여 TCP 구멍을 펀치합니다.
  2. 이제 인터넷의 웹 서버는 공용 IP와 대상 포트가 안드로이드 장치와 통신 할 수 있음을 알고 있습니다.
  3. 자동 스크립트는 HTTP 요청을 Android 디바이스로 전달할 인터넷상의 웹 서버에 프록시 서버를 구성 할 수 있습니다.

그런데 NAT 항목이 최소한 몇 시간 동안 유지되는 것은 의심 스럽습니다. 인터넷상의 안드로이드 장치와 웹 서버간에 연결 유지 메커니즘을 구현하여 TCP 구멍이 열린 채로 유지되도록 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 필자의 경우 라우터 인터페이스에 원격으로 로그인하는 것도 불가능합니다. HTTP 서버 앱은 여러 사용자의 기기에 설치되며 각 기기는 서로 다른 WIFI 네트워크에 연결됩니다. 따라서 라우터 신임 정보에 액세스 할 수 없습니다. 세 번째 점을 자세히 설명해 주시겠습니까? 다시 한번 감사드립니다. – rohitverma

+0

구멍이 "Android -> Router -> Web Server"로 펀칭되면 인터넷에서 Android 장치와 통신 할 수있는 유일한 것은 웹 서버와 동일한 원본 IP 주소 (예 : 웹 서버)를 가진 호스트입니다 그 밖의 것은 없습니다. 따라서 인터넷의 다른 장소에서 Android 기기와 통신하려면 VIA 웹 서버로 이동해야합니다. 즉, 웹 서버가 프록시로 작동해야합니다. – wookie919

+0

프록시를 동적으로 구성해야하는 이유는 물론 Android 장치의 공용 IP 주소 (및 포트 번호)가 변경되기 때문입니다. 다음을 수행 할 수 있습니다. (1) 웹 서버의 PHP 파일에 HTTP 요청에 의한 구멍을 뚫습니다. (2) PHP 파일은 서버 자체에 프록시 서버를 자동으로 구성하여 특정 포트에서 수신 된 인터넷의 다른 위치에서 Android 장치로 트래픽을 전달합니다. 죄송하지만 PHP 스크립트가 프록시 서버를 자동으로 구성하는 방법에 대한 정확한 정보를 제공 할 수는 없지만이를 수행 할 수 있다고 확신합니다. – wookie919

관련 문제