Tuesday, April 17, 2018

CentOS 7.3 리눅스 네트워크 ] 6.1 DHCP 클라이언트 구성


안녕하세요. 썬구루입니다. 이 게시물에서는 CentOS 7.3 리눅스 환경에서 네트워크 환경에 꼭 필요한 DHCP 서비스와 DHCP 클라이언트 구성에 대해 알아보도록 하겠습니다.

우리가 지인들에게 물건, 서류, 편지를 전달하기 위해 직접 전달할 수도 있지만 거리가 떨어져 있다면 우편 서비스를 사용할 것입니다. 보내려는 내용물을 봉투 또는 상자에 넣어 포장을 하고 보내는 사람과 받는 사람의 정보를 입력하고 우체국이나 택배 서비스 이용하면 이것이 배송되어 받는 사람에게 전달되죠.

발/수신인 정보에 주소를 기입하는데 이전에는 지번 주소를, 요즘에는 도로명 주소를 사용하고 있습니다. 주소 체계(Address System)을 사용하고 있는 것이죠.

옛날 컴퓨터는 덩치가 크고(진공관 컴퓨터는 실제 집만 했었음) 일반인이 쉽게 접할 수 있는 시스템이 아니었습니다. 이것을 사용하기 위해 사람들은 사용 순서를 기다려야 했었죠. 요즘은 컴퓨터가 소형화되고 가격도 저렴해져 누구나 쉽게 컴퓨터를 접할 수가 있습니다. 회사만 가더라도 컴퓨터가 수 십, 수 백대가 있죠.

업무의 생산성을 높이기 위해 거리와 상관없이 서로의 정보를 공유하길 원했고 이를 위해 통신 네트워크가 만들어졌습니다. 정보를 담고 있는 파일을 네트워크를 통해 공유를 하기 위해서는 파일 송/수신이 필요한데 그러면 우편물처럼 어떠한 컴퓨터가 어떠한 컴퓨터에게 보낸다는 것을 적어서 보내야 할 것입니다. 이렇게 하려면 네트워크 상에 있는 컴퓨터들을 구분해야 하는데 이를 위해 컴퓨터 네트워크 주소 체계를 사용하는 것입니다.

지금 현재 컴퓨터 데이터 통신을 하기 위해 즉 네트워크 상에 있는 엄청나게 많은 시스템들을 구분하기 위해 사용되는 주소 체계는 IP 주소(IP Address)입니다. 여기서 IP 주소 체계를 다루려고 하는 것이 아닙니다. 단지 네트워크 망에 연결된 컴퓨터들을 구분 짓기 위해  주소 체계를 사용한다는 것을 말하려는 것이죠. 우리가 사용하는 IP 주소 체계는 Version 4입니다. 보통 IPv4라고 말고 32비트로 된 주소입니다. 이것은 컴퓨터에 하드웨어적으로 박는 주소가 아닌 소프트웨어적으로 변경 가능한 주소입니다. 그리고 IPv4 주소 개수의 한계로 오래전에 IPv6 (128비트)를 만들었는데 아직 IPv4를 사용하고 있습니다. 왜냐하면 NAT라는 신기술이 나와서 IP 주소 부족을 어느 정도 해결할 수 있었거든요.

사물인터넷(IOT) 기술이 확산되기 위해서는 더 많은 IP 주소가 필요한데 그때 되면 IPv4가 아닌 IPv6을 사용할 것입니다.

■ DHCP는?

DHCP는 Dynamic Host Configuration Protocol 즉 동적 호스트 구성 프로토콜의 약어입니다. 그리고 이것은 기업이나 기관에 할당되어 사용되는 IP 주소들(IP 주소 범위)을 편리하게 그리고 효율적으로 관리하기 위해 사용되는 통신 프로토콜 또는 서비스입니다.

예를 들어 기관(관공서)에 많은 사람들이 존재합니다. 그리고 그들은 수많은 컴퓨터를 가지고 업무를 보죠. 업무의 생산성을 높이기 위해 정보를 공유하고 활용합니다. 그렇게 하기 위해서 네트워크를 설치, 구성, 사용하는 것이죠.

기관 내 네트워크 상에 존재하는 수많은 컴퓨터들을 구분 짓기 위해 IP 주소를 사용합니다. 이를 위해  IP 주소를 운영체제 네트워크 설정에서 입력을 해야 하는 것이죠.


그런데 여기서 잠깐?

