본문 바로가기

IT

[Ubuntu/Linux] /etc/hosts의 모든 것

브라우저에 도메인 이름을 치면,

네임서버를 거쳐 도메인 이름은 IP 주소로 변환이 됩니다.


그렇다면 브라우저에 "localhost"를 치면,

"localhost"도 네임서버를 통해 IP 주소로 변환되는 것일까요?


레드헷/우분투 계열에서는 /etc/hosts 파일을 우선적으로 참고하여,

네임서버를 아이피주소로 바꿉니다.



브라우저나 터미널에서 도메인 이름을 치면 으레 네임서버에서 아이피를 얻어오게 됩니다.

요즘 환경에서 네임서버를 사용할 수 '없는' 상황은 드물기 때문에 hosts 파일의 존재감이 미미합니다.


하지만, 인터넷 역사의 극초반부에는 네임서버 같은게 있을 리가 없었죠.

네임서버는 1984년에 처음 만들어졌으니,

그 전에는 아이피 주소로 접근하거나 각자 매핑 테이블을 관리했죠.


매핑테이블은 txt 파일 형식으로 공유를 했는데, 그 파일 이름이 hosts.txt 였습니다.

이제는 네임서버가 그 모든 걸 관장하니 hosts 파일을 유지보수 + 공유할 이유가 없어졌습니다.


하지만, 호스트 컴퓨터가 네임서버에 접근할 수 없는 상황에서,

도메인 이름(호스트 이름)으로 접근이 필요한 경우도 있겠지요?

아니면 네임서버에 등록되지 않은 도메인 네임(호스트 이름)이 있을 수도 있겠네요.


그럴 때는 /etc/hosts 파일을 사용합니다.

/etc/hosts에서 매핑된 도메인 이름과 IP 주소를 사용합니다.


$ cat /etc/hosts
127.0.0.1    localhost
127.0.1.1    storycompiler


매핑 테이블에 특별한 문법은 없고,

IP주소(빈칸)도메인이름(빈칸)alias

위처럼만 써주면 됩니다.

별칭으로 사용하는 alias는 생략해도 됩니다.


hosts 파일을 수정한 뒤에는 그 내용을 다시 메모리에 올려놓아야하는데요,

network 데몬을 재실행하면 됩니다.


$ sudo /etc/init.d/networking restart
[ ok ] Restarting networking (via systemctl): networking.service.


이상으로 /etc/hosts에 대한 설명을 마치겠습니다.

그럼 좋은 하루 보내세요~

끝_


* References

http://www.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap9sec95.html

https://en.wikipedia.org/wiki/Hosts_%28file%29