2023.10.31(화) - Day 2.

  • 강의 주제: Linux II (고급)

0. Review

  • 프로그램

    • HDD에 있는 file
  • 프로세스

    • 메모리에 있는 프로그램
  • 실제 파일을 구분하는 건 당연히 file 내용.
    file signature
    확장자마다 시작하는 16진수가 다름.
    ⇒ 확장자를 내 임의대로 .exe로 바꿔도 실행 파일이 될 수 없는 이유


                                     파일                                 
                  읽기         쓰기                실행          
                   cat      vi 내용변경       파일명 입력      
                                  + 저장

0   ---            x             x                   x              
1   --x            x             x                   x             
2   -w-            x             /\                  x             
3   -wx            x             /\                  x               
4   r--            o             x                   x             
5   r-x            o             x                   o             
6   rw-            o             o                   x              
7   rwx            o             o                   o  

쓰기 권한이 있을 때는 읽기 권한이 없어서 읽지 못하더라도 쓰기는 가능.
대신 원본의 내용이 날아갈 수 있음.



1. Network

1-1. Common Knowledge

  • IPv4
    • 멀리 떨어진 computer를 따라가기 위한 주소
  • port 번호
    • computer에서 실행 중인 특정 프로그램을 찾아가기 위한 주소
  • 인터넷
    • 여러 데이터를 공유하도록 구성된 전 세계를 연결하는 네트워크
  • LAN
    • 가까운 곳을 연결하는 네트워크
    • LAN은 하나의 네트워크 장비에 연결되어 있음.
      Star형으로 연결
      • Star형
        • 하나의 네트워크 장비에 모두 연결되어 있음.
        • 중앙 장비에 모든 노드가 연결되어 있음.
        • 네트워크 장비가 고장나면 모두 사용 불가
  • WAN
    • 먼 곳을 연결하는 네트워크
    • WAN은 LAN + LAN + LAN + … + LAN
      Mesh형으로 연결
      • Mesh형
        • 여러 노드들이 서로 그물처럼 연결되어 있음.
        • 하나가 끊어져도 네트워크가 끊기지 않음.

  • 실제 인터넷은 여러 형태가 혼합된 복잡한 형태로 구성되어 있음.

1-2. Cast

  • Unicast
    • 특정 대상이랑만 1:1로 통신
  • Multicast
    • 특정 다수와 1:N으로 통신
  • Broadcast
    • 네트워크에 있는 모든 대상과 통신

1-3. Network Protocol

  • protocol - 일종의 약속, 양식
  • 가까운 곳과 연락
    • Ethernet protocol (MAC 주소)
  • 멀리 있는 곳과 연락
    • IPv4
    • ICMP
    • ARP
    • (IP 주소)
  • 여러 프로그램으로 연락
    • TCP, UDP
  • Ethernet
  • IPv4
  • TCP

1-4. Network Layer Model

  • TCP/IP model (표준 모델)
    • 4 layer - 응용
    • 3 layer - 전송
    • 2 layer - 네트워크
    • 1 layer - 네트워크 인터페이스
  • OSI 7 Layer
    • 7 layer - 응용
    • 6 layer - 표현
    • 5 layer - 세션
    • 4 layer - 전송
    • 3 layer - 네트워크
    • 2 layer - 데이터 링크
    • 1 layer - 물리

  • 1111 (2진수)
  • 15 (10진수)
  • f (16진수)
  • 0 1 2 3 4 5 6 7 8 9 a b c d e f (16진수)
  • MAC 주소 → 6 Byte 사용
    • AA-BB-CC-DD-EE-FF

  • 누군가의 IP 주소를 알고 있다면
    대역 내의 있는 사람들에게 이 IP를 갖고 있는 사람이 누구야? ⇒ 브로드 캐스트
    → 응답을 하면 그 때 MAC 주소를 받음.
    → 답장을 받을 때는 유니 캐스트로 직접 MAC 주소 받음.

  • 공인 IP 주소
    • 우리 반 30명이 같은 공인 IP 주소를 공유해서 사용
      (같은 네트워크를 사용하고 있고 같은 네트워크 대역폭에 있으니까)
  • 공유기 안에서는 내 IP를 사용하다가 공유기 밖으로 나가는 순간 공인 IP로 바뀌어서 나감.

  • 기본 gateway → 대체로 공유기 주소 사용


// 내 computer와 현재 연결된 다른 computer 확인
netstat -ano


