라우터 뒤에서 네트워크 외부에서 IIS가 작동하고 액세스 할 수있게하려면 어떻게해야합니까? [닫은]


9

내 컴퓨터에서 Windows 7 Ultimate를 실행 중입니다. 지금까지 내가 한 일이 있습니다 (성공적으로).

  1. FastCGI를 통한 PHP로 IIS 7.5 설치
  2. 작동했습니다! http : //localhost/index.php 로 이동하면 PHP 스크립트가 제대로 실행됩니다.
  3. ipconfig를 실행하여 로컬 IP 주소가 192.168.1.102인지 확인하십시오. http://192.168.1.102/index.php가 위의 로컬 호스트 주소와 똑같이 작동 함을 확인했습니다 .
  4. 라우터 관리에 들어갔고 (Linksys WRT54G2가 있습니다) 포트 80에서 포트 전달을 192.168.1.102로 설정하십시오. 이제 포트 80이 내 컴퓨터로 전달되고 있습니다.
  5. 포트 80의 모든 활동을 허용하도록 Windows 방화벽에서 인바운드 규칙을 설정하십시오.
  6. Google의 외부 IP 주소가 무엇인지 확인했습니다. XXX.XX.XX.XX라고하겠습니다.

그러나 내 컴퓨터 또는 네트워크가 아닌 멀리 떨어진 컴퓨터에서 http : //XXX.XX.XX.XX/XX.php 로 이동하려고 하면 아무 것도 얻지 못합니다. 잠시 동안 연결에 실패하지만 결국 포기합니다.

내가 궁금해하는 것은 다음과 같습니다.

  1. 내가 무엇을 놓치고 있습니까? 내가 무엇을 잊어 버리거나 간과 했습니까? 로컬 네트워크 외부에서 어떻게 작동하고 액세스 할 수 있습니까?
  2. 이 작업을 수행한다고 가정하면 포트 80 이외의 포트를 어떻게 사용할 수 있습니까? 이를 가능하게하기 위해 IIS, Windows 방화벽, 라우터 관리 등 어떤 변경이 필요합니까?

미리 감사드립니다!


1
포트가 성공적으로 전달되었는지 확인하십시오. yougetsignal.com/tools/open-ports
smohamed

답변:


5

발생한 HTTP.SYS 문제처럼 들립니다.

아래는 Scott Hanselman의 블로그 에서 localhost 외부에서 IISExpress를 노출하는 방법을 설명합니다. 블로그 게시물은 더 길며 SSL을 모두 연결하는 방법도 설명합니다. 그러나 나는 그의 게시물에서 가져온 아래에 게시 한 명령이 문제를 해결하는 데 도움이 될 것이라고 믿습니다.

먼저 커널 수준에서 HTTP.SYS에 "Url Reservation"을 만들어서이 URL과 대화 할 수 있다는 것을 알려 주어야합니다. 관리 명령 프롬프트에서 :

netsh http add urlacl url=http://<LocalComputerName>:80/ user=everyone

다음으로 외부에서 (내 호스트 네트워크뿐만 아니라 네트워크상의 사람들 등) IIS Express와 대화하고 싶을 때 Windows 방화벽을 통해 IIS Express를 허용해야합니다. Windows에서 그래픽으로 수행하거나 다음을 입력 할 수 있습니다.

netsh firewall add portopening TCP 80 IISExpressWeb enable ALL

방화벽 규칙을 이미 생성 했으므로 마지막 명령이 필요하지 않을 수 있습니다.


URL 예약을 추가하기 위해 첫 번째 netsh 명령을 실행했지만 아무것도하지 않았습니다 (여전히 로컬에서는 작동하지만 네트워크 외부에서는 작동하지 않음). 다른 아이디어가 있습니까?
soapergem

이것은 제대로 보이지 않습니다. 실제 IIS 7.5 인스턴스 (IIS Express가 아님)를 포트 전달하기 위해 http.sys를 사용하지 않아도됩니다.
TristanK

2
  1. (네트워크 외부에서 액세스) 많은 가정용 ISP (및 일부 비즈니스 ISP)는 포트 80 또는 25와 같은 특정 서비스 포트의 인바운드 트래픽을 차단합니다. 이는 일반적으로 대역폭 사용으로 인해 가정용 회선에서 비즈니스 서비스를 실행하지 못하게하기위한 것입니다. 대안은 다른 포트에서 실행하는 것입니다 (아래 참조).

  2. (네트워크 내부에서 액세스) 헤어핀 NAT와 같은 소리를 설명하는 상황입니다. 다음은 Hairpin NAT에 대한 고급 개요입니다 . 항상 외부 IP로 향하는 트래픽을 만들려면 라우터에 NAT 규칙을 추가해야합니다. 포트 80은 라우터를 통과하며 호스트에서 네트워크 내부의 호스트로 직접 이동하지 않습니다. 주의 사항 : 라우터가 실제로이 작업을 수행하지 못할 수 있습니다.

  3. IIS 에서 포트 바인딩 을 변경 한 다음 웹 사이트를 다시 시작하십시오.


포트 8080에서 작동하도록 IIS에 바인딩을 추가했으며 다시 로컬에서 작동합니다. 따라서 192.168.1.102:8080/index.php가 작동합니다. 또한 포트 8080의 Windows 방화벽에 인바운드 규칙을 추가했지만 여전히 네트워크 외부에서 작동하지 않습니다. 내 Linksys WRT54G2 라우터에 NAT 규칙을 추가하는 방법을 조사한 결과 온라인에서 찾은 도움말에는 "포트 트리거링"옵션 설정이 필요하다고합니다. 나는 이것을 설정했지만 여전히 ... 주사위는 없습니다. 다른 제안?
soapergem

1
내부적으로 액세스 할 수 있다면 Windows 방화벽은 문제가되지 않습니다. 포트 트리거링이 원하는 것이 아닙니다. 포트 포워딩을 사용하게됩니다 (라우터가 지원하는 경우). 라우터의 포트 8080에 전달 트래픽은 192.168.1.102:8080에 외부 인터페이스의
조엘 E 살라스에게

질문을하기 전에 이미 포트 80과 8080에서 포트 포워딩을하고있었습니다. 여전히 뭔가 빠진 것 같습니다.
soapergem

라우터에 트래픽을 차단할 수있는 실제 방화벽 규칙 (NAT 규칙 제외)이 있습니까? 가능한 경우 디버깅 목적으로 라우터로 사용할 pfSense를 실행하는 상자를 설정하십시오. 라우터 (서비스 호스팅 용으로 설계되지 않은)는 거의 확실하게 고민의 원인입니다.
Joel E Salas 2019

IIS 수준에서 잘못한 것처럼 보이지만 라우터가 직관적이지 않고 ISP가 차단하고 있다는 것입니다. IP가 이중 간접적이라고 생각하는 것도 가능합니다. 외부 IP가 무엇인지 라우터의 아이디어를 확인하십시오.
TristanK

0

나는 같은 문제가 있었다. Windows 방화벽이 액세스를 차단하고 있습니다. 전원을 끄고 다시 확인하십시오. 내 생각 엔 그것이 효과가있을 것입니다.


2
방화벽을 끄는 것은 일반적으로 좋은 해결책이 아닙니다.
user9517

대신 포트 80 및 443에 대한 예외를 추가하십시오.
Najeeb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.