어쩌다 IT
article thumbnail
반응형

리뷰 (Review)

더보기

LVM

  • LVM 구성
    • PV - 물리적 Volume
    • PE - PV를 일정한 크기로 나눈 것
    • VG - 볼륨 그룹
    • LV - 논리적 볼륨, 사용자가 최종적으로 사용하는 단위
    • 최종적으로 mount하는 대상은 LV

 

Linux 부팅 과정

  • booting == O/S 실행
    1. 전원 on
    2. BIOS 실행
      • 컴퓨터 상태 점검
      • 부트 로더 프로그램 로드
    3. 부트 로더 실행
    4. Kernel 초기화
      • dmesg로 확인 가능
    5. systemd 서비스 실행
      • systemd - 1번 프로세스
      • booting level
    6. 로그인 shell 실행 및 프롬프트 표시

 

systemd 유닛

  • systemd는 "서비스명.유닛 종류" 형태로 관리
    • service, socket, device, mount, automount, target, ...

 

  • systemd 관련 명령
    • systemctl - Daemon 프로세스 (서비스) 관리 명령
      • [sudo] systemctl [옵션] [명령] [<유닛명>]
        • -a : 상태와 관계없이 전체 유닛 출력
        • -t 유닛 종류 : 지정한 유닛 종류 출력
        • 명령 : status, start, stop, restart, enable, disable, isolate, ...

 

데몬 프로세스 (daemon process)

  • 독자형 데몬 
    • 서비스 응답 시 속도가 빠르다.
    • 자주 사용하는 서비스가 아니면 자원 낭비 요인이 있다.
  • 슈퍼 데몬
    • 독자형 데몬에 비해 속도가 느릴 수 있으나 자원 효율적으로 사용
    • 네트워크 사용하는 서비스가 슈퍼 데몬 형식
  • 주요 데몬
    • sshd, httpd, ftpd, nfs, crond, ...

 

런-레벨 (run-level)

  • 시스템 실행 레벨 의믜 (3번 - CLI booting, 5번 - GUI booting)
  • 런-레벨은 0~6까지 정수로 부여되고 target 유닛에 의해 적용

 

Linux 환경에서 Application (Program) 설치 방법

  • Application source를 다운로드 또는 복사하여 직접 compile 과정을 통해 설치
  • Application package 파일을 다운로드 또는 복사하여 직접 package를 이용해 설치
    • Debian 계열 - .deb파일, dpkg 명령으로 설치, 제거, 업그레이드 관리 수행
    • Redhat 계열 - .rpm파일, rpm 명령으로 설치, 제거, 업그레이드 관리 수행
  • 각 배포판에서 운영하는 repository를 통하여 원하는 Application package를 다운로드하여 설치
    → 인터넷 연결 필요, 일반적으로 사용하는 방법
    • Debian 계열 - apt 명령
    • Redhat 계열 - yum 명령

Linux 개요

 

소프트웨어 관리

SSH

  • Secure SHell
  • 22번 Port 사용
  • 네트워크를 이용하여 원격으로 접속하는 서비스
    • Linux 사용 시 SSH client를 이용한 접속이 일반적이다.
  • 공개키 암호 방식으로 암호화된 데이터 송수신
  • 원격 접속 대상(server) Linux host에 SSH daemon process(sshd, server program)가 동작 중이어야 한다.
    → client / server 구조
  • 원격 접속 client는 SSH client 프로그램을 통해 접속
    • Windows - PuTTY, xshell 
    • Linux / MacOS - ssh 명령
  • 별도의 공개키를 직접 생성하여 client에 제공하고 접속하는 방식으로 사용할 수 있다.
    • public cloud에서 제공하는 가상 컴퓨팅 서비스
    • IaC를 이용한 Infrastructure 관리 시에도 많이 사용
    • ssh-keygen 명령 - 개인키 / 공개키 생성
  • 가상 PC 환경에서 SSH 접속 환경 구축 방법
    1. NAT 환경에서 포트 포워딩 기능 사용
      • ssh client 사용 시
        • host IP : 127.0.0.1
        • host Port : 22
    2. NAT 네트워크 구성 - 별도의 네트워크 구성 시 유리 (가상 PC 네트워크 구성)
    3. 호스트 어댑터 이용
      • SSH server ip로 접속