2. 정리

  • IP 주소

    • 멀리 떨어진 컴퓨터를 찾아가는 주소
    • 공유기에 네트워크 대역을 설정 (네트워크 대역은 사용하는 주소 X)
      • 192.168.0 . 0
      • 255.255.255 . 0
      • 네트워크 대역 . 바꿔서 사용하는 곳
    • 공유기에는 2개의 IP 주소 존재 (공인 IP 주소, 사설 IP 주소)
    • 컴퓨터에는 일반적으로 하나의 IP 주소를 설정
      게이트웨이 주소는 연결된 공유기의 사설 IP 주소를 설정
    • 특정 컴퓨터가 사설 네트워크에 연결되어 있다면 컴퓨터로부터 나갔다가
      들어오는 건 가능하지만 외부에서 바로 들어오는 건 불가능
      이걸 되게 하려면 포트포워딩을 해줘야 함.
  • 포트 번호

    • IP주소로 찾아간 컴퓨터에서 특정 프로그램을 찾아가는 주소
    • 클라이언트 프로그램은 랜덤한 포트 사용
    • 서버 프로그램은 정해진 관리자가 설정한 포트 번호를 사용
      • netstat -anlp <linux>
      • netstat -ano <window>
  • 포트포워딩

    • 공유기의 공인 IP 주소의 특정 포트로 찾아오면 사설 IP를 사용하는 컴퓨터의 특정 포트로 연결해 주겠다는 설정
  • 리눅스 IP 설정

    • vi /etc/sysconfig/network-scripts/ifcfg-ens160 ===========================================
      BOOTPROMO=dhcp → static 으로 변경
      ONBOOT=yes (yes는 설정 파일 적용한다는 의미)
      IPADDR=110.110.110.111 - 리눅스 컴퓨터가 사용할 IP 주소
      NETMASK=255.255.255.0 - 공유기에 설정된 것과 같은 서브넷 마스크
      GATEWAY=110.110.110.2 - 공유기의 사설 IP 주소
      DNS1=8.8.8.8 - 구글의 DNS 서버 주소
      ===========================================
  • 프로그램 설치 명령어

    • window
      • 실행 파일 형태의 설치 프로그램 다운로드 받고 실행 (수동)
      • 압축 파일 형태로 되어 있는 프로그램
    • linux
      • 실행 파일 형태의 설치 프로그램 다운로드 받고 실행 (수동)
        • rpm -ivh 설치파일 경로 (centOS)
      • 압축 파일 형태로 되어 있는 소스 코드 (수동 + customizing)
        • ./configure
        • make
        • make install
      • 해당 OS 만의 특정 웹에서 자동으로 다운 및 설치 (자동)
        • yum install 프로그램이름
        • yum erase 프로그램이름
  • 파일 다운로드 명령어

    • wget + url
      • 파일을 다운로드하는 명령어
  • 설치 프로그램 확인

    • rpm -qa
  • 서비스 프로그램 관리 명령어

    • systemctl start 서비스이름
    • systemctl stop 서비스이름
    • systemctl enable 서비스이름
    • systemctl disable 서비스이름
    • systemctl status 서비스이름
  • 서버 프로그램 확인

    1. systemctl status 서비스이름
    2. ps -ef (프로그램 실행중인지 확인)
    3. port 번호 확인
      • netstat -anlp
        • kill -9 [pid] (pid를 가진 port kill)
  • nginx 서버 준비해라

    1. 리눅스 IP 설정

    2. nginx 설치

    3. nginx 실행

      • 문제 발생

        • systemctl start nginx
          80번 port가 이미 사용 중이어서 nginx 실행 error 발생

              // 80번 port kill
          
              yum -y install psmisc
              fuser -k 80/tcp        	

          nginx 정상적으로 active running 확인.
          q 누르면 원래 promt 화면으로 돌아옴.

  • 압축 풀기

    • .zip

    • .tar.gz

      touch apple
      touch banana
      touch kiwi
      
      tar cvf fruits.tar apple banana kiwi
      // => fruits.tar 묶음 tar 파일 생김
      // tar 단점 -> 용량이 매우 커짐
      
      gzip fruits.tar
      // => fruits.tar.gz 압축 파일 생김
      
      tar zxvf fruits.tar.gz
      // 압축 해제
  • grep 명령어 (filtering)

    • 조합으로 많이 사용.

      echo asd
      -> asd 출력
      
      echo asd > ./qwer
      -> qwer이라는 파일이 생겼고 
      
      cat qwer  를 실행하면
      -> asd 출력