회사원 모두가 컴퓨터에 IP 주소를 설정하는 방법을 아느냐? IP 주소를 설정할 수 있는 사람은 많지 않습니다. 우리나라 사람들은 워낙 만지는 것을 좋아해서 그런 것은 쉽게 설정하지만 IP 주소를 설정하지 못하는 사람들이 의외로 많이 있습니다. 그들을 위해 IP 설정을 교육해도 듣는 사람이 있고 교육에 참여해서 그냥 앉아만 있는 사람들도 있는 것이죠. (머~엉)

만약 그들이 IP 주소 설정 시 엉뚱한 주소를 입력하면 다른 주소와 중복이 발생하고 통신 충돌이 나서 회사 내부 업무가 마비될 수 있습니다. 그래서 IP 주소 설정 오류를 막고 편리하게 IP 주소를 자동으로 할당, 관리하기 위해 만든 서비스가 DHCP입니다. 그리고 이 서비스를 위해 사용되는 통신 프로토콜이 DHCP입니다.

보통 우리는 DHCP 서비스, DHCP 서버, DHCP 클라이언트 이렇게 부르는 것이죠. DHCP 서버는 스위치, 라우터, 윈도우 서버, 리눅스/유닉스 서버 등에 구성이 가능합니다. 보통 PC(사무용, 가정용 등)들이 DHCP 클라이언트로 설정되고 서비스를 제공하는 서버들은 해당 기기 관리자에 의해 고정 IP 주소가 설정됩니다.


모든 운영체제는 DHCP 클라이언트로 구성될 수 있습니다. 우리가 사용하는 스마트폰도 Wi Fi 존에 들어가면 WiFi AP(Access Point / DHCP 서버)로부터 IP 주소를 받는 DHCP 클라이언트로 동작될 수 있습니다.

일단 이전에 리눅스 본딩(Linux Bonding) 구성 이전의 시점으로 VMware Workstation의 스냅샷(Snapshot) 기능을 사용하여 Revert를 합니다. 다시 말해 NIC가 한 개이고 Network Manager가 동작하던 시점으로 되돌립니다.

■ VMware Workstation 가상 네트워크 DHCP 서버 구성

VMware Workstation은 호스트 운영체제(윈도우7, 윈도우8 등)에 설치되는 PC 가상화 소프트웨어(Hosted 방식의 Hypervisor)입니다. 그리고 이 소프트웨어를 설치하면 가상 네트워크 기능을 지원하는데 설치 시 생성되는 VMnet8 가상 스위치(가상 네트워크)에 DHCP 서버가 자동으로 구성됩니다. 이를 잠깐 편집하여 자동 할당할 IP 주소 범위를 변경합니다.

※ 참조 : VMware Workstation 가상 네트워크 관리하기 [ 링크 ]
※ 참조 : VMware Workstation 가상머신 관리하기 #2 [ 링크 ]

VMware Workstation > Edit 메뉴 > Virtual Network Editor > Change Settings 버튼 > VMnet8  >  DHCP Settings

Starting IP address : 192.168.80.101
Ending IP address  : 192.168.80.120

OK 버튼 > OK 버튼


이렇게 하면 자동으로 할당될 IP 주소 범위는 192.168.80.101 ~ 192.168.80.120으로 설정됩니다.




■ CentOS 7.x  DHCP Client 구성

CentOS 7.x를 DHCP Client로 설정하는 방법은 아래와 같습니다.

  ▶ Network Manager GUI Tool
  ▶ NIC 구성 파일 수동 변경 후 적용
  ▶ dhclient 명령

1). Network Manager GUI Tool

GUI 툴을 사용하여 DHCP Client 구성하는 가장 간단한 방법입니다. 이를 사용하기 위해 Network Manager 서비스가 동작하고 있어야 합니다.

[root@centos701 ~]# systemctl status NetworkManager

● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since 목 2017-02-02 12:56:14 KST; 12min ago
     Docs: man:NetworkManager(8)
 Main PID: 804 (NetworkManager)
   CGroup: /system.slice/NetworkManager.service
           └─804 /usr/sbin/NetworkManager --no-daemon

Hint: Some lines were ellipsized, use -l to show in full.
[root@centos701 ~]# 

서비스가 실행되고 있다면 아래와 같은 명령 또는 X윈도우(Gnome 데스크톱) 상단 패널(Panel)에 있는 네트워크 아이콘을 클릭하여 GUI 툴을 실행합니다.

[root@centos701 ~]# gnome-control-center network


그러면 아래와 같은 GUI 툴이 실행됩니다.


우측 하단에 톱니 모양의 설정을 선택하여 아래와 같은 화면이 나타나면 DHCP Client로 구성한 후 설정을 저장하고 Network Manager GUI를 종료합니다.


아래와 같은 명령을 실행하여 변경 사항을 적용합니다.