Ubuntu 포트 포워딩으로 PuTTY 연결하기

    1. Ubuntu Terminal에서 sshd 작동하는지 확인

systemctl satus sshd

    2. VirtualBox에서 Ubuntu 네트워크 포트 포워딩 설정

호스트 포트, 게스트 포트는 ssh 이용을 위해 포트 번호 22

    3. PuTTY 실행 후 IP Address 및 Port Number 설정

IP Address 127.0.0.1 loopback, ssh port no. 22

    4. 신뢰성 확인, 처음 실행 시에만 나타남

신뢰성 확인, Accept

    5. Ubuntu 사용자 ID와 PW 입력하면 원격 접속 완료

끄-읏


CentOS7 호스트 어댑터 이용 PuTTY 원격 접속하기

    1. VirtualBox에서 CentOS 호스트 전용 어댑터 추가

호스트 전용 어댑터 추가

    2. CentOS7 Terminal에서 ip addr 명령으로 ip 검색 및 PuTTY에 설정

CentOS에서 확인한 IP 동일하게, Port no. 22

    3. 신뢰성 확인 Accept 하고 CentOS7 ID / PW 입력하면 원격 접속 완료

끄-읏


스냅 패키지 관리

  • 스냅 개념
    • Ubuntu에 새로 도입한 패키지 형식으로 샌드박스 형태 패키지
    • 패키지를 만들 때 프로그램이 사용하는 모든 라이브러리를 패키지 안에 포함
    • 스냅 장점
      • 개발자가 다른 패키지나 라이브러리 의존성에 대하여 고려하지 않고 개발
      • 기존 시스템과 격리되어 실행하는 샌드박스 형식으로 보안 강화
    • 스냅 단점
      • 패키지 용량이 크다.
  • snap 명령
    • snap이 별도로 설치되지 않은 경우 설치 후 사용 - sudo apt-get install snap
    • snap [옵션]
      • list : 설치한 스냅 목록 출력
      • info <스냅명> : 지정한 스냅 상세 정보 출력
      • find <스냅명> : 지정한 스냅 검색
      • install <스냅명> : 지정한 스냅 설치, 관리자 권한
      • remove <스냅명> : 지정한 스냅 삭제, 관리자 권한

파일 아카이브 및 압축

  • 파일 아카이브 - 파일들을 하나로 묶는 동작
    • tar 기능[옵션] <아카이브 파일> <아카이브 대상 파일 또는 디렉토리>
      • 아카이브 파일 확장자 - .tar 
      • 기능
        • c : 새로운 tar 파일 생성
        • t : tar 파일 내용 출력
        • x : tar 파일을 원본 형태로 추출
        • r : 새로운 파일 추가
        • u : 수정된 파일 업데이트
      • 옵션
        • f : 아카이브 파일 지정
        • v : 처리 과정 출력
        • j : bz2 형식으로 압축 또는 해제
        • z : gz 형식으로 압축 또는 해제
    • 아카이브 파일 생성 → tar cvf <.tar> <아카이브 대상>
    • 아카이브 파일 내용 확인  tar tvf <.tar> <아카이브 대상>
    • 아카이브 파일 내용 추출  tar xvf <.tar> <아카이브 대상>
    • 아카이브 파일 생성 및 gzip 압축  tar cvfz <.tar.gz> <아카이브 대상>
    • 아카이브 파일 생성 및 bzip2 압축  tar cvfj <.tar.bz2> <아카이브 대상>

