CS/Linux

[Linux] IP 주소를 얻는 내부 흐름

kyoulho 2024. 10. 4. 13:24

리눅스에서 IP 주소를 얻는 내부 흐름

리눅스 시스템에서 호스트 이름을 IP 주소로 변환하는 과정은 여러 구성 파일과 설정에 의해 관리된다.

  1. 호스트 이름 해석 요청: 애플리케이션이 호스트 이름(www.example.com)을 통해 네트워크 연결을 시도한다.
  2. /etc/nsswitch.conf: 호스트 이름 해석 시 사용할 방법의 순서를 결정한다. 예를 들어, order hosts, bind라면 먼저 /etc/hosts 파일을 참조하고, 그 다음에 DNS를 조회한다.
  3. /etc/hosts 파일 조회: 지정된 순서에 따라 /etc/hosts 파일을 먼저 조회하여 호스트 이름과 매핑된 IP 주소를 찾는다. 만약 매핑 정보가 존재하면 해당 IP 주소를 반환하고, 과정이 종료된다.
  4. DNS 서버 조회: /etc/hosts 파일에서 매핑 정보를 찾지 못하면, /etc/resolv.conf 파일에 지정된 DNS 서버를 통해 호스트 이름을 해석한다. DNS 서버로부터 IP 주소를 받아 반환한다.
  5. 호스트 이름 해석 완료: 애플리케이션은 얻은 IP 주소를 사용하여 네트워크 연결을 완료한다.

/etc/host.conf

호스트 이름 해석에 사용되는 다양한 옵션을 설정하는 파일이다. 최신 리눅스 시스템에서는 /etc/nsswitch.conf 파일을 중심으로 호스트 이름 해석을 설정하고 관리하는 것이 권장됩니다. /etc/host.conf는 호환성을 위해 남아있을 수 있으나, 실제로는 /etc/nsswitch.conf의 설정이 우선적으로 적용된다.

주요 설정 항목

  • order: 호스트 이름 해석 시 사용할 순서를 지정
  • multi on/off: 여러 개의 IP 주소를 반환할지 여부
  • nospoof on/off: 스푸핑 공격을 방지하기 위해 설정하며, 무단으로 변경된 IP 주소를 무시

예시

# /etc/host.conf

# 호스트 이름 해석 순서 설정
order hosts, bind

# 여러 개의 IP 주소를 반환하지 않도록 설정
multi off

# 스푸핑 방지 설정
nospoof on

/etc/nsswitch.conf

네임 서비스 스위치(Name Service Switch) 설정 파일로, 시스템에서 다양한 네임 서비스(호스트, 패스워드, 그룹 등)를 조회할 때 사용할 소스와 순서를 정의한다. 이 파일은 호스트 이름 해석뿐만 아니라 다양한 서비스에 대한 조회 방식을 설정할 수 있어 더 유연하고 강력한 설정이 가능하다.

# /etc/nsswitch.conf

hosts:      files dns
passwd:     files
group:      files
shadow:     files

위 예시에서 hosts 항목은 먼저 files(즉, /etc/hosts 파일)을 조회하고, 그 다음에 dns를 조회하도록 설정한다. 이는 /etc/host.conf와 유사한 역할을 하지만, 좀 더 세밀한 제어가 가능하다.


/etc/hosts

호스트 이름과 IP 주소 간의 매핑 정보를 저장하는 로컬 파일이다. 이 파일은 네트워크 연결이 필요한 호스트 이름을 빠르게 해석할 수 있도록 도와주며, 작은 네트워크나 테스트 환경에서 주로 사용된다.

파일 구조

/etc/hosts 파일의 각 라인은 다음과 같은 형식으로 구성된다

IP주소    호스트이름    별칭들

예시

# /etc/hosts

127.0.0.1   localhost localhost.localdomain
192.168.1.10 server1.example.com server1
192.168.1.11 server2.example.com server2

주요 항목 설명

  • 127.0.0.1 localhost: 로컬 호스트를 나타내며, 자신의 시스템을 참조할 때 사용된다.
  • 192.168.1.10 server1.example.com server1: server1.example.comserver1이라는 호스트 이름이 192.168.1.10 IP 주소를 가리키도록 설정한다.
  • 192.168.1.11 server2.example.com server2: server2.example.comserver2192.168.1.11 IP 주소를 가리키도록 설정한다.


/etc/resolv.conf

DNS(Domain Name System) 서버의 정보를 저장하는 파일로, 호스트 이름 해석 시 DNS 조회를 위한 설정을 담고 있다. 이 파일은 네임 서버의 주소, 검색 도메인 등을 지정할 수 있다.

파일 구조

/etc/resolv.conf 파일의 각 라인은 다음과 같은 형식으로 구성된다:

옵션 옵션값
nameserver DNS서버_IP주소
search 도메인1 도메인2 ...

예시

# /etc/resolv.conf

# DNS 검색 도메인 설정
search example.com sub.example.com

# DNS 서버 설정
nameserver 8.8.8.8
nameserver 8.8.4.4

주요 항목 설명

  • search: 호스트 이름 해석 시 추가적으로 검색할 도메인을 지정한다. 예를 들어, search example.com이 설정되어 있으면 server1을 검색할 때 server1.example.com을 자동으로 시도한다.
  • nameserver: DNS 서버의 IP 주소를 지정한다. 여러 개의 DNS 서버를 지정할 수 있으며, 순서대로 시도된다.
  • options: DNS 조회에 사용할 추가적인 옵션을 설정한다. 예를 들어, timeout, attempts 등을 설정할 수 있다.
728x90

'CS > Linux' 카테고리의 다른 글

[Linux] NAT를 설정하는 방법  (0) 2024.10.05
[Linux] Firewalld vs Iptables  (0) 2024.10.05
[Linux] Xrdp 서버  (1) 2024.10.03
[Linux] GUI 방화벽 설정  (1) 2024.10.03
[Linux] OpenSSH  (1) 2024.10.03