[윈도우] hosts 파일 위치와 hosts 파일로 로컬 도메인 설정하기

우리가 사용하는 "도메인 네임 시스템(DNS)"은 웹 브라우저에서 도메인을 입력하면 네트워크에 설정된 네임서버를 통해 웹 서비스를 하는 실제 서버의 공인IP로 변환되고, 최종적으로 공인IP를 통해 웹서버에 접근을 하게 됩니다.

이 방법은 도메인 네임을 도메인 등록업체를 통해 등록해야하고 공인 IP를 연결할 수 있어야 하는 제약 사항이 있습니다.

웹 개발용, 또는 네트워크 테스트용으로 내 컴퓨터, 또는 공인IP를 가진 외부 컴퓨터에서 임의의 도메인이나 호스트이름으로 접근할 수 있으면 이런 번거로운 과정 없이개발을 할 수 있는 장점이 있습니다.

대부분의 운영체제와 윈도우 운영체제는 이런 기능을 할 수 있는 기능을 제공하며, 이 기능을 hosts 파일을 통해 제공합니다. hosts 파일 설정을 통해 내 컴퓨터에서 실행하고 있는 웹사이트, 또는 공인IP를 알고 있는 외부 시스템에 임의의 도메인을 연결해서 접속이 가능하도록 할 수 있습니다.

hosts 파일 위치와 편집

윈도우 운영체제에서 hosts 파일은 C:\Windows\System32\drivers\etc 경로에 있습니다.

hosts 파일은 확장자가 없으며, 텍스트 편집기로 편집할 수 있는 텍스트 포맷 파일입니다. 또한 시스템 파일이기 때문에 관리자 권한으로 파일을 열어야 수정한 hosts 파일을 저장 할 수 있습니다.

hosts 파일이 있는 경로에 저장하려면 관리자 권한이 있어야 합니다.

hosts 파일이 위치한 C:\Windows\System32\drivers\etc 경로는 관리자 권한이 있어야 접근 및 파일 저장이 가능합니다.

hosts 파일을 수정하기 위해 텍스트 편집기를 실행할 때는 "관리자 권한으로 실행"을 해야 수정한 내용을 저장할 수 있습니다.

앱을 관리자 권한으로 실행하려면 앱 실행파일, 또는 실행파일 링크 아이콘에 마우스 커서를 위치한 후 오른쪽 버튼을 눌러 실행 옵션을 선택하는 컨텍스트 메뉴에서 "관리자 권한으로 실행"을 선택해야 합니다.

앱 실행 아이콘에서 컨텍스트 메뉴를 열어 "관리자 권한으로 실행"을 선택해야 합니다.

관리자 권한으로 텍스트 편집기를 실행한 후 hosts 파일을 열면 기본 값은 다음과 같습니다. 사용 예가 있으므로 참고해서 포맷대로 작성하면 됩니다.

맨 앞의 "#"은 주석 표시입니다. 맨 앞에 "#" 표시가 된 행은 모두 무시됩니다.

작성 방식은 간단합니다. 다음처럼 IP 뒤에 공백/탭으로 구분한 후 호스트, 또는 도메인을 행 단위로 작성하면 됩니다.

IP    호스트/또는도메인

예를 들어 다음처럼 작성합니다.

127.0.0.1    blog
192.168.0.46    apost.dev
127.0.0.1    mydomain1.com
127.0.0.1    google.com