tar cvf <*.tar> <아카이브 대상>
tar tvf <.tar> <아카이브 대상>
tar xvf <*.tar> <아카이브 대상>
tar cvfz <*.tar.gz> <아카이브 대상>
tar cvfj <*.tar.bz2> <아카이브 대상>


  • 압축 - 파일 크기를 줄이는 동작
    • Linux 압축 명령은 파일 아카이브를 수행하지 않고 압축만 수행 
    • 손실 압축 방식
    • 비손실 압축 방식 
    • gzip / gunzip
      • gzip [옵션] <파일명> - 압축
        • 압축 파일 확장자 - .gz 
        • -l : 압축 파일 정보 확인
        • -r : 하위 디렉토리로 이동하여 파일 압축
        • -v : 압축 정보 화면 출력
        • -9 : 최대한 압축
      • gunzip <파일명> - 압축 해제
    • bzip2 / bunzip2
      • bzip2 [옵션] <파일명> - 압축
        • 압축 파일 확장자 - .bz2
        • -l : 압축 파일 정보 확인
        • -d : 파일 압축 해제
        • -v : 압축 정보 화면 출력
        • --best : 최대한 압축
      • bunzip2 파일명 - 압축 해제
    • zip / unzip
      • zip <압축파일명> <파일명> - 압축
      • unzip <파일명> - 압축 해제

gzip, bzip, zip


네트워크 명령

네트워크 명령

  • 네트워크 관리 명령으로 Debian 계열과 Ubuntu 계열 공통 명령과 같은 기능을 하지만 다른 패키지를 통해 동작하는 명령이 있다.
  • 호스트 접속 확인 명령
    • ping [옵션] <호스트 IP 또는 domain>
      • -c 횟수 : 횟수만큼 패키지 송수신
      • ICMP 기반 명령으로 해당 호스트가 보안 문제 때문에 응답을 하지 않는 경우도 있다.

 

  • 원격 호스트에 대한 패킷 경로 표시 - routing 경로 확인
    • Ubuntu - traceroute
      • sudo apt install traceroute
    • CentOS - tracepath
      • sudo yum install iputils -tracepath
    • traceroute [옵션] <호스트>
      • -n : 주소를 IP Address로 표시
      • -m maxttl : 패킷 최대 TTL 설정

10 hops가 TTL

 

  • 호스트 IP 주소 / 도메인명 검색
    • DNS(Domain Name Server)에 해당 host에 대한 IP 주소 / 도메인명 검색 요청 명령
    • /etc/resolv.conf 파일에 검색 요청할 DNS 정보 기록 
    • host [옵션] <IP Address / domain>
      • -v : 상세 정보 표시

 

  • DNS 정보 검색
    • dig [옵션] <쿼리 타입> <domain>
      • -x address : IP 주소가 Address인 호스트 DNS 정보 출력
      • any : 모든 정보
      • ns : 지정 도메인 공인 네임 서버
      • dig @공인 네임 서버 <domain> → 네임 서버 지정

 

  • 도메인 정보 취득 
    • whois [옵션] <host (www 제외한 domain)>
      • -h server : 검색에 사용할 서버 지정
  • SSH client 명령
    • ssh [옵션] <[사용자명]@<호스트명>>
      • -i <공개키 파일 경로 및 파일명> : 공개키 파일
      • -l user : 원격 호스트에 접속할 사용자명
      • exit : ssh client 종료
      • ssh <host IP> - login 시 ID / PW 입력
      • ssh <사용자명@host IP> - PW 입력, 일반적인 방식
    • ssh-keygen
      • 공개키 / 개인키 생성 명령
      • 사용자 홈 디렉토리/.ssh에 공개키와 개인키 저장
        • 개인키 - id_rsa, ssh server에 저장
        • 공개키 - id_rsa.pub, ssh client 사용
          • 일반적으로 공개키의 permission은 소유자만 읽기/쓰기 권한 부여
          • chmod 600 id_rsa.pub
  • CLI 방식의 웹 브라우저
    • 인터넷을 이용하여 특정 사이트로부터 데이터 download 동작 수행하는 웹 브라우저 기능 명령
    • wget [옵션] URL
      • -b : 백그라운드로 download
      • -r : 재귀적 download
      • -c : 이어받기
    • curl [옵션] URL
      • -O : download 결과를 URL에서 가져온 파일명으로 저장
      • -o file : download 결과를 file로 저장
  • 네트워크 인터페이스 확인 설정
    • ip [옵션] addr [내부 명령]
      • -s : 상세 정보
      • -f family : 네트워크 주소 종류 family
      • -r : 호스트명 표시
    • 내부 명령
      • show : device 주소 표시
      • add addr : device 주소 추가
      • del addr : device 주소 삭제
      • flush dev - device 주소 일괄 삭제
    • ifconfig - 과거에 기본 네트워크 확인 명령, 향후 삭제될 명령
  • 인터넷 경로 (routing) 설정
    • ip route [내부 명령]
    • route [옵션] [내부 명령]
  • 네트워크 소켓 정보 및 접속 상황 표시
    • ss [옵션]
    • ip [옵션] link [내부 명령]
    • netstat [옵션] - 일반적으로 많이 사용
      • -i : 네트워크 인터페이스 접속 상태 관련 정보 표시
      • -r : 라우팅 테이블 표시
      • -s : 프로토콜 통계 정보
      • -l : 접속 대기 중인 소켓만 표시
      • -t : TCP 소켓 정보 표시
      • -n : IP Address 형식으로 출력

