0부터 시작하는 Linux 공부 - DHCP

Jaehong Lee·2022년 7월 25일
1
post-thumbnail

1. DHCP 란

p. 709

  • Dynamic Host Configuration ( Control ) Protocol 로 DHCP 서버는 자신의 네트워크에 속한 클라이언트 컴퓨터가 부팅될때 자동으로 Ip 주소, 서브넷 마스크, 게이트 웨이 주소, DNS 서버 주소 를 할당해준다
  • UDP Protocol 을 사용하며, 클라이언트와 서버가 사용하는 포트 번호가 다르다. 클라이언트는 68 번 , 서버는 67 번 을 사용한다

2. DHCP 동작 과정

참조 : https://jinheeahn.wordpress.com/2015/06/04/dhcp-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/

  1. 컴퓨터가 전원이 켜지면, 자신의 Ip 구성 방식을 확인한다

    • 만약 정적 구성이라면, 해당 주소를 자신의 NIC 에 할당하고, Gratuitous ARP ( 동일 Ip 확인을 위한 Protocol ) 를 발생시킨다
  2. 동적 구성이라면, 자동으로 Ip 주소 요청 ( Discover Message ) 을 브로드 캐스트로 한다. 이때 OFFER 를 받을 방식을 유니캐스트로 할 지, 브로드캐스트로 할 지 미리 FLAG를 설정해서 보낸다 ( 목적지 : 255.255.255.255, 출발지 : 0.0.0.0 )

    • FLAG : 0x8000 ( 1 ) = 브로드캐스트
    • FLAG : 0x0000 ( 0 ) = 유니캐스트
  3. DHCP 서버는 자신의 DHCP Bind Table ( 어떤 MAC 이 어떤 Ip 주소를 언제까지 사용할 수 있는지 ( expired timed ) 가 기록된 Table ) 을 참조하여, 사용하지 않는 주소를 DHCP pool 에서 꺼내어, OFFER 를 유니캐스트 OR 브로드캐스트로 보내준다

    • 유니캐스트를 사용할 경우, PC에 MAC 주소는 가본적으로 할당되어있으므로, 이 MAC 주소를 목적지로 DHCP SERVER에서 메시지를 보낸다
  4. OFFER 를 받은 PC 는 해당 주소가 다른 PC 가 사용하고 있는지 Gratuitous ARP를 통해 확인하고, 해당 주소를 사용하는 장비가 없다면, OFFER 에 대하여 서버에게 REQUEST 를 전달한다 ( 브로드캐스트 )

    • Discover 메시지와 동일하게 ACK를 유니캐스트로 받을 지, 브로드캐스트로 받을 지 FLAG를 설정해서 보낸다
    • REQUEST를 통해 DHCP 서버의 IP주소와 MAC주소를 아는데, 왜 유니캐스트가 아니라 브로드캐스트로 보낼까? 같은 네트워크 대역에 다른 DHCP 서버가 있다면, PC가 어떤 IP 주소를 사용하는지 모두 알아야 한다. 따라서 브로드캐스트를 통해 모든 DHCP 서버에게 알려야 한다
  5. 서버는 최종적으로 해당 주소에 대한 Bind Table 를 작성하고, DHCP ACK를 브로드캐스트 OR 유니캐스트로 PC에게 보낸다

    • REQUEST 이후에 DHCP는 PC의 IP 주소와 MAC 주소를 아는데, 왜 굳이 PC에게 ACK 메시지를 브로드캐스트로 보낼 수 있게 했을까? IP 주소를 제대로 받기 전에는 유니캐스트된 IP 데이터그램을 받을 수 없도록 구현되있기 때문이다
    • PC는 ACK를 받으면, 할당 받은 IP 주소를 자신의 IP 주소로 설정한다
  6. PC 가 전원을 종료하면 Ip 주소를 반납한다

  • default-lease : 해당 시간이 되면 PC 가 동작중인지 여부를 확인한다. PC 로 부터 응답이 돌아오면, 임대기간을 갱신하여 계속 사용할 수 있도록 해준다. 만약, 1일로 설정하면, 1일 후에 여부를 확인해서, 만약 해당 PC가 사용하고 있다면, 임대 기간을 연장 시켜 준다

  • max-lease : 최대 임대 기간으로, defualt-lease 가 설정한 기간 마다, pc 의 lease 기간이 업데이트 되어도, max-lease 기간에 도달하면, 무조건 Ip 를 회수한다

DHCP 통신에서 브로드캐스팅을 할 때, IP 주소도 모르고, MAC 주소도 모르는데 어떻게 목적지를 구분할까?

  • DHCP CLIENT는 UDP 68 PORT, DHCP SERVER는 UDP 67 PORT를 사용한다. 따라서 DHCP 통신에서 브로드캐스팅을 할 때, 목적지 IP 주소와 목적지 MAC 주소를 몰라도, 목적지 PORT를 통해 자신이 목적지인지 아닌지 판단한다

