/etc/hosts 파일은 무엇인가

,

DNS에 대해 아십니까

hosts 파일은 도메인의 IP를 찾을 때 컴퓨터가 맨 처음 조사하는 파일이다.

무슨 말이냐면…

인터넷은 수많은 컴퓨터에 32비트 길이의 숫자를 부여해서 서로를 찾을 수 있도록 해 준다. 예컨대 지금 이 사이트의 IP 주소는 172.67.211.12다.

(정확히 말하면 32비트 주소는 IPv4, Internet Protocol Version 4의 스펙이다. IPv4는 8bit 숫자 네 개로 총 32bit 길이의 IP 주소를 사용한다. 그런데 인터넷에 접속된 컴퓨터가 엄청나게 많아지면서 32비트 주소 체계로는 감당하지 못할 것이 분명해졌다. 이런 상황을 전망하고 1995년에 IPv6 스펙이 도입됐다. IPv6에선 16bit 숫자 여덟 개를 이용해 총 128bit 길이로 된 IP주소를 사용한다.)

그런데 우리 사람들은 사이트에 접속하기 위해서 IP 주소를 사용하지 않는다. 도메인을 사용하며, 이 사이트의 도메인은 mytory.net이다.

인터넷 체계의 기본은 IP 주소인데, 왜 우리는 도메인을 사용할까? 간단하다. 숫자는 사람이 외우기 힘들기 때문에 주소로 도메인을 사용하는 것이다. (물론 한 서버에서 여러 사이트를 띄우기 위해 한 IP를 여러 도메인에 매핑하는 게 가능하다는 점도 있다.)

그러면 도메인을 숫자 주소로 변환하는 것은 누가 어떻게 할까? 이런 걸 잘 하는 컴퓨터가 한다. 그리고 이를 처리하는 시스템을 바로 DNS, 도메인 네임 시스템(Domain Name System)이라고 부른다. 세계 곳곳에는 DNS 서버가 있고, 인터넷을 사용하는 거의 모든 사람들은 사실은 이 DNS 서버에 의존해 인터넷을 하고 있는 것이다.

우리가 브라우저에 mytory.net이라고 치는 순간, 브라우저는 DNS 서버에 접속해서 “mytory.net IP 주소가 어떻게 됩니까?” 하고 묻는다. 그러면 DNS 서버는 “172.67.211.12입니다” 하고 대답해 준다. 그러면 해당 IP에 접속해서 사이트의 내용을 받아 보여 주는 것이다.

hosts 파일은 1번 DNS 서버

앞서 hosts 파일은 컴퓨터가 도메인의 IP를 찾을 때 맨 처음 조사하는 파일이라고 했다.

그렇다. 우리가 브라우저에 mytory.net이라고 치면 컴퓨터는 외부에 있는 DNS 서버에 mytory.net의 IP 주소를 물어 보기 전에 hosts 파일을 먼저 조사한다. 그리고 여기에서 IP 주소를 찾으면, 컴퓨터는 이 도메인에 대해 DNS 서버에는 묻지 않는다(그래서 해커들은 가짜 웹사이트로 사람들을 낚기 위해 hosts 파일을 변조하려고 한다. 그래서 보통 백신은 이 파일을 수정할 수 없게 보호한다).

그래서 우리가 로컬에서 개발을 진행할 때 이 파일에 로컬 도메인의 주소를 127.0.0.1, 자기 자신을 가리키는 IP를 적어 주는 것이다(이런 걸 루프백이라고 부른다. 전송했는데 부메랑처럼 한 바퀴 돌고 돌아오는 것이다.)(사실 127.으로 시작하는 주소는 모두 자기 자신을 가리킨다).

구체적인 사용 방법

리눅스와 맥은 /etc/hosts 파일에, 윈도우는 C:\Windows\System32\Drivers\etc\hosts 파일에 내용을 작성해 준다(윈도우는 기본적으로 해킹 방지용 쓰기 금지가 돼 있으니 바탕화면에 복사해서 편집한 후 다시 복사해 넣는다. 백신이 막고 있으면 백신에서 편집을 허용해 준다). 내용은 아래와 같은 식이다.

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost MytoryMP.local
255.255.255.255 broadcasthost
::1             localhost
127.0.0.1       video.localhost

위 내용을 보면 맨 마지막 줄에 video.localhost라는 도메인이 127.0.0.1에 연결돼 있는 것을 볼 수 있다.

127.0.0.1은 서버 컴퓨터 자신을 가리키는 IP 주소다. video.localhost는 내가 로컬에서 개발하는 사이트고, IP주소를 내 컴퓨터로 설정해 둔 것이다. video.localhost라는 도메인은 내 컴퓨터 외에는 어디에도 없는 도메인이기 때문에 여기 적어 주지 않으면 컴퓨터가 도메인의 IP주소를 찾지 못한다.

localhost가 기본적으로 127.0.0.1에 연결돼 있어서 video.localhost처럼 localhost의 서브도메인을 사용하면 지정해 주지 않아도 알아서 찾는 경우도 있는데, 그래도 부작용이 나타나는 경우가 있으니 꼭 써 주자.

팁1: 주석 뒤 첫 줄을 보면 127.0.0.1 localhost MytoryMP.local이라고 씌어 있다. 127.0.0.1localhostMytoryMP.local이라는 두 도메인을 연결한 것이다. 즉, 한 IP에 연결할 도메인을 띄어쓰기로 구분해서 여러 개 쓸 수 있다.

팁2: 주석 뒤 셋째 줄을 보면 ::1 localhost이라고 돼 있다. ::1은 IPv6(Internet Protocol version 6)에서 내 컴퓨터를 가리키는 IP주소다. ipv6에 대해서는 위키피디아를 참고하라.

카테고리 글 목록 👉

,

대표글

댓글 남기기