[root@centos701 ~]# ifconfig eth0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.80.10  netmask 255.255.255.0  broadcast 192.168.80.255
        inet6 fe80::20c:29ff:fe27:3f5  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:27:03:f5  txqueuelen 1000  (Ethernet)
        RX packets 204  bytes 24805 (24.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 192  bytes 18100 (17.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@centos701 ~]# systemctl restart network
[root@centos701 ~]#
[root@centos701 ~]# ifconfig eth0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.80.101  netmask 255.255.255.0  broadcast 192.168.80.255
        inet6 fe80::20c:29ff:fe27:3f5  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:27:03:f5  txqueuelen 1000  (Ethernet)
        RX packets 227  bytes 28511 (27.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 220  bytes 22252 (21.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@centos701 ~]# 

자동으로 할당받는 IP 주소는 192.168.80.101 ~ 192.168.80.120 중 하나입니다.




2). NIC 구성파일

리눅스에 익숙하지 않으시는 분들은 개인적으로 VI 편집기를 사용하여 NIC에 관련된 구성 파일을 편집하는 것을 권하지 않습니다. 해서 NIC 관련 구성 파일 중 DHCP Client로 설정하기 위해 사용되는 구성 값만 보여 드리겠습니다. (NIC 구성 파일 고급 설명은 올해 초에 게시글을 올릴 예정입니다. ) 그리고 NIC 구성 파일들은 /etc/sysconfig/network-scripts 디렉터리에 존재합니다.

아래는 수동으로 IP 주소를 설정했을 때 NIC 구성 파일의 내용입니다.

[root@centos701 ~]# more /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE="Ethernet"
BOOTPROTO=none
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT=no
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="7d4438fe-2448-49cd-a24f-66f0f00388d6"
DEVICE="eth0"
ONBOOT="yes"
IPADDR=192.168.80.10
PREFIX=24
GATEWAY=192.168.80.2
DNS1=168.126.63.1

[root@centos701 ~]# 

아래는 DHCP Client 구성 후 NIC 구성 파일의 내용입니다. 만약 VI 편집기를 사용하여 수동으로 변경하려면  위 표의 내용 중 빨간색 부분을 삭제하고 아래 표 내용 중 초록색 부분을 추가한 후 network 서비스를 재시작하면 됩니다.

[root@centos701 ~]# more /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE="Ethernet"
BOOTPROTO=dhcp
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT=no
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="7d4438fe-2448-49cd-a24f-66f0f00388d6"
DEVICE="eth0"
ONBOOT="yes"
PEERDNS=yes
PEERROUTES=yes

[root@centos701 ~]# 

3). dhclient 명령을 이용한 IP 주소 받기

dhclient라는 명령을 사용하여 IP 주소 해제 또는 갱신을 할 수 있습니다.. 이것은 윈도우 운영체제에서 ipconfig 명령을 실행하여 자동 할당받은 IP 주소를 해제하고 갱신하는 것과 유사합니다. 여기서 -4는 IPv4를 뜻합니다.

운영체제
IP 주소 해제
IP 주소 갱신
윈도우
 CMD> ipconfig /release
 CMD> ipconfig /renew
리눅스
 # dhclient -r eth0
 # dhclient eth0

아래는 DHCP 서버로부터 자동 할당받은 IP 주소를 해제(반환)하고 새로 갱신하는 예를 보여줍니다.

 # tcpdump port 67 or port 68 -e -n

[root@centos701 ~]# dhclient -4 -r eth0
[root@centos701 ~]#
[root@centos701 ~]# ifconfig eth0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::20c:29ff:fe27:3f5  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:27:03:f5  txqueuelen 1000  (Ethernet)
        RX packets 104  bytes 18844 (18.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 135  bytes 17042 (16.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@centos701 ~]# dhclient -4 eth0
[root@centos701 ~]#
[root@centos701 ~]# ifconfig eth0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.80.102  netmask 255.255.255.0  broadcast 192.168.80.255
        inet6 fe80::20c:29ff:fe27:3f5  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:27:03:f5  txqueuelen 1000  (Ethernet)
        RX packets 108  bytes 19652 (19.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 149  bytes 20591 (20.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@centos701 ~]#

여기까지 DHCP Client 구성하는 방법에 대해 알아보았습니다. 쉽게 변경하기 위해 Network Manager GUI 툴을 사용하여 변경하는 것을 권해드리고 싶네요. ^^

다음 게시물에서 CentOS 7.3을 가지고 DHCP 서버를 구성하는 방법에 대해 알아보도록 하겠습니다.






No comments:

Post a Comment