DHCP 서버 설정을 해보자
이론
네트워크 설정 방법

실습
서버 설정 실습
# 서버의 호스트 네임 변경
$ hostnamectl set-hostname dhcp
# 사용자 변경
$ su
# 프로세스 강제 종료
# kill -9 {PID}
# 해당 PID를 갖고 있는 프로세스를 강제종료.
# 가끔 yum을 했을때 다른 프로세스가 점유하고 있어서 안되는 경우가 있다.
# 이때 해당 프로세스의 pid를 확인하여 kill -9 옵션으로 해당 프로세스를 죽일 수 있다.
$ kill -9 16244
네트워크 설정 실습
# 네트워크 설정 파일 확인
$ vi /etc/sysconfig/network-scripts/ifcfg-ens32

주로 확인해야하는 부분.
BOOTPROTO=dhcp
#ip를 자동으로 받아오겠다
IPADDR=
PREFIX=
GATEWAY=
DNS1=
dhcp로 IP를 받아오고 싶으면 이 4가지 설정이 주석처리(맨앞에 #)가 되어야함.

BOOTPROTO=static
BOOTPROTO=none
#수동으로 IP를 설정하겠다.

IPADDR=
PREFIX=
GATEWAY=
DNS1=
#위 설정이 잘 되어있어야함.
DHCP 서버 실습1
DHCP 서버는 UDP port udp 67(server), 68(client)을 사용한다.
# 편의상 IP를 67로 변경한다.
$ vi /etc/sysconfig/network-scripts/ifcfg-eth32
IDADDR="211.183.3.67"
PREFIX="24"
GATEWAY="211.183.3.2"
# dhcp 설정파일 수정 방법
$ vi /etc/dhcp/dhcpd.conf
# 사용 예제
# 원본
$ vi /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
subnet 10.5.5.0 netmask 255.255.255.224 {
range 10.5.5.26 10.5.5.30;
option domain-name-servers ns1.internal.example.org;
option domain-name "internal.example.org";
option routers 10.5.5.1;
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;
}
# 수정
subnet 211.183.3.0 netmask 255.255.255.0 {
range 211.183.3.200 211.183.3.240
option domain-name-servers 8.8.8.8;
option routers 211.183.3.2;
default-lease-time 6000;
max-lease-time 30000;
}
# range : 할당할 IP 범위
# option domain-name-servers : DNS 서버
# option routers : GW
# default-lease-time : IP의 유효기간.
# max-lease-time : 할당 가능한 최대 시간.
$ systemctl start dhcpd
$ systemctl status dhcpd
# 서버 설정을 잘 했다면, 클라이언트가 DHCP서버로부터 아이피를 잘 받아오는 확인해보면된다.
# 새롭게 client를 만들고 Ethernet 똑딱이를 켰을때 아이피를 잘 받아올것이다.
DHCP 서버 실습2
1. 새로운 newdhcp라는 호스트네임을 갖는 VM을 생성한다.
- 2 core 2GB 20GB, IP: 192.168.3.67 /24
2. client라는 이름을 갖는 VM을 하나 생성한다.
- 2core 2GB 20GB, IP: DHCP로 부여받음.
되도록이면 68을 받도록!
GNS

Router 설정
0. IP 할당
<R1>
R1#en
R1#conf t
R1(config)#int f0/1
R1(config-if)#ip add 211.183.3.190 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int f0/0
R1(config-if)#ip add 192.168.3.2 255.255.255.0
R1(config-if)#no sh
1. NAT 설정
R1(config-if)#access-list 1 permit 192.168.3.0 0.0.0.255
R1(config)#int f0/0
R1(config-if)#ip nat inside
R1(config-if)#int f0/1
R1(config-if)#ip nat outside
R1(config-if)#ip nat inside source list 1 int f0/1 overload
ACL 설정을 해준다. = access-list <리스트번호> <허용(permit) / 차단(deny)> <ip> <wildcard 마스크>
안과 밖의 port로 들어가서 NAT 설정을 해준다.
ip nat inside source list 1 int f0/1 overload
2. 정적 라우팅
R1(config)#ip route 0.0.0.0 0.0.0.0 211.183.3.2
R1(config)#do ping 8.8.8.8
.!!!!
R1(config)#do ping 192.168.3.67
!!!!!
R1(config)#do ping 192.168.3.2
!!!!!
정적 라우팅 설정을 해준다. = ip route 0.0.0.0 0.0.0.0 211.183.3.2
즉, 인터넷으로 연결되는 통로를 연결해준다.
ping으로 자신의 ip, 연결된 ip, dns 서버 ip와 통신이 되는 것을 확인했다.
3. VM dhcpclient에서ping 확인 (vmware workstation)
$ systemctl restart network
$ ping 8.8.8.8
4. dhcp 패키지 다운로드 및 설정
$ yum -y install dhcp
1) Web server (port 80)
2) DHCP server (port 67)
VMnet8 외부 통신 설정 실습
윈도우 방화벽을 끄고 실습하기.

