DHCP
Dynamic Host Configuration Protocol
DHCP (Dynamic Host Configuration Protocol)
BOOTP*의 정적 주소할당의 문제점을 해결하고 동적 주소할당 방식을 지원하기 위해 개발됨
Pool (IP주소 공용 구역)을 사용함 → pool을 기반으로 Mapping Table을 동적으로 생성함
UDP port 67(Server), UDP port 68(Client)
DHCP는 윈도우 기준 ALL Broadcast
라우터는 Unicast
* RARP → BOOTP → DHCP
ARP: 상대방의 MAC 주소 알아오기
RARP (Reverse ARP): 역으로 내주소를 보내기?
통신할 수 있는 값: IP 주소, Subnetmask, Gateway, DNS
DHCP 주소 할당 방식
정적 할당
BOOTP와 동일하게 한 장비에게 특정 IP주소를 미리 배당함
Router, Server 등 고정된 IP주소를 사용하는 시스템
동적 할당
제한된 시간 동안 정보를 임대하는 방식 → 임대 시간(Lease Time)
자동화, 중앙 집중 관리, 주소 재사용과 공유, 충돌 방지 등의 기능을 제공함
자동 할당
제한 시간이 무한대로 지정되는 동적 할당
정적 할당과 동일하지만 관리적 장점을 가짐
Pool (Address Pool)
DHCP 서버가 할당 할 수 있는 주소의 집합
동적 주소할당을 위해 사용하는 모든 주소의 목록
IP주소 외 클라이언트 동작에 필요한 기타 정보들도 같이 정의됨
클라이언트의 수, 안정성 및 주소 사용 빈도수 등을 고려해야 함
주소 범위(Scope)
DHCP 서버에서 Pool에 구성된 IP주소 집합 중 실제 동적 할당에 사용될 수 있는 IP주소
네트워크 장비 및 서버를 위한 IP주소(관리용 IP주소)를 동적 할당 범위에서 제외함 → x.x.x.1 ~ x.x.x.19
주소 범위를 설정할 때 1~19를 제외한 범위로 pool을 구성함
x.x.x.0/24로 pool을 구성하고 관리용 IP주소를 예약 설정 함
DHCP 임대 관리
임대 시간
DHCP 서버에게 할당 받은 IP주소의 Life Time
서버 S/W마다 기본값이 다르며 회사의 정책이나 네트워크 환경에 따라 구성해야 함
클라이언트의 임대 관리 주기
주소 바인딩 → 갱신 → 리 바인딩 → 해제
타이머를 통해 임대 상황에 맞는 단계를 진행함
주소 바인딩
시스템에서 DHCP 서버로 부터 획득한 IP주소(정보)를 실제로 사용하는 단계
갱신 (renewal)
할당 받은 서버에게 임대시간 연장을 요청하는 단계
임대 시간의 50% → Renewal Timer (T1)
갱신이 완료되면 임대 시간을 재 할당 받음
리 바인딩 (rebinding)
갱신 단계가 실패한 경우 모든 DHCP 서버에게 IP주소 재할당을 요청하는 단계
임대 시간의 87.5% → Rebinding Timer (T2)
리 바인딩이 완료되면 임대 시간을 재할당 받음
해제
할당 받은 정보의 임대기간이 종료된 단계
리 바인딩 실패, 클라이언트의 강제 해제(release)
클라이언트의 임대주기는 윈도우 기준으로 50% - 87.5%로 기다린다
만약에 임대기간은 8日
3월 1일부터 임대하면 만료는 8일이다
8의 절반인 4일에 서버에게 갱신요청을 하면 임대 시간을 재할당 받는다. 그러면 4일을 기준으로 8일 뒤에 만료됨
4일과 12일(4+8)의 50%인 8일에 서버에게 갱신요청하면 임대시간을 갱신날로부터 +8일 재할당을 받는다
갱신이 실패되었다면 임대기간의 50%까지 기다렸다가 갱신 실패인 경우 리바인딩. 리바인딩 완료되면 임대시간 재할당을 받음
DHCP 메시지 (DORA)
클라이언트와 서버는 지정된 의미의 메시지를 주고 받아서 DHCP 동작을 진행함
초기 IP 할당 과정에서 사용되는 메시지
DHCP Discover
DHCP Offer
DHCP Request
DHCP Ack
IP를 달라고 할 때 Broadcast로 한다 그래서 ALL 255로 하고 Discover
DHCP 서버에서 2계층이 확인해보니 ALL 255 - 3계층 확인 ALL 255 - 4계층으로 올림 (디캡슐)
인캡슐
4계층의 UDP가 출발지 Port 68 / 목적지 Port 67
3계층 출발지 0.0.0.0 / 목적지 255.255.255.255
2계층에서 FF16개?
1계층 전기신호로 변환 후 Broadcast? - Offer
DHCP Client에선
디캡슐하고 포트 확인함
한 IP주소를 사용하겠다고 응답 Request
DHCP Server에서
쓰라고 답장줌 Ack
굳이 4번을 거쳐서 하는 이유는 수동으로 IP 주소를 꽂아서 쓰는 경우엔 충돌날 수 있기 때문이다
DHCP 대체 IP 설정 (APIPA)
DHCP 대체 IP 주소
DHCP에 의한 IP 할당이 실패한 경우 클라이언트에서 지정된 IP주소를 자동으로 구성함
IP주소 할당이 실패한 경우에도 내부 통신을 지원하기 위해 사용됨
표준에서 제안하고 있으나 상세 동작 방식이 지정되지 않음
Microsoft에서 제안한 방식이 산업표준이 됨
표준 대체 IP 주소 대역
169.254.0.0/16 → 169.254.0.1 ~ 169.254.255.254
↳ MS의 사설 주소
APIPA (Auto Private IP Assigned)
MS에서 구현한 자동 사설 IP 주소 지정 방식
OS에 지정된 네트워크 대역 중에서 하나의 IP주소를 선택함
ARP Request를 이용하여 해당 IP주소가 사용중인 확인함
ARP Reply가 없으면 선택한 IP주소를 클라이언트에 Binding하여 내부 통신을 지원함
주기적으로 DHCP Discover 메시지를 전달하여 IP주소 할당을 시도
ARP 프로토콜 형식에
S.IP: 169.254.1.1
D.IP: 169.254.1.1
정상적인 ARP의 경우엔 출발지 IP 주소와 목적지 IP를 다르게 하지만
이렇게 내가 쓸 IP를 목적지 IP로 해서 Broadcast 후 응답이 없으면 169.254.1.1 IP 주소를 할당한다
만약에 응답이 온다면 이미 사용하고 있으므로 다른 IP 주소를 설정한다
이를 주관하는 프로토콜이 APIPA라는 프로토콜이다.
DHCP 서버 설정 - Linux
DHCP 서버 패키지 설치
# dnf –y install dhcp-server
DHCP 환경설정
# vi /etc/dhcp/dhcpd.conf
Subnet 10.0.0.0 netmask 255.0.0.0 {
range dynamic-bootp 10.x.160.11 10.x.160.20; → 범위설정 x에는 나의 대역을 준다
option routers 10.0.0.1; → Gateway 게이트웨이
option subnet-mask 255.0.0.0; → 서브넷마스크
option domain-name-servers 8.8.8.8; → DNS 서버 1.1.1.1도 가능하다
default-lease-time 10000;
max-lease-time 50000;
}
서비스 재시작
# systemctl restart dhcpd
💡DHCP 할당
🐧Linux_3 10.130.30.3
DHCP 서버 패키지 설치
[root@localhost ~]# dnf -y install dhcp-server
DHCP 환경설정
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
Subnet 10.0.0.0 netmask 255.0.0.0 {
range dynamic-bootp 10.130.160.11 10.130.160.20; → 범위설정 x에는 나의 대역을 준다
option routers 10.0.0.1; → Gateway 게이트웨이
option subnet-mask 255.0.0.0; → 서브넷마스크
option domain-name-servers 8.8.8.8; → DNS 서버 1.1.1.1도 가능하다
default-lease-time 10000;
max-lease-time 50000;
}
서비스 재시작
[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]#
리눅스와 win10은 VMnet 1번으로 변경 후
🪟win10
DHCP로부터 IP를 할당받아야 하므로 자동으로 IP 주소 받기
DNS 서버에 리눅스_3의 IP주소를 넣는다
#ipconfig /all
DHCP 서버로 부터 받은 IP 주소
💡DHCP 정적 할당
Search Keyword: rocky 9.0 DHCP 서버 정적 할당
정적 할당: 특정 시스템은 항상 같은 IP 주소를 할당 받도록 하는 설정
🐧Linux_3
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
하단에 추가
host client01 { → 별칭
hardware ethernet 00:0C:29:C9:4A:64; → Client MAC 주소 (>ipconfig /all로 확인한다)
fixed-address 10.130.160.20; → Client에 할당할 IP 주소
}
아까 #systemctl restart dhcpd 오류났던 이유는
맥주소에 00-0C 이렇게 - Hypen으로 줬기 때문이다. : Colon으로 줄 것
[root@localhost ~]# systemctl restart dhcpd → 데몬 재구동
🪟Client win 10
C:\Users\admin>ipconfig /release → 통신할 수 있는 값 반납
Windows IP 구성
이더넷 어댑터 Ethernet0:
연결별 DNS 접미사. . . . :
링크-로컬 IPv6 주소 . . . . : fe80::fc9:531b:2888:f352%6
C:\Users\admin>ipconfig /renew → 통신할 수 있는 값 갱신
Windows IP 구성
이더넷 어댑터 Ethernet0:
연결별 DNS 접미사. . . . :
링크-로컬 IPv6 주소 . . . . : fe80::fc9:531b:2888:f352%6
IPv4 주소 . . . . . . . . . : 10.130.160.20 → Linux에서 Client에 할당할 IP 주소를 설정해줬으므로 고정되어 나옴
서브넷 마스크 . . . . . . . : 255.0.0.0
기본 게이트웨이 . . . . . . : 10.0.0.1
#
FTP
File Transfer Protocol
FTP (File Transfer Protocol)
FTP(File Transfer Protocol)
파일 공유를 목적으로 개발됨
네트워크 상에서 파일을 전송하기 위한 TCP 기반의 프로토콜
1971년에 최초로 공개
파일 전송 시 데이터의 손실을 피하기 위해 TCP를 통해 전송됨
사용자 인증과 명령 전달을 위한 제어 연결과 파일 전송을 위한 DATA 연결이 분리되어 있음
FTP는 통로를 두 개 open: 제어 연결 1개, DATA 연결 1개
제어 연결용 Port : TCP 21번 , Data 전송용 Port : TCP 20번 or Random Port
익명(anonymous) FTP
계정(ID/Password)이 없는 사용자가 서버 자원에 한정된 접근을 할 수 있는 권한을 제공
일반적으로 공유해야 하는 정보 공유 시 사용됨
고객 지원, 파일 배포 등의 위한 목적으로 사용
FTP 서버 구성 - Linux (vsFTP)
FTP Server 프로그램 종류
알 FTP, CuteFTP, gFTP, ncFTP, vsFTP, proFTP ...
vsFTP
Cris Evans에 의해 개발된 GPL 기반의 FTP 서버
매우 안정적이면서 빠른 속도와 강력한 보안기능 제공
Senario I
FTP
익명 FTP 서버의 기본 홈디렉토리는 일반적으로 /var/ftp/pub 디렉토리
익명 FTP 서버 구성 후
# cd /var/ftp/pub
# cp /root/anaconda-ks.cfg . → root아래에 있는 아나콘다 파일을 .(현재) 디렉토리에 CoPy
# touch abcd
최종 테스트
🪟win 10에서 알FTP 프로그램을 이용해서 다운로드 가능한지 확인
Senario II
Anonymous FTP 서버 → Upload 가능하도록 구성
💡실습
vsftpd 서버 패키지 설치
# dnf –y install vsftpd
환경설정 파일
# vi /etc/vsftpd/vsftpd.conf
12행
anonymous_enable=YES → NO를 YES로 변경 후 저장
↳ /anonymous_enable 검색해서 찾은 후에 변경 후 저장
서비스 재시작
# systemctl restart vsftpd
FTP Client 구성
Linux FTP Client 설치
[root@localhost ~]# dnf -y install ftp
FTP 명령어
명령어 | 설명 |
bin | Binary mode 로 변경 |
hash | 다운로드 진행현황을 #으로 표시 |
prompt | Interactive mode on/off (대화모드) |
lcd [디렉토리] | local 컴퓨터의 현재 디렉토리 이동 |
! [명령어] | local 명령어 실행 |
put [파일명] | 파일 업로드 |
get [파일명] | 파일 다운로드 |
mput [파일명] [...] | 여러 파일 업로드 |
mget [파일명] [...] | 여러 파일 다운로드 |
실행파일을 받으려면 bin 입력하기
bin 안하면 실행파일만 다운받고 실행이 안된다
기본적으로 다운로드 받을 때 경로 지정을 하고 싶으면
>get
>lcd (Local Change Directory)
!pwd 내가 지금 현재 어떤 디렉토리에 있는지
/root /root아래에 있다
#lcd / Local Change Directory
ftp> !pwd 현재 위치한 디렉토리가 어디지
/
FTP Client로 생각해보자
[root@localhost ~]# [root@localhost ~]# cd /var
[root@localhost var]# ftp 10.220.10.1
Connected to 10.220.10.1 (10.220.10.1).
220 (vsFTPd 3.0.5)
Name (10.220.10.1:root): ftp 라고 입력해도 되고 anonymous라고 입력해도 상관없다
331 Please specify the password.
Password: [ENTER]
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bin
→ 실행파일을 다운 받을 때는 무조건 bin이라는 명령어를 입력해야한다. 안하면 실행파일 껍떼기만 받은 것 실행 안 됨
200 Switching to Binary mode.
ftp> hash
Hash mark printing on (1024 bytes/hash mark).
→ 다운로드 진행현황을 #으로 표시
ftp> prompt
Interactive mode off.
→ 파일 5개 받으면 다운 받을거냐고 5번이나 물어보는데 대화모드 off
ftp> ! ls
account cache db ftp kerberos local log nis preserve spool yp
adm crash empty games lib lock mail opt run tmp
ftp 서버와 상관없이 내 컴퓨터(Client)에 /var라는 디렉토리에 있는 목록들이 보임
ftp> ls
227 Entering Passive Mode (10,220,10,1,136,239).
150 Here comes the directory listing.
drwxrwxrwx 6 14 50 183 Mar 05 08:03 pub
226 Directory send OK.
ftp 서버에 있는 목록이 보임
ftp> cd pub pub 디렉토리로 이동
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (10,220,10,1,96,22).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 7 Mar 05 07:39 doNotOpen.txt
-rw-r--r-- 1 0 0 5 Mar 05 07:32 ftpfile.txt
-rw------- 1 14 50 0 Mar 05 08:04 gotohome
drwx------ 2 14 50 6 Mar 05 08:00 hello
-rw------- 1 14 50 0 Mar 05 08:00 hihyeonjun
-rw-r--r-- 1 0 0 11 Mar 05 07:38 newfile.txt
drwx------ 6 14 50 42 Mar 05 08:04 photocard
-rw------- 1 14 50 0 Mar 05 08:02 to
-rw------- 1 14 50 0 Mar 05 08:02 zibgaza.txt
drwx------ 2 14 50 6 Mar 05 07:59 ��
drwx------ 2 14 50 6 Mar 05 07:59 �ް�~
-rw------- 1 14 50 0 Mar 05 08:02 칼퇴.txt
226 Directory send OK.
local 컴퓨터의 현재 디렉토리 이동 ftp> lcd /root
Local directory now /root
ftp> !pwd 어디에 있는지 확인해보면 현재 /root에 있음
/root
#
vsftpd 서버 패키지 설치
[root@localhost ~]# dnf -y install vsftpd
환경설정 파일
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
12행에 있는 anonymous_enable=NO를 YES로 변경 후 저장
서비스 재시작
[root@localhost ~]# systemctl restart vsftpd
FTP Client 설치
[root@localhost ~]# dnf -y install ftp
ftp안에 있는?pub로 이동
[root@localhost ~]# cd /var/ftp/pub
현재(.) 디렉토리에 /root안에 있는 anaconda파일을 copy
[root@localhost pub]# cp /root/anaconda-ks.cfg .
파일 abcd 생성
[root@localhost pub]# touch abcd
파일 abcd 내용 구성
[root@localhost pub]# vi abcd
abcd와 anaconda 파일 有
[root@localhost pub]# ll
합계 8
-rw-r--r-- 1 root root 7 3월 5 14:30 abcd
-rw------- 1 root root 981 3월 5 14:29 anaconda-ks.cfg
소유자 소유그룹 root
[root@localhost pub]# ps -ef | grep vsftpd
root 34448 1 0 14:37 ? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 34493 33738 0 14:38 pts/0 00:00:00 grep --color=auto vsftpd
방화벽 내려주기
#systemctl status firewalld로 확인 후 방화벽 올라가 있으면 내려준다
#
🪟win10 cmd로 들어가서 확인
C:\Users\admin>ftp 10.130.30.3
10.130.30.3에 연결되었습니다.
220 (vsFTPd 3.0.5)
200 Always in UTF8 mode.
사용자(10.130.30.3:(none)): anonymous
331 Please specify the password.
암호: (아무거나. 임의로 그냥 엔터눌라도 된다)
230 Login successful.
ftp> 나가려면 bye
#
윈도우 10 폴더로 들어가면 리눅스에서 생성된 abcd, anaconda 파일 확인 가능
다운로드 또한 가능하다
💡실습2
Anonymous FTP 서버 → Upload 가능하도록 구성
FTP 서버에서 기본적으로 anonymous 사용자는 다운로드만 허용하고 업로드는 허용되지 않기 때문이다.
server 가상 머신으로 돌아가 업로드도 허용되도록 설정
#vi /etc/vsftpd/vsftpd.conf
18행: write_enable=YES → 로컬 사용자가 저장, 삭제, 디렉토리 생성 허용
28행 주석제거: anon_upload_enable=YES → anonymous 사용자의 파일 업로드 허가
32행 주석제거: anon_mkdir_write_enable=YES → anonymous 사용자의 디렉토리 생성 허가
데몬은 행에 주석이 있으면 읽지 않음 그래서 주석을 제거해야 systemctl restart vsftpd 데몬이 읽는다
소유권 변경
# chmod 777 pub 이것으로 해도 되고
# chown ftp.ftp /var/ftp/pub 으로 소유권을 변경해도 된다
→ 이 말은 소유자와 소유그룹인 root를 ftp로 변경한다는 뜻이다
# systemctl restart vsftpd
pub로 이동해서 확인해보면
[root@localhost ftp]# cd pub/
[root@localhost pub]# ll
합계 8
-rw-r--r-- 1 root root 7 3월 5 14:30 abcd
-rw------- 1 root root 981 3월 5 14:29 anaconda-ks.cfg
drwx------ 2 ftp ftp 6 3월 5 15:12 '새 폴더' 소유자와 소유그룹인 root를 ftp로 변경되어있다
drwx------ 2 ftp ftp 6 3월 5 15:13 '새 폴더(2)'
소유권 other에 ---로 되어 있어서 수정이 불가능,,
출처: https://zangwoo.tistory.com/289
클라이언트인 win 10에서 폴더 생성 가능
이름 수정이 불가능해서 이것을 수정가능하게 해주려면
# vi /etc/vsftpd/vsftpd.conf 들어가서
anon_other_write_enable=YES 추가한다
폴더 수정이 가능하다
NFS
Network File System
NFS
네트워크 상에서 파일시스템을 공유하도록 설계된 파일시스템
다른 서버의 파티션을 마치 내 로컬 영역인 것처럼 네트워크를 이용하여 사용할 수 있음
원격 마운트
↳ 원격에 있는 자원을 내꺼의 자원으로 사용할 수 있다?
그러니까 내가 원격접속해서 파일을 다운받는 느낌인건강
NFS 실습
NFS Server 구성
1. NFS 패키지 설치
2. /etc/exports에 공유할 디렉토리와 접근을 허가할 컴퓨터 및 접근 권한 지정
3. NFS 서비스 실행
NFS Client 구성
1. NFS 패키지 설치
2. showmount 명령을 실행해 NFS 서버에 공유된 디렉토리가 있는지 확인
3. Mount 명령을 실행해 NFS 서버에 공유된 디렉토리를 마운트
NFS Server(10.0.0.100) 구성
# rpm –qa | grep nfs-utils
# dnf –y install nfs-utils
# vi /etc/exports
/share *(rw,sync) → 저장 후 종료
# mkdir /share
# chmod 707 /share
# cp /root/anaconda-ks.cfg /share
# systemctl restart nfs-server
NFS Client(10.0.0.101) 구성
# rpm –qa | grep nfs-utils
# dnf –y install nfs-utils
# showmount –e 10.0.0.100 → 공유 정보 확인
# mkdir /r_mount
# mount –t nfs 10.0.0.100:/share /r_mount 내 컴퓨터와 다른 컴퓨터와 마운트하고 동기화 한다?
# cd /r_mount
# touch test009
# mkdir testdir
# vi /etc/fstab → 자동 마운트 설정
10.0.0.100:/share /r_mount nfs defaults 0 0
↳ 재부팅 안한다면 자동 마운트 설정 안해도 된다
최종 확인
NFS 서버 /share 내용과 NFS 클라이언트 /r_mount 내용 동기화 확인
* 10.0.0.100:/share와 /r_mount가 마운트 되어서 10.0.0.1:/share에 있는 디렉토리 내용과 /r_mount에 있는 디렉토리 내용이 동기화되어 있는지 확인한다는 것이다.
그러니까 한 파일 생성했으면 동기화
Samba
Samba
마이크로소프트와 인텔에서 개발한 SMB(Server Message Block)네트워크 프로토콜을 이용해
윈도우와 유닉스 계열(이기종 OS)간 자원을 공유할 수 있도록 만든 프로그램
현재 SMB 프로토콜은 리눅스와 윈도우 환경을 동시에 지원하는 CIFS(Common Internet File System) 으로 확장됨
Samba 구성
1. Samba 설치
2. 계정 등록
3. 공유디렉토리 설정 및 Samba 환경 추가 설정
4. Samba 데몬 실행
5. 윈도우 시스템에서 접속
Samba Server(10.0.0.100) 구성
# dnf –y install samba
# mkdir /smbshare → Samba로 공유할 디렉토리
# groupadd sambaGroup → 윈도우에서 접근할 수 있는 그룹 생성
# chgrp sambaGroup /smbshare → 소유그룹 변경
# chmod 770 /smbshare → 허가권 변경
# usermod –G sambaGroup rocky → rocky 사용자를 sambaGroup그룹에 포함
# smbpasswd –a rocky → rocky 사용자, Samba 전용 패스워드 지정
Samba Server(10.0.0.100) 환경 설정 파일 구성
# vi /etc/samba/smb.conf
11행 수정 : workgroup = WORKGROUP → 윈도우 기본 작업 그룹명으로 변경
11행 하단, 다음 내용 추가
unix charset = UTF-8 → 문자 인코딩
map to guest = Bad User → 인증 없이 접속 허용
파일 마지막 부분에 다음 내용 추가
[smbshare]
path = /smbshare → 공유 디렉토리
writable = yes → 쓰기 허용
guest ok = no → 게스트 거부
create mask = 0777 → 파일 전체 접근 허용
directory mask = 0777 → 디렉토리 전체 접근 허용
valid users = @sambaGroup → sambaGroup 소속 사용자만 허용
# testparm → 설정 내용 이상 없는지 확인
# systemctl restart smb nmb
Samba Client(윈도우 시스템, 10.0.0.20) 접속
네트워크 드라이브 연결 시도
\\10.0.0.100\smbshare입력 후
rocky 계정으로 로그인
접속 된 상황에서 파일 및 디렉토리 생성
Samba서버(리눅스)로 이동 후
# ls /smbshare
→ 확인 시 윈도우 시스템에서 작성한 파일 및 디렉토리가 보이는지 확인
'☁︎클라우드 > 일자별' 카테고리의 다른 글
240311 DAY 43 (0) | 2024.03.11 |
---|---|
240308 DAY 42 (0) | 2024.03.11 |
240307 DAY 41 (0) | 2024.03.11 |
240304 DAY 38 (0) | 2024.03.04 |
240117 8일차 (0) | 2024.01.17 |