FTP(File Transfer Protocol)
- 파일 전송 프로토콜
- tcp, 21(세션 수립), 20(데이터 전송)
- TCP(신뢰성 높음)
ftp랑 client서버 둘 다
vm 만들어주고(ftp랑 client서버)
공용 IP설정
국룰 해주고
[root@ftp ~]# yum install -y vsftpd
[root@ftp ~]# systemctl restart vsftpd
[root@ftp ~]# systemctl enable vsftpd
- ftp 사용자가 접속 시 기본디렉토리
[root@ftp ~]# touch /var/ftp/ftp-test.txt
[root@ftp ~]# echo 'ftp-test file' > /var/ftp/ftp-test.txt
[root@ftp ~]# cat /var/ftp/ftp-test.txt
ftp-test file
- 클라이언트에서 ftp로 접속 시 저 파일이 보이는지 확인해 보기 위해 테스트 파일을 만들어두자
client서버
[root@web ~]# yum install -y ftp
- 클라이언트에서 ftp클라이언트 역할을 할 명령어를 설치
[root@web ~]# ftp 211.183.3.21 => 여기 ip주소로 들어가
Connected to 211.183.3.21 (211.183.3.21). => 서버 접속 성공
220 (vsFTPd 3.0.2) => FTP 서버 프로그램 이름
Name (211.183.3.21:root): anonymous (입력) => 사용자 계정 입력 단계/ anonymous 계정을 사용한다는 건 공개적으로 접근 가능한 FTP서버에서 사용할 수 있다는 것
331 Please specify the password.
Password: (Enter 해주면 됨)
230 Login successful.
-> FTP 서버에 접속하는 과정임
-> FTP 기본 명령어
-> help 하면 많은 정보를 볼 수 있음
-> 이런 느낌
-> 아까 서버에서 만든 파일도 잘 보임
-> 아까 만든 파일이 잘 전송되는지 확인
- 받은 파일 확인할 수 있음
client 서버
[root@web ~]# ftp 211.183.3.21
Connected to 211.183.3.21 (211.183.3.21).
220 (vsFTPd 3.0.2)
Name (211.183.3.21:root): user
331 Please specify the password.
Password: user
530 Login incorrect.
Login failed.
ftp> dir
530 Please login with USER and PASS.
-> 없는 게 당연함 아까랑 다른 루트로 갔기 때문임
-> vm 만들 때 설정한 user 아이디랑 비번 입력 해야 됨
-> 이번에는 ftp서버의 사용자인 user로 ftp로그인을 해보면, 어디론가 접속은 가능한데 어딘지 모르겠음
FTP서버
[root@ftp ~]# echo 'user-home' > /home/user/test.txt
-> 내가 만들었던 user에 파일을 만들어주기
-> user의 홈디렉토리인 /home/user에 테스트 파일을 만들자
다시 client에 가서 확인해 보면 dir 했을 때 test파일이 생긴 걸 알 수 있음
TFTP(Trivial FTP)
trivial - 사소한
- UDP(빠름), 69번 포트 사용.
- 간단한 파일을 신뢰성 없이, 일방적으로 전송할 때
- FTP보다 기능이 제한되지만 빠르고 가볍게 파일을 전송 가능(보안 없음)
[root@ftp ~]# yum install tftp-server
[root@ftp ~]# systemctl restart tftp
[root@ftp ~]# systemctl enable tftp
[root@ftp ~]# vi /etc/xinetd.d/tftp
- tftp 설정파일 편집
[root@ftp ~]# systemctl restart tftp
[root@ftp ~]# systemctl enable tftp
- 설정 변경 반영 (필수는 아니지만 해주자)
[root@ftp ~]# echo 'tftp test file' > /var/lib/tftpboot/ttest.txt
- tftp 루트디렉토리에 테스트 파일 생성
client 서버
[root@web ~]# yum install -y tftp
->클라이언트에서 명령어 설치 후 접속
-> 만약에 내가 의도한 대로 됐다면, 현재 있는 곳이 tftp서버의 /var/lib/tftpboot경로일 것이고, 그곳에 파일이 하나 있을 것임
-> 신뢰성을 높이기 위해 꼭 파일 내용을 확인해야 됨.
만약에 여기서 tftp서버의 방화벽을 활성화한 후, client의 ttest.txt를 삭제한 다음 다시 get을 해보자
-> 그러면 파일은 있지만 안에 내용물이 없음
-> 방화벽 때문에 그런 거임
-> 이것처럼 내용물이 없는 걸 확인할 수 있음
PxE(픽시, Preboot eXecution Environment) 서버
-> 다수의 Bare-metal 서버: 서버가 옷을 안 입고 있는 상태 = OS가 설치되지 않은 상태 그래서 서버에 OS를 설치하는 환경을 네트워크를 통해 제공하는 서버
-> USB 없이 여러 대 동시에 OS를 설치 가능
-> Bare-metal 서버가 IP가 없는 상태라면 OS가 없는 상태라는 것
-> 일반적으로 DHCP + TFTP + HTTP/NFS 서버와 함께 동작함
-> 나한테 IP 부여할 친구가 있나? 찾아보는 상태
-> 운영체제가 설치되지 않은 Bare-matal 서버들은 혹시라도 누군가 자신에게 아이피를 부여하지 않을까 하는 마음에 계속
dhcp discover 메시지를 보냄(짝사랑 같... 은...)
실습해 보기
1. DHCP server 구성
- pxe 서버 구현에 필요한 3가지 패키지를 설치.
[root@PxE ~]# yum install -y dhcp tftp-server vsftpd
[root@pxe ~]# vi /etc/dhcp/dhcpd.conf
subnet 211.183.3.0 netmask 255.255.255.0
{
option routers 211.183.3.2;
#GW
option subnet-mask 255.255.255.0;
#SM
range dynamic-bootp 211.183.3.220 211.183.3.240;
# 부여받는 서버 ip 범위
option domain-name-servers 8.8.8.8;
#DNS
allow booting;
#부팅 허용.
next-server 211.183.3.67;
#내 pxe ip주소를 넣어줘야 됨
#PxE 서버의 주소/ 정확하게 얘기하자면 tftp주소
filename "pxelinux.0";
# next-server에 가서 받아올 파일.
}
[root@PxE ~]# systemctl restart dhcpd
[root@PxE ~]# systemctl enable dhcpd
- 새로 만든 os 안 넣어준 파일 재시작을 클릭하면 ip는 잘 부여받은 걸 확인할 수 있음
- 그리고 TFTP 시도 중(next server) 없음
- dhcp서버로부터 아이피를 잘 부여받는 걸 확인 가능
2. tftp server 구성
- dhcp를 통해 IP를 부여받은 pxe.client가 tftp서버를 부팅 및 파일 전송에 필요한 환경이 구성되도록 해당 파일들을 복사해 오자
- iso 파일의 위치
우리는 아래의 3가지 파일이 필요하다.
pxelinux.0 = pxe 부팅에 필요한 파일. iso 파일에 없으므로 다운로드 해야 됨
initrd.img = 램디스크 파일(램을 마치 디스크처럼 사용 가능). 우리는 현재 사용할 준비가 되어있는 보조기억장치(디스크)가 없으므로 이 파일을 통해 램을 디스크처럼 사용할 예정
vmlinuz = 압축된 리눅스 커널 파일
[root@PxE ~]# cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot
[root@PxE ~]# cp /media/images/pxeboot/initrd.img /var/lib/tftpboot
[root@PxE ~]# yum install -y syslinux
[root@PxE ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
[root@PxE ~]# ls /var/lib/tftpboot
[root@PxE ~]# systemctl restart tftp
[root@PxE ~]# systemctl enable tftp
3. ftp 서버를 구성
- OS 설치에 필요한 파일들을 ftp를 통해 보내줄 예정
[root@PxE ~]# cp -r /media/* /var/ftp/pub
- -r 하위 파일, 폴더 전부
- iso파일 내용 전부를 ftp 디렉토리에 복사해 주자
- 적용되는데 조금 오래 걸림
여기서 다시 tftp 서버
[root@PxE ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
- 파일 확장자처럼 보이지만 경로임
[root@PxE ~]# cd /var/lib/tftpboot/pxelinux.cfg
[root@PxE pxelinux.cfg]# pwd
/var/lib/tftpboot/pxelinux.cfg
- 해당 경로로 이동된 상태
[root@PxE pxelinux.cfg]# vi default
- PxE pxelinux.cfg에 파일 만들어주기
[root@PxE pxelinux.cfg]# vi default
- default라는 파일을 통해 어떤 방식으로 부팅을 할지 결정
-> 부팅 시 사용할 커널과 초기 랩디스크를 설정하는 파일
- 파일 만들어주기
- 빈 공간 나오는 게 맞음
DEFAULT centos7_pxe
LABEL centos7_pxe
kernel vmlinuz
APPEND initrd=initrd.img repo=ftp://211.183.3.44/pub
DEFAULT centos7_pxe
LABEL centos7_pxe -> 부팅 방식
kernel vmlinuz
APPEND initrd=initrd.img repo=ftp://211.183.3.44/pub
- 사용할 프로토콜
- 램디스크: RAM의 일부를 가상 디스크처럼 사용하는 것을 말함(휘발성임)
- 운영체제 설치파일이 있는 저장소
[root@PxE pxelinux.cfg]# systemctl restart vsftpd
[root@PxE pxelinux.cfg]# systemctl enable vsftpd
- os를 등록 안 하고 vm을 돌렸을 때 이런 식으로 파일을 찾다가
- 정상적으로 다음페이지가 들어옴
3번을 http 변경해서 해보기(FTP 대신 사용 가능)(출처: 올라프)
[root@ftpOS ~]# systemctl stop vsftpd
[root@ftpOS ~]# systemctl disable vsftpd
- 저 경로에 pxe파일이 없기 때문에
- mkdir 해서 파일 만들어줌 -> pxe
mkdir /pxe
cp -r /media/* /var/www/html/pxe # -r 옵션은 하위 파일과 폴더 전부 복사하는 옵션
cp -r /media/* /var/www/html/pxe
# -r 옵션은 하위 파일과 폴더 전부 복사하는 옵션
# 디렉터리 생성
# 파일처럼 보이지만 경로이다.
mkdir /var/lib/tftpboot/prelinux.cfg
# 위에서 생성한 prelinux.cfg 디렉터리로 이동
cd /var/lib/tftpboot/prelinux.cfg
# default 파일을 통해 어떤 방식으로 부팅할지 결정한다.
vi default
#################################################################################
# default 파일
DEFAULT centos7_pxe
LABEL centos7_pxe
kernel vmlinuz
APPEND initrd=initrd.img repo=http://211.183.3.44/pxe
#################################################################################
systemctl restart httpd
systemctl enable httpd
오류/ 해결방안
Xshell이랑 연결이 안 된다면?
ONBOOT가 no인지 확인해 보세요 -> yes로 바꿔줘야 됨
'AWS Cloud School 8기 > 서버가상화_클라우드 이미지' 카테고리의 다른 글
방어벽/ 포트의 개념 (0) | 2025.01.26 |
---|---|
PxE kickstart/ 응용 실습 (0) | 2025.01.26 |
NFS 설명+실습 / (status 이상하게 자꾸 까먹어서 적어봄)/ 마운트 해제 (0) | 2025.01.22 |
DNS/ 호스트네임 변경하는 방법 (0) | 2025.01.22 |
응용 풀이/ DNAT, PAT, NAT, 새로운 VM 활용 5,6/ dhcp (0) | 2025.01.20 |