라우터에 vmnet8 대역의 주소를 부여하면 vmnet8에 존재하는 VM들과 통신이 가능하다.
<R1>
# 수신 확인
R1(config-if)# do ping 211.183.3.67
.!!!!
# 리눅스 서버에서 수신 패킷을 확인할 수 있는 명령어 = tcpdump
# 패키지 설치
$ yum -y install tcpdump
# 출발지 2111.183.3.190 에서 출발해서
# 내 서버의 ens32라는 인터페이스로 수신되는 패킷을 모니터링(fore-ground)
$ tcpdump -i ens32 src 211.183.3.190
<R1이 외부로 통신 가능하게 하는법>

R2는 그냥 개념적인 애.
R1이 통신이 되려면 211.183.3.0/24 대역의 IP를 부여해야하고, 라우팅(GW)이 되어있어야 한다.
R1(config)#int f0/1
R1(config-if)#ip add 211.183.3.100 255.255.255.0
R1(config-if)#no sh
# 내부 네트워크와 통신
R1(config-if)#do ping 211.183.3.2
.!!!!
# 외부와 통신
R1(config-if)#do ping 8.8.8.8
.....
# 같은 네트워크에 있는 다른 호스트와는 통신이 되지만, 외부로는 통신이 안되는 상태
# 라우팅이 안되어있기 때문.
# 정적라우팅
R1(config-if)#ip route 0.0.0.0 0.0.0.0 211.183.3.2
R1(config)#do ping 8.8.8.8
!!!!!
<R3이 외부로 통신 가능하게 하는법>

# R3 기본 설정
R3(config)#int f0/0
R3(config-if)#ip add 192.168.100.100 255.255.255.0
R3(config-if)#no sh
# R1 기본 설정
R1(config)#int f0/1
R1(config-if)#ip add 192.168.100.100 255.255.255.0
R1(config-if)#no sh
# R3와 R1이 통신이 되는 것을 확인
R3(config-if)#do ping 192.168.100.200
# 목표 = R3가 외부와 통신이 되면 좋겠다
# 정적라우팅(디폴트 라우팅, PC나 서버의 입장에선 default GW를 설정해주는것과 동일한 효과)
R3(config-if)#ip route 0.0.0.0 0.0.0.0 192.168.100.200
사실, 192.168.100.0 /24 대역은 vmnet과 마찬가지로 존재하지 않는 가상의 네트워크 공간이기때문에 굳이 R1에서 NAT(PAT)가 필요하진 않다. 하지만 VMnet8을 현실 공인 아이피 대역으로 가정한다면 NAT(PAT)가 필요하다. 만약 211.183.3.0 /24 대역이 브릿지 대역이고, 실제로 존재하는 현실 네트워크라면 NAT가 반드시 필요하다.
지금은 192.168.100.0 /24가 내부, 211.183.3.0 /24가 외부라고 가정하자.

# 처음 상태를 만들기 위해 정적 라우팅 삭제
R3(config)# no ip route 0.0.0.0 0.0.0.0 192.168.100.200
# NAT 설정
R1(config)#access-list 1 per 192.168.100.0 0.0.0.255
R1(config)#int f0/0
R1(config-if)#ip nat in
R1(config-if)#int f0/1
R1(config-if)#ip nat out
R1(config-if)#ip nat inside source list 1 int f0/1 over
# R3에서 정적라우팅을 해주면 통신이 잘된다
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.100.200
R3(config)#do ping 8.8.8.8
.!!!!
# R1에서 NAT이 되는지 확인
R1(config)#do sh ip nat tran
<토폴로지를 변경해서 확인>

newdhcp로 접속

xshell에서 vmnet3에 존재하는 192.168.3.67 주소에 접속이 가능한 이유는 host-connection 때문이다.
IPADDR="192.168.3.67"
PREFIX="24"
GATEWAY="192.168.3.200"
# newdhcp 서버의 IP 설정은 위와 같아야 한다. 특히 GW주소가 GNS3 R1의 f0/0 이여야 한다.

# R1에 현재 source가 192.168.100.0 /24이기 때문에 액세스리스트를 삭제하고 다시 설정
R1(config)#access-list 1 per 192.168.3.0 0.0.0.255
# 인터페이스의 주소도 192.168.3.0/24 대역으로 변경해준다.
R1(config)#int f0/0
R1(config-if)#ip add 192.168.3.200 255.255.255.0
# dhcp-server(newdhcp)
# 외부 통신 확인
$ ping 192.168.3.200
# newdhcp에서 dhcp 패키지를 설치하고 설정한다.
$ yum -y install dhcp