Windows 호스트 파일에서 호스트 이름의 IP 및 포트를 어떻게 지정합니까?


18

Windows hosts파일 에서 두 개의 다른 포트로 호스트 이름을 지정하고 싶습니다 .

그것을 할 수있는 방법이 있습니까? 아니면 Windows 자체에서 허용되지 않습니까?

지난 8 시간 동안 솔루션 검색에 시간을 허비하고있었습니다.

호스트 파일에서 포트를 지정할 수 hosts있습니까? 예 : 127.0.0.1:80127.0.0.1:9211


1
HOSTS 파일은 이름을 IP + 포트가 아닌 IP 주소와 만 연결합니다. 그러나 이러한 유형의 매핑을 달성하는 많은 방법이 있지만 항상 특정 사항에 따라 수행하려는 작업에 대한 자세한 내용 (웹 서버 등)을 설명하여 superuser.com을 확인하십시오. 손에.

http 요청을 적절한 응용 프로그램으로 전달하기위한 프록시 서버로 NGNIX 또는 Apache HTTP 서버가 필요합니다.-> 특정 포트를 수신합니다
Musa

답변:


18

포트없이 IP 주소를 사용하십시오. 예:

192.168.2.50  example.com

그런 다음 브라우저 (또는 다른 프로그램)에서 192.168.2.50:5555에 액세스하십시오.

http://example.com:5555/

hosts파일에서 찾을 수 있습니다 :

리눅스 /etc/hosts

윈도우 :C:\Windows\System32\drivers\etc\hosts


편집 할 파일의 경로이름을 모두 추가하면 도움이됩니다 .
nyedidikeke

@nyedidikeke 댓글 주셔서 감사합니다, 나는 이것을 고쳤다
devi

1
에서 파일을 편집 할 때 포트 번호를 지정하지 않은 이유로 업데이트 할 수 있습니까 C:\Windows\System32\drivers\etc\hosts?
nyedidikeke

그것은 다른 답변에서 다룹니다.
Scott

17

호스트 파일의 IP에 매핑 된 호스트 이름과 포트 번호를 연결할 수 없습니다. FiddlerScript를 사용하여 Fiddler 로이를 달성 할 수 있습니다 . 

if (oSession.HostnameIs("somesite.com")){
    oSession.bypassGateway = true;
    oSession["x-overrideHost"] = "1.2.3.4:8080";
}

7
기술 사용자를위한 좋은 제안. 간단히 설명하려면 1) 먼저 Fiddler를 설치하십시오. 2) 그런 다음이를 열고 규칙 메뉴로 이동하여 규칙 사용자 정의 옵션을 선택하십시오 (또는 Windows에서 Ctrl + R 누르기). 메모장에서 JS 파일이 열립니다. 3) 정적 함수 OnBeforeRequest를 찾아 @John이 제안한 스크립트를 본문에 붙여 넣습니다. 또한 HostNameIs가 작동하지 않습니다. HostnameIs 여야합니다. 도움이 되었기를 바랍니다.
Riz

동일한 효과에 사용될 수있는 오픈 소스 대안 (james, owasp zap 또는 기타)을 알고 있습니까?
Marc.2377

5
  • hosts파일은 호스트 이름 확인만을위한 것입니다
  • 브라우저 , 직접 지정 포트가없는 경우 : 즉 <hostname>:<port>, 기본값 포트80

일반적인 문제 시나리오

  1. 응용 프로그램은 일반적으로 동일한 기본 IP 주소에 자신의 서버를 설정 127.0.0.1일명 localhost (호스트 파일에 정의) .
  2. 다른 기존 / 실행중인 서버 간의 충돌을 피하기 위해 응용 프로그램에서는 일반적으로 IP 주소가 아닌 포트를 변경할 수 있습니다.

    2a. 루프백 예약 주소 공간 에서 서버의 IP 주소를 다른 주소로 변경할 수 있다면 호스트 파일에서 포트를 설정하지 않았을 것입니다. 127.0.0.0/8

가능한 해결책

Windows에 포함 된 네트워킹 도구 netsh를 포트 프록시로 사용하여이 문제를 해결할 수 있습니다 .


개요

example.app
 |                               <--browser defaults to port 80
 +--> example.app:80
       |                         <--Hostname resolution by Hosts File
       +--> 127.65.43.21:80      
             |                   <--Link by netsh Utility
             +--> 127.0.0.1:8081

행위

  • 서버를 시작하십시오 localhost:8081
  • hosts 파일 에 "local DNS"를 새로운 줄로 추가하십시오
    • 127.65.43.21 example.app
      • 네트워크의 모든 무료 주소를 127.0.0.0/8사용할 수 있습니다.
      • 참고 :127.65.43.21:80 다른 서비스가 차지하지않는다고 가정합니다.
      • 당신은 확인할 수 있습니다 netstat -a -n -p TCP | grep "LISTENING"
  • netsh 명령 유틸리티를 사용하여 다음 네트워크 구성을 추가하십시오.
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • 에서 서버에 액세스 http://example.app

참고 :
-이 명령 / 파일 수정은 관리자 권한 으로 실행해야합니다.

- netsh를 portproxy에서 IPv6 라이브러리를 필요로 다음 명령을 사용하여 설치 그렇지 않으면, 일반적으로 그들은 또한 기본적으로 포함되며, 심지어에만 사용 v4tov4에 :netsh interface ipv6 install


다음 명령으로 추가 한 항목 수 있습니다 .

netsh interface portproxy show v4tov4

다음 명령을 사용 하여 항목제거 할 수 있습니다 .

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


자료 링크 :

참고 :이 답변은 stackoverflow에 대한이 비슷한 질문 / 답변에서 논의 한 내 답변과 중복 됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.