hosts 파일이 네트워크에 설정한 네임서버보다 우선 순위가 있기 때문에 hosts 파일에 앞서처럼 "google.com" 도메인을 로컬 호스트로 설정하면 웹 브라우저로 google.com 사이트에 접속할 때 실제 구글 검색 사이트가 아닌 내 로컬 컴퓨터의 웹 서버에 접속(http://127.0.0.1)을 시도하게 됩니다.

hosts 파일의 작성 규칙은 다음과 같습니다.

  • localhost 는 별도로 hosts 파일에 설정하지 않아도 동작합니다. 내장된 호스트이름입니다.
  • 호스트이름, 또는 풀 도메인 이름을 모두 사용할 수 있습니다.
  • 퍼블릭 도메인이 없는 공인 IPv4에 원하는 사설도메인을 매핑할 수 있습니다. 공인IP를 가진 서버, 또는 사설망 안에 있는 컴퓨터에 원하는 아무 도메인이나 연결할 수 있습니다. 물론 hosts에 설정한 도메인으로의 접근은 내 컴퓨터에서만 가능합니다.
  • 퍼블릭 도메인을 127.0.0.1로 매핑하면 퍼블릭 도메인으로 연결시 로컬호스트로 연결합니다. 특정 도메인 접근을 로컬호스트로 연결되도록 강제할 때 사용할 수 있습니다.

hosts 파일에 다음처럼 로컬호스트 IP를 domain1.com 도메인으로 설정하면 웹 브라우저에서 domain1.com을 입력하면 내 로컬호스트의 80포트, 또는 443포트를 통합 웹 연결을 시도하게 됩니다.

127.0.0.1    domain1.com

"domain1.com" 도메인은 실제로 등록되지 않은 도메인이어도 상관없습니다.

개발용으로 여러 개의 웹사이트를 로컬호스트 웹서버에 호스팅할 때 여러 개의 호스트 이름으로 구분을 해서 웹 사이트를 여러 개 운영할 수 있습니다.

IIS에서 호스트 이름으로 로컬호스트 안에서 멀티 웹사이트를 운영할 수 있습니다.

여러 개의 호스트이름과 도메인을 등록해서 원하는 IP로 가도록 설정할 수 있습니다.

localhost

"localhost"는 네트워크에서 사용되는 특별한 호스트 이름입니다. localhost는 로컬 컴퓨터를 가리키는데 사용됩니다. 즉, localhost 는 컴퓨터 자기 자신을 가리키며, 네트워크에 연결된 다른 컴퓨터를 가리키지 않습니다.

"localhost"는 웹 개발이나 네트워크 프로그래밍에서 웹 서버나 기타 서버 환경을 실행하는 앱을 로컬에서 직접 접근할 때 사용됩니다. 이것은 개발자가 웹 페이지나 앱을 로컬 컴퓨터에서 개발하고 테스트하는데 많은 편리함을 제공합니다.

예를 들어 웹 브라우저에서 "http://localhost"를 입력하면 로컬 컴퓨터에 설치된 웹 서버에 연결됩니다. "localhost"는 내 컴퓨터의 내장 IP 주소인 "127.0.0.1"로 매핑됩니다. 따라서 "localhost"를 사용하면 로컬 시스템에 있는 서비스에 접속할 수 있습니다.

이러한 특징은 공인 IP를 가진 추가의 서버를 필요로 하지 않기 때문에 개발 프로세스를 단순화하고 개발자가 서버 코드를 테스트하고 디버깅하는 데 도움이 됩니다. 또한 로컬 환경에서 작업하기 때문에 네트워크 지연이나 외부 요인으로 인한 영향을 받지 않아서 효율적인 개발이 가능합니다.

127.0.0.1과 ::1

"127.0.0.1"은 IPv4 환경에서 로컬 호스트를 가리키는 특별한 IP 주소입니다. "::1"은 IPv6 환경에서 사용되는 로컬 호스트를 나타내는 특별한 주소입니다. 이 주소로 ping테스트를 하면 자기 자신으로부터 ICMP 응답을 얻게 됩니다. 127.0.0.1과 ::1은 호스트 이름 localhost 와 같은 것으로 간주됩니다.

IPv6와 IPv4가 모두 사용 가능한 상태이면 최신 윈도우 운영체제는 localhost 호스트에 대해 IPv6(::1) 응답을 우선으로 합니다.

DOS 커맨드 ping 응답