3. DNS & WEB & DHCP 구현하기

  • CentOS 8 : DNS 서버 이면서, WEB 서버 이면서, DHCP 서버 이다 ( 211.183.3.8 )
  • CentOS 7 : 일반 PC - VMnet10 ( DHCP 를 사용하여 211.183.3.201~239 할당 )
    • CentOS 8 : DNS 캐시 네임 서버 이면서 마스터 네임 서버. 관리하는 도메인 주소가 test.pri 이다
    • 웹 서버 : www.test.pri
    • DHCP 서버 : 211.183.3.201~239 를 할당해준다
    • DNS 주소로는 211.183.3.8 로 사용
    • 웹 서버의 내용은 자유롭게 한다

  • CentOS 7 을 VMnet 10 으로 변경해준다
  • DHCP 를 직접 구현할 것 이므로, VMware 에서 제공하는 DHCP 기능을 비활성화 해주자
  • CentOS 8 의 이름을 바꿔주자
  • CentOS 8 을 Run level 3 으로 동작시키게 한다

작업 순서

  1. cli 를 이용하여, server 의 Ip 주소를 211.183.3.88 로 입력한다. 기본 게이트 웨이는 211.183.3.2 이며, DNS 주소는 향후 이 server 가 test.pri 에 대한 maaster 네임 서버로 동작할 계획임을 감안하여 등록한다
  2. server 가 웹 서버, DNS 서버, DHCP 서버 를 위하여 방화벽과 SELinux 는 편의상 비활성화 시킨다
  3. 웹 서비스 실행
  4. 캐시 네임 서버 와 마스터 네임 서버 ( test.pri ) 를 구성하되, 내부에 www 정보를 zone 파일에 등록한다. 단, 웹 서버는 자기 자신이다
  5. PC 들을 위한 DHCP 서비스를 구성하고, 활성화 시킨다
  6. PC 는 Ip 주소 입력에 대하여 DHCP 로 전환하고, 211.183.3.201 ~ 239 사이의 주소를 할당받아야 한다. 또한, firefox 를 실행한 뒤, 주소창에 www.test.pri 를 입력했을 경우, server 의 웹 페이지 내용이 보여야 한다. 또한, www.google.com 을 입력했을 경우에도 정상적으로 페이지가 보여야 한다

CentOS 8 네트워크 & 방화벽 설정

  • 네트워크 설정 파일을 편집기로 열어준다
  • CentOS 8 에 대한 주소 설정을 해준다. 스스로를 마스터 네임 서버로 사용해야 하기에 DNS1 은 자신의 Ip 주소로 등록한다. Ip 설정을 바꿨으므로, 재실행 해주자. DNS1 은 스스로가 네임 서버 이므로, 스스로를 먼저 확인하게 한다. 만약, 본인의 Zone File 에 요청된 주소가 없다면, 다음 DNS 인 8.8.8.8 을 확인하게 설정한다
  • 방화벽 및 SELinux 비활성화를 해주자
  • 비활성화 시켜줬다

WEB 서버 구현

  • httpd 를 실행시킨다
  • /var/www/html 에 index.html 을 추가해주자

DNS 구현하기 - 캐시 네임 서버 & 마스터 네임 서버

  • DNS 설정을 위해 다음 패키지를 설치하자
  • 네임 서버 구성 파일을 편집기로 열어주자
  • 다음과 같이 설정. 이제 캐시 네임 서버 설정이 끝났다
  • 마스터 네임 서버 설정을 위해 위 설정을 추가해주자
  • /var/named 디렉터리에 test.pri.db 를 만들고, 위 내용을 추가해주자
  • named 서비스를 재실행 해주자

DHCP 구현하기

  • 이제 DHCP 서버를 구현하자. 내용은 p.719 를 참조하자
  • DHCP 서버를 설치한다
  • DHCP 서버의 설정 파일을 생성하고, 편집기로 열여주자
  • 위와 같이 설정한다
    • ddns-update-style interim : 네임 서버의 동적 업데이트 옵션
    • subnet ~ : DHCP의 네트워크 주소 지정. 아래는 클라이언트에게 제공할 게이트웨이 주소, 서브넷 마스크, Ip 주소 범위, 도메인 주소, 임대 시간 이다

  • DHCP TABLE 파일 확인하자. 없으면 빈 파일을 생성해주자
  • dhcp-server 를 재실행 해주자

구현 결과

  • CentOS 7 의 네트워크는 다음과 같이 설정한다
  • 클라이언트에서 NetworkManager 를 재실행 하면 정상적으로 DHCP 서버에서 Ip 주소를 받아온다
  • 인터넷도 잘 실행된다
  • DNS 서버에 Query 를 잘 실행하는 것을 확인할 수 있다 - 캐시 네임 서버
  • 마스터 네임 서버에서 등록한 www.test.pri 도 잘 접속되며, WEB 서버 기능도 정상 실행 된다
  • 해당 Domain 에 대한 Ip 주소도 잘 확인된다
  • eth0 의 Ip 주소는 DHCP 를 통해 받았다는 것을 확인 가능 하다
profile
멋진 엔지니어가 될 때까지

0개의 댓글