
안녕하십니까, 프로젝트에 투입되어 바쁘게 지내고 있는 웅쓰입니다.
회사를 다니며 업무 능력보다 훨씬 중요한 능력이 필요하다는 것을 깨달았습니다. 그것은 바로 화를 참는 능력입니다.
이런저런 이유로 힘들어도 성장을 위해 블로그를 작성해 보겠습니다.
목차
- hosts 파일로 도메인 등록하기
- DNS, hosts 파일 중 어떤 것이 우선순위일까?
- Google 테스트
들어가기에 앞서..
127.0.0.1은 루프백(loopback) 혹은 로컬호스트(localhost)라고 불리는 주소다. 간단히 말하면 내가 패킷을 보내고 내가 다시 받는 주소이다. 만약 지금 내가 사용하고 있는 컴퓨터에 8761포트로 웹 서버를 열어 놓았다면 사용중인 컴퓨터 브라우저에 127.0.0.1:8761 입력 시 열어 놓은 웹 서버에 접근할 수 있는 그런 주소다.
클라우드 공부를 위해 만들었던 웹 서버를 잠깐 8761포트에 띄우고 위 말처럼 127.0.0.1:8761로 접속이 가능한지 테스트 한 모습이다. 자 이제 시작해보자.
1. hosts 파일로 도메인 등록하기
필자는 다양한 이유로 DNS에는 등록이 되어 있지 않는 도메인을 로컬에서 등록해 테스트를 해봐야 했던 경험이 있다. 필자처럼 어떤 이유에서든! 외부망에서든! 내부망에서든! 로컬에서 도메인을 등록해 해당 서버에 접속하고자 한다면 다음과 같이 시도하면 된다.
1) hosts 파일 접근
[] Windows
- C:\Windows\System32\drivers\etc\hosts 파일에 접근
[] Linux
- /etc/hosts 파일에 접근
2) IP, 도메인 추가
필자는 맥북을 사용하고 있기 때문에 /etc/hosts 파일 내용을 다음과 같이 수정했다.
필자는 과거 별 생각없이 로컬에서 개발할 때 localhost:8080 url로 접속했던 경험이 있다. 뭐 그냥 어딘가에 설정이 되어 있겠지~ 했던 부분이 바로 이곳이었다.
맨 처음 예시처럼 127.0.0.1이 루프백 주소라고 했는데 이 루프백 주소를 localhost라는 도메인으로 로컬에서 등록을 했기 때문에 localhost:8080을 했을 때 내 컴퓨터에서 8080포트로 띄운 웹 서버가 나올 수 있었던 것이다. 그럼 여기서 내가 접속하고싶은 ip주소와 도메인명만 지정하면 지정한 도메인으로 접속을 할 수 있다는 것인데 필자는 위와 같이 127.0.0.1을 hyeonung이라는 도메인으로 바꾸는 테스트를 해보았다.
결과는 예상대로였다. 필자가 hosts에서 도메인명을 hyeonung으로 변경했기 때문에 127.0.0.1 = hyeonung이 된 것이다.
2. DNS 서버, hosts 파일 중 어떤 것이 우선순위일까?
예를 들어, 이런 상황이 있을 수 있다.
직장 상사 曰
"우리 웹사이트는 1.1.1.1, 2.2.2.2, 3.3.3.3 IP를 가지며 Round Robin으로 트래픽을 보내고 있어. 너의 컴퓨터로는 1.1.1.1 IP로만 접속해서 문제 없는지 사용자 테스트 해봐!"
위와 같은 상황이.... 살면서 없을 수도 있지만 어쨌든! 이때! hosts 파일에 IP를 등록하고 도메인명을 기입하면 해당 IP로만 접속해서 사용자 테스트를 할 수 있다!
위와 같은 방법을 사용할 수 있는 이유는 hosts파일이 DNS서버보다 더 높은 우선순위를 가지기 때문이다.
클라이언트 컴퓨터에서 요청한 도메인이 hosts 파일에 등록되어 있다면, 해당 파일의 설정이 우선 적용되고 DNS 서버에 쿼리가 전송되지 않는다.
동작 순서
- hosts 파일 확인:
- 먼저 로컬의 hosts 파일을 참조하여 도메인과 IP 매핑을 확인한다.
- 도메인이 hosts 파일에 존재하면, 해당 IP 주소로 요청을 처리한다.
- DNS 서버 확인:
- hosts 파일에 도메인 매핑이 없을 경우, 설정된 DNS 서버로 쿼리를 전송하여 IP 주소를 조회한다.
- 캐시:
- 일부 운영체제에서는 DNS 캐시가 중간에 작동할 수 있다.
- 캐시에 도메인 정보가 있다면, DNS 서버에 쿼리를 보내지 않고 캐시에서 정보를 반환한다.
그렇다면 정말 hosts파일이 우선순위를 가지는지 테스트를 해보자. 어떻게?
3. Google 테스트
바로 Google 테스트를 통해서!!
필자의 논리상 테스트는 간단하다. google.com이라는 도메인을 127.0.0.1로 설정하는 것이다. DNS서버가 우선이라면 평소 우리가 보는 구글 사이트가 나올 것이고, hosts 파일이 우선이라면 필자가 만든 웹 사이트가 나올 것이다.
참고: 필자는 뭣도 모르고 했지만 GPT한테 물어보니 네트워크 문제가 생길수도 있다고 테스트 도메인을 사용하라고 한다.. 하지만 필자는 해버렸기에...
위와 같이 포트만 붙여주면 hosts 파일에서 설정한 곳으로 접속이 되는 것을 확인할 수 있다. 그러므로 hosts 파일이 더 우선!
(추가) 명령어로 테스트
도메인의 ip를 찾기 위해 nslookup 명령어를 자주 사용할 것이다. 이 때 주의할 점이 있다. nslookup은 도메인 서버에 등록된 ip주소를 가져오기 때문에 위처럼 hosts 파일에서 설정했다고 nslookup 명령어를 했을 때 설정한 ip가 나오지 않는다!!!
hosts 파일에서 설정한대로 통신이 잘 되고 있는지 확인하려면 아래와 같이 ping 명령어를 사용해서 테스트 해보면 된다!!
이번 내용은 GPT와 함께 머리를 맞대어 작성한 글입니다. 혹시 틀린 부분이 있다면 말씀해주시면 감사하겠습니다. 이제 저는 다시 화를 참는 능력을 키우고 돌아오겠습니다. Thank you.
'인프라' 카테고리의 다른 글
리눅스 user 생성 및 UID, GID 설정 (0) | 2025.03.14 |
---|---|
맥북 m2 가상머신(UTM) 설치(실패부터 성공까지..) (0) | 2025.03.10 |
Linux 기본 명령어 last, lastlog (2) | 2024.11.25 |
Linux 기본 명령어 df, du (0) | 2024.11.24 |
쉘 스크립트 기초문법1 (0) | 2024.11.20 |