3. 실습

  • VMWare Pro 17 - centOS8 가상 환경에서 진행
  • IP 설정
    • 공통 (30명)
      • 192.168.0.0/24 - 강의실 주소
      • 255.255.255.0 - 강의실 Subnet mask IP
    • 강사
      • 192.168.0.1xx (임의 설정)
      • 255.255.255.0
      • 192.168.0.1
      • 192.168.0.1xx (임의 설정)
      • 255.255.255.0
      • 192.168.0.1

  • OS 내 Wifi에서 ip 변경
    • window



  • 인터넷 작동 잘 되면 성공한 것.

  • ip 주소가 계속 바뀌면 client 입장에서는 사용하지 않게 됨.
    서버는 무조건 IP 주소를 수동으로 설정해주어야 함.



  • virtual network editor 실행 (VMware Pro의 가상의 공유기 개념)

    • 나만의 가상의 네트워크 환경을 구성하는 거니까
      110.110.110.111 등 어떤 주소로 설정해도 상관없음.

      여기서 110.110.110.0으로 설정한 건 공유기의 대역폭을 정한 것.

      공유기에 연결된 ip들은 모두 110.110.110. …으로 시작하는 주소를 갖겠다.

      ⇒ 그러니까 내 ip 주소는 110.110.110.xxx가 되어야 하는 것.

      → 그리고 공유기도 110.110.110. 로 시작하는 주소를 사용해야 하니까
      110.110.110.111을 할당 받아 사용하는 것.

      내 ip주소도 110.110.110.0으로 하면 당연히 절대 안된다!!


    • vi /etc/sysconfig/network-scripts/ifcfg-ens160

      BOOTPROTO=dhcp → BOOTPROTO=static 수정
      IPADDR=110.110.110.111 추가 (ip 주소 임의 설정)
      NETMASK=255.255.255.0 추가
      GATEWAY=110.110.110.2 추가
      DNS1=8.8.8.8 추가

      systemctl restart NetworkManager

      ip addr

      ping 8.8.8.8

      순서대로 실행해서 ping comand 실행 결과 packet이 전달되면 설정 완료.


  • ping 8.8.8.8 (google DNS 서버)

    • ping - 3 layer 통신이 되는지 확인하는 명령어

      • destination unreachable
        - 특정 computer를 찾아가지도 못할 때
        - 보낸 쪽에서 ip 주소 설정 및 LAN 선 등을 확인해야 함.
      • time exceeded
        - 특정 computer를 찾아갔는데 읽씹 당했을 때
        - 상대방이 어떤 조치를 취한 것.
        - 받은 쪽에서 방화벽 켜져 있을 경우
    • 가까운 곳에서 먼 곳을 하나씩 테스트

    • cf.) 실무에서 직접 ip 설정을 할 일은 없을 것.


// nginx가 실행 중인가
ps -ef | grep nginx

// 80번 포트 동작 확인
netstat -anlp | grep :80

grep root /etc/passwd
cat /etc/passwd | grep root
-> 두 명령어 실행 결과 같지만 아래 명령어를 개발자들이 더 많이 사용.

tail -f /var/log/messages


// 방화벽 해제 
systemctl stop firewalld

80번 port는 default이므로 생략되어 표시됨.


방화벽에 80번 port 등록

firewall-cmd --permanent --zone=public --add-port=80/tcp

systemctl restart firewalld

firewall-cmd --list-all

// nginx html 파일 위치
vi /usr/share/nginx/html/index.html

// /usr/share/nginx/html/ltw.html 파일 생성
touch ltw.html

http://110.110.110.111:80/ltw.html


http://110.110.110.111:80/ltw.html
→ 주소로는 다른 사람이 접속할 수 없음. (당연히 내 사설 IP 주소이니까 접속 불가)
⇒ 포트포워딩을 해줘야 다른 사람이 접속 가능.


공유기의 공인 ip 주소: host포트 로 찾아오면
→ 가상머신사설IP주소: 가상머신프로그램포트 로 보내준다.


가상 머신에 접속하려면 겉을 싸고 있는 내 본래 pc의 ip 주소가 VMware의 VMnet8 서버에 접속하기 위한 공인 ip 주소가 됨.


HW

💡 숙제 >

내 PC 켜놓고 포트포워딩 설정해서 nginx 설치하고 html 추가해서

와서 웹 페이지 접속했을 때 성공해야 함.

profile
Web Developer

0개의 댓글