netstat

 

  • 네트워크 인터페이스 트래픽 데이터 표시하기 (wireshark와 유사 기능 수행)
    • sudo tcpdump [옵션] [조건]
      • -c count : {count}개 패킷 취득 후 종료
      • -F file : 패킷 필터링 조건을 file로 설정해서 읽는다.
      • -i if : 인터페이스 if 지정
      • 조건
        • host host명 - 특정 호스트
        • port port번호 - 특정 포트 번호
      • 예시)
        • sudo tcpdump port http and host www.example.com
        • sudo tcpdump -c 20 port ssh

sudo tcpdump port port번호 and host host명


ETC

더보기
  • POSIX(파직스) - UNIX 표준 규약

실습 예제

더보기
  • 패키지 인덱스 정보를 업데이트
sudo apt-get update
  • 설치된 패키지 업그레이드
sudo apt-get upgrade
  • 의존성 검사하며 업그레이드 (구글링)
sudo apt-get dist-upgrade
  • 패키지 설치
sudo apt-get install <패키지명>
  • 패키지 재설치 (구글링)
sudo apt-get --reinstall install <패키지명>
  • 패키지 삭제 (설정 파일은 지우지 않음)
sudo apt-get remove <패키지명>
  • 패키지 삭제 (설정 파일까지 모두 지움)
sudo apt-get purge <패키지명>
  • 패키지 소스코드 다운로드 (구글링)
sudo apt-get source <패키지명>
  • 위에서 받은 소스 코드를 의존성있게 빌드 (구글링)
sudo apt-get build-dep <패키지명>
  • 패키지 검색
apt-cache search <키워드명>
  • 패키지 정보 보기
apt-cache show <패키지명>

TIF

주문한 모니터가 왔다.

노트북에서 zoom 켜놓고 내용 기록하고 하기가 그랬는데 훨씬 편하다. (역시 불편한 건 돈으로 메워야 한다.)

 

주로 PuTTY에서 실습을 진행했는데 나는 그냥 Ubuntu에서 진행했다. 

여기서 하나 저기서 하나 똑같다고 생각했기 때문에...

지금 Ubuntu에서 하는 실습한 하나하나 캡처 뜨고 있는데 PuTTY에서 하면 복사가 된다...

그러고 코드블록으로 입력하는 게 편한데... 내일부턴 그렇게 해야겠다.

 

 

2022. 08. 18 에 작성된 글입니다.

반응형
profile

어쩌다 IT

@jwlish

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!