0228 FRI | key-pair, IP, 서브넷, GNS 실습

iburnius·2025년 3월 29일

AWS

목록 보기
4/6

https://cloudonaut.io/avoid-sharing-key-pairs-for-ec2/

  • AWS EC2 서비스: 우리가 원하는 가상의 서버를 만들 수 있음.
    • key pair를 만드는 과정이 있음.
    • private key → 사용자에게 줌


ssh 클라이언트가 원격지 ssh 서버로 접속하고자 할 때 옵션을 사용한다면 누가 우선인가??

  1. ssh 명령어로 접속하는 경우 ssh -o StrictHostKeyChecking=no -l root -h www.test.com
  2. 각 사용자별로 존재하는 config 파일 ⇒ ~/.ssh/config (가장 일반적인 방법)
  3. 시스템 전체에 존재하는 1개의 파일 ⇒ /etc/ssh/ssh_config


Key pair를 만들어서 원격 서버 접속하기

  1. ssh-keygen -q -N "" -f testkey.pem
  2. ls
  3. ll
  4. cat testkey.pem.pub
  5. 키 복사
  6. ls
  7. ssh-keyscan 211.183.3.102 >> .ssh/known_hosts
  • mkdir .ssh ; chmod 700 .ssh
  • ls -al
  • cd .ssh
  • touch authorized_keys
  • vi authorized_keys
  • chmod 600 authorized_keys

어제는 로컬에서 rocky1, rocky2 연결한거고
오늘은 rocky1에서 rocky2랑 연결하는거

rocky1에서

  1. ssh-keygen -q -N "" -f testkey.pem
  2. cat testkey.pem.pub
  3. 키 복사
  4. ssh-keyscan 211.183.3.102 >> .ssh/known_hosts
  5. mkdir ~/.ssh
  6. vi ~/.ssh/authorized_keys
  7. 키 붙여넣고 저장

rocky2에서

  1. mkdir ~/.ssh
  2. vi ~/.ssh/authorized_keys

rocky1에서

  1. chmod 700 .ssh
  2. chmod 600 .ssh/authorized_keys
  3. ssh -i testkey.pem -l user1 211.183.3.102
  4. yes

rocky2에서

  1. chmod 700 .ssh
  2. chmod 600 .ssh/authorized_keys
  3. ssh -i testkey.pem -l user1 211.183.3.101
  4. yes

Quiz 1.

key-pair 를 이용한 원격 서버 접속하기

  1. rocky1 에서 user1 으로 로그인 하여 새로운 key-pair 를 하나 만든다 → mykey0228.pem
  2. mykey0228.pem.pub 공개키의 내용을 복사하여 rocky1 의 /home/user1/.ssh/ 하위의 authorized_keys 에 붙여넣기 한다. rocky2 역시 동일하게 한다
  3. rocky1 에서 생성한 mykey0228.pem 의 내용을 복사하여 윈도우의 바탕화면에 메모장을 이용하여 mykey0228.pem 으로 저장한다.
  4. mobaxterm 이용하여 rocky1, rocky2 의 user1 으로 ssh 연결을 시도한다!!!

p.198

  • 리눅스는 멀티유저 환경이고, 각각의 독립적인 환경에서 멀티태스킹이 가능하다.
  • namespace라는 kernel에서
  • namespace: 독립된 작업공간을 제공하는 커널
  • → 도커에서는 독립된 컨테이너를 사용하는데, 컨테이너 안에 웹 서버(nginx)가 하나 있다고 가정하면 n 개의 nginx를 동시에 사용하는게 가능하다.
  • 하나의 서버, 데이터베이스에서 독립적인 컨테이너 n개 내에서 애플리케이션을 실행하는게 가능하다.
  • 컨테이너 각각에 리소스를 제공

<컨테이너 vs. VM>

→ 어느 부분을 가상화하느냐에 대한 차이

  • VM: OS를 두번 거치므로 속도가 저하됨
  • 컨테이너: 웹서버 2개가 독립되어 있음. 격리 가능, 성능저하줄임
  • 컨테이너 오케스트레이션 → k8s(쿠버네티스)의 역할

p.198-

[root@rocky1 ~]# whoami
root
[root@rocky1 ~]# pwd
/root
[root@rocky1 ~]# echo $HOME
/root
[root@rocky1 ~]# cat /etc/passwd | grep ^root
root:x:0:0:root:/root:/bin/bash
[root@rocky1 ~]# cat /etc/shadow | grep root
root:$6$NocZ4JG2EgY.n.ji$R59dyUCPqjptDC98/RYw63SGa35Lh2mP0DWKgj8/OTz7C5/eH5af/5plJ2LYqSD7B.2j1drqA84oJ6bUBMNPP.::0:99999:7:::
[root@rocky1 ~]# cat /etc/passwd | grep ^user1
user1:x:1000:1000:user1:/home/user1:/bin/bash
[root@rocky1 ~]# groups user1
user1 : user1 wheel
[root@rocky1 ~]# cat /etc/sudoers | grep wheel
## Allows people in group wheel to run all commands
%wheel	ALL=(ALL)	ALL
# %wheel	ALL=(ALL)	NOPASSWD: ALL
[root@rocky1 ~]# cat /etc/sudoers | grep user1
user1		All=(ALL)	NOPASSWD: ALL
  • 6의 의미: 해시 알고리즘의 SHA 알고리즘(Secure Hash Algorithm)을 사용했다.
  • wheel(그룹): 관리자 권한을 대행하는 그룹. wheel 그룹에 추가된 사용자 외에는 su나 sudo 명령어 접근을 제한시켜 시스템 보안을 높일 수 있다.

사용자 및 그룹과 관련된 명령어(p.200-203)

  1. useradd: 새로운 사용자 추가

    • -u: UID 값 지정
    • -g: 그룹 지정
    • -d: 홈 디렉터리 지정
    • -s: 사용자가 사용할 셸 지정
    • -p: 암호 지정
    [root@rocky2 ~]# useradd -d /testhome -p test123 testuser
    [root@rocky2 ~]# cat /etc/passwd | grep testuser
    testuser:x:1001:1001::/testhome:/bin/bash
    [root@rocky2 ~]# ls /
    bin   dev  home  lib64  mnt  proc  run   srv  testhome  usr
    boot  etc  lib   media  opt  root  sbin  sys  tmp       var
    [root@rocky2 ~]# cat /etc/shadow | grep testuser
    testuser:test123:20147:0:99999:7:::
    • /etc/passwd에는 시스템에 등록된 사용자의 정보들이 담겨있는 파일
    • /etc/shadow에는 암호화된 패스워드와 패스워드 설정 정책이 기재되어있음
    [root@rocky2 ~]# userdel testuser
    [root@rocky2 ~]# useradd user2
    [root@rocky2 ~]# passwd user2
    Changing password for user user2.
    New password: # user2
    BAD PASSWORD: The password is shorter than 8 characters
    Retype new password: # user2
    passwd: all authentication tokens updated successfully.

Quiz 2.

useradd -d /testhome -p test123 testuser 에서

-p를 이용하지 말고 한 줄로 사용자 추가와 패스워드 지정을 해보세요!!!

💡
[root@rocky2 ~]# useradd user2 && echo 'user2:test123' | chpasswd

  1. userdel: 사용자 삭제

    • -r (디렉토리까지 함께 삭제)
    [root@rocky2 ~]# userdel -r user2
    [root@rocky2 ~]# useradd user2
    [root@rocky2 ~]# passwd user2
    Changing password for user user2.
    New password: 
    BAD PASSWORD: The password is shorter than 8 characters
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    [root@rocky2 ~]# groups user2
    user2 : user2
    
  2. usermod: 사용자의 속성을 변경

    • -g (사용자의 그룹 변경)
    [root@rocky2 ~]# usermod -g root user2
    [root@rocky2 ~]# groups user2
    user2 : root
    • -G (추가로 다른 그룹에 속하게 할 때)
    [root@rocky2 ~]# usermod -G root user2
    [root@rocky2 ~]# groups user2
    user2 : user2 root
    • -aG⭐ (primary 그룹을 변경하지 않는다. 기존 그룹에 추가된다.(append))
    [root@rocky2 ~]# usermod -aG wheel user2
    [root@rocky2 ~]# groups user2
    user2 : user2 root wheel
    • root 그룹을 primary 그룹으로 변경
    [root@rocky2 ~]# usermod -g root user2
    [root@rocky2 ~]# groups user2
    user2 : root wheel
  3. chage - 사용자의 비밀번호를 주기적으로 변경하도록 설정

  4. groups - 사용자가 소속된 그룹을 표시

  5. groupadd - 새로운 그룹을 생성

  6. groupmod - 그룹의 속성을 변경

  7. groupdel - 그룹을 삭제

  8. gpasswd - 그룹의 비밀번호를 설정하거나 그룹 관리를 수행


파일과 디렉터리의 소유와 허가권(p.208-)

p.209

파일 유형

  • ‘d’ - 디렉터리
  • ‘-’ - 일반적인 파일
  • ‘b’ - 블록 디바이스
  • ‘c’ - 문자 디바이스
  • ‘l’ - 링크

파일 허가권

  • r - 읽기
  • w - 쓰기
  • x - 실행

p.210 하단

파일 소유권

  • chown: 파일 소유권을 바꾸는 명령어
    • chown 새로운사용자이름(/새로운그룹이름) 파일이름

    • chown rocky sample.txt: sample.txt 파일의 소유자를 rocky로 바꾸라는 의미

      [root@rocky2 ~]# cd
      [root@rocky2 ~]# touch test.txt
      [root@rocky2 ~]# ls -l
      total 12
      -rw-------. 1 root root 1353 Feb 25 22:17 anaconda-ks.cfg
      drwxr-xr-x. 2 root root    6 Feb 26 00:05 Desktop
      drwxr-xr-x. 2 root root    6 Feb 26 00:05 Documents
      drwxr-xr-x. 2 root root    6 Feb 26 00:05 Downloads
      -rw-r--r--. 1 root root  336 Feb 27 03:18 ifcfg-ens160.bak
      -rw-r--r--. 1 root root 1718 Feb 26 00:03 initial-setup-ks.cfg
      drwxr-xr-x. 2 root root    6 Feb 26 00:05 Music
      drwxr-xr-x. 2 root root    6 Feb 26 00:05 Pictures
      drwxr-xr-x. 2 root root    6 Feb 26 00:05 Public
      drwxr-xr-x. 2 root root    6 Feb 26 00:05 Templates
      -rw-r--r--. 1 root root    0 Feb 27 22:37 test.txt
      drwxr-xr-x. 2 root root    6 Feb 26 00:05 Videos
      [root@rocky2 ~]# chown user1.user1 test.txt
      [root@rocky2 ~]# ls -l | grep test.txt
      -rw-r--r--. 1 user1 user1    0 Feb 27 22:37 test.txt
      # chown 소유주 a.txt -> 소유주 변경
      [root@rocky2 ~]# chown root test.txt
      [root@rocky2 ~]# ls -l | grep test.txt
      -rw-r--r--. 1 root user1    0 Feb 27 22:37 test.txt
      [root@rocky2 ~]# 
      
      # chown .그룹 a.txt -> 그룹 변경
      [root@rocky2 ~]# chown .root test.txt
      [root@rocky2 ~]# ls -l | grep test.txt
      -rw-r--r--. 1 root root    0 Feb 27 22:37 test.txt

      → 둘 다 바꾸고 싶으면 chown 소유주.그룹 a.txt



IP

@윈도우 명령 프롬프트(CMD)에 ipconfig, ipconfig /all

→ 내 컴퓨터의 ip주소, 서브넷마스크, 기본 게이트웨이 등을 확인

무선 LAN 어댑터 Wi-Fi:

   연결별 DNS 접미사. . . . :
   설명. . . . . . . . . . . . : Intel(R) Wi-Fi 6 AX201 160MHz
   물리적 주소 . . . . . . . . : E4-FD-45-79-B7-A6
   DHCP 사용 . . . . . . . . . : 예
   자동 구성 사용. . . . . . . : 예
   링크-로컬 IPv6 주소 . . . . : fe80::e63b:849:b14b:25f1%10(기본 설정)

   IPv4 주소 . . . . . . . . . : 192.168.1.131(기본 설정)
   서브넷 마스크 . . . . . . . : 255.255.252.0
   임대 시작 날짜. . . . . . . : 2025225일 화요일 오후 3:00:47
   임대 만료 날짜. . . . . . . : 202531일 토요일 오후 12:58:43
   기본 게이트웨이 . . . . . . : 192.168.0.1
   DHCP 서버 . . . . . . . . . : 192.168.0.1
   DHCPv6 IAID . . . . . . . . : 182779205
   DHCPv6 클라이언트 DUID. . . : 00-01-00-01-2B-D9-B0-A6-8C-B0-E9-4B-4B-7E
   DNS 서버. . . . . . . . . . : 168.126.63.1
                                 203.248.252.2
   Tcpip를 통한 NetBIOS. . . . : 사용
  • MAC 주소: 물리적 주소. 수정X
  • IP: 사람에게 이름 같은 것. 논리적 주소. 수정O
  • NIC(Network Interface Card): 컴퓨터를 네트워크에 연결하여 통신하기 위해 사용하는 하드웨어 장치

IP: Internet Protocol

  • IPv4: 4개의 옥텟(8비트): __.__.__.__ (8비트*4 = 32비트)

  • IPv6: 128비트(구분자: :)

  • IPv4 할당 방식에 따른 구분

    • static: 관리자가 직접 입력
    • dynamic: DHCP 프로토콜, 반드시 DHCP 서버
  • IP 유형에 따른 구분

    • 사설 IP(Private IP): 비용 지불X
      • 10.x.x.x
      • 172.16.x.x ~ 172.31.x.x
      • 192.168.x.x
    • 공인 IP(Public IP): ISP에 비용을 지불해서 IP를 제공 받고, 인터넷을 사용함. unique
  • VPC 구조 (virtual private cloud)

10.0.1.0 → 사설IP. 인터넷 안됨
따라서 공인IP로 바꿔줘야 인터넷이 가능하다

  • 네트워크: 공통된 목적을 갖는 집단

    • Local Area Network → LAN (같은 목적을 가진 집단이 가까이 모여 있는 것)
    • Wide Area Network → WAN (같은 목적을 가진 집단이 멀리 떨어져 있는 것)
    • KT는 서울에서 부산까지 케이블을 깔아놓음 → 필요시 KT에 비용을 지불하고 회선을 사용함
    • 싱가폴, 삼성동, 도쿄는? WAN으로 연결, Internet 연결
    • 인터넷은 본사(싱가폴)에만 연결. → 도쿄 직원이 인터넷을 하고 싶으면 싱가폴을 거쳐서 인터넷을 한다. → 본사에서 도쿄 직원을 인증해야함. → 여기서 필요한게 인증서버 → 인증서버를 통해서 도쿄 직원을 인증함. → 실제 우리 회사 직원인지 아닌지 인증하는 절차
    • 위의 방식에서 생길 수 있는 문제
      • 속도가 느려질 수 있다 → WAN 가속기 이용
  • 홍철수

    • 홍: 네트워크 영역
    • 철수: 호스트 영역
      • 네트워크 내에서는 유니크한 호스트 네임을 가져야한다.
  • 서브넷마스크: ip의 네트워크 영역, 호스트 영역을 구분하는 구분자

  • ipv4의 주소 범위: 0.0.0.0 ~ 255.255.255.255

    • 연속된 1: 네트워크 영역
    • 연속된 0: 호스트 영역

✔️ 172.16.0.0, 255.255.0.0 가 있을 때

172.16.0.0 은 ip/네트워크 주소/브로트캐스트 중에 어떤 것일까?

→ 네트워크 주소

✔️ 192.168.3.227, 255.255.252.0에서 192.168.3.227은?

→ 호스트 주소

  • prefix: IP 주소에서 네트워크와 호스트를 구분하는 비트 개수
    prefix서브넷 마스크
    /16255.255.0.0
    /24255.255.255.0
    /30255.255.255.252

Quiz 3.

우리가 사용하는 VPC 주소는 172.31.0.0/16 이다.

내부적으로 두개의 서브넷을 사용하여 public, private 구간에 서버를 배치할 계획이다.

각 서브넷에는 30대의 서버가 배치될 예정이다. 적절한 네트워크 주소는?

💡

172.31.0.0/16    172.31.0.0 N-.N-.H-.H => 172.31.0.0 ~ 172.31.255.255

            N-.N-.N-.NNNHHHHH (255.255.255.224) /27

                          0 : 0

                          1 : 32

                          10: 64

VPC 주소가 172.31.0.0/16이라면, VPC 내에서 사용할 수 있는 IP 주소 범위는 172.31.0.0부터 172.31.255.255까지입니다. 이 범위는 총 65,536개의 IP 주소를 제공합니다.

여기서 두 개의 서브넷을 사용하여 publicprivate 구간을 설정할 계획이며, 각 서브넷에는 30대의 서버가 배치될 예정입니다. 이를 기반으로 적절한 서브넷을 계산해보겠습니다.

1. 서브넷 크기 계산

서브넷에는 30대의 서버가 배치되어야 하므로, 각 서브넷에 30개 이상의 IP 주소가 필요합니다. 이 경우, 서브넷마다 최소 32개의 IP 주소가 필요합니다. 왜냐하면, 서브넷에서 첫 번째 주소는 네트워크 주소로 사용되고, 마지막 주소는 브로드캐스트 주소로 사용되기 때문에 실제로 사용 가능한 IP 주소는 30개입니다.

  • 서브넷에서 최소 32개의 IP 주소를 제공하려면 /27 서브넷 마스크를 사용해야 합니다.
    • /27 서브넷은 32개의 IP 주소를 제공합니다. 이 중 30개는 호스트에 할당되고, 나머지 2개는 네트워크 주소와 브로드캐스트 주소로 사용됩니다.

2. 서브넷 나누기

172.31.0.0/16 범위에서 두 개의 서브넷을 분리해야 하므로, 172.31.0.0/16/27 서브넷 마스크로 나누는 방법을 살펴보겠습니다.

a. 첫 번째 서브넷 (Public Subnet)

  • 서브넷 네트워크 주소: 172.31.0.0/27
  • 이 서브넷의 IP 주소 범위는 172.31.0.0부터 172.31.0.31까지입니다.
  • 사용 가능한 IP 범위: 172.31.0.1부터 172.31.0.30까지 (30개 서버 IP)

b. 두 번째 서브넷 (Private Subnet)

  • 서브넷 네트워크 주소: 172.31.0.32/27
  • 이 서브넷의 IP 주소 범위는 172.31.0.32부터 172.31.0.63까지입니다.
  • 사용 가능한 IP 범위: 172.31.0.33부터 172.31.0.62까지 (30개 서버 IP)

3. 서브넷 주소 요약

서브넷 이름서브넷 네트워크 주소서브넷 마스크사용 가능한 IP 범위사용 불가 IP
Public Subnet172.31.0.0/27255.255.255.224172.31.0.1 - 172.31.0.30172.31.0.0 (네트워크 주소), 172.31.0.31 (브로드캐스트 주소)
Private Subnet172.31.0.32/27255.255.255.224172.31.0.33 - 172.31.0.62172.31.0.32 (네트워크 주소), 172.31.0.63 (브로드캐스트 주소)

4. 서브넷 나누기 상세 설명

  • 서브넷 마스크 /27는 32개의 IP 주소를 제공하며, 이 중 네트워크 주소와 브로드캐스트 주소를 제외한 30개의 IP 주소를 호스트에 할당할 수 있습니다.
  • 첫 번째 서브넷 (172.31.0.0/27)은 공용(public) 서브넷으로 사용할 수 있으며, IP 주소 범위는 172.31.0.1에서 172.31.0.30까지입니다.
  • 두 번째 서브넷 (172.31.0.32/27)은 사설(private) 서브넷으로 사용할 수 있으며, IP 주소 범위는 172.31.0.33에서 172.31.0.62까지입니다.

5. 결론

  • Public Subnet (첫 번째 서브넷): 172.31.0.0/27
  • Private Subnet (두 번째 서브넷): 172.31.0.32/27

이 두 서브넷은 각각 30개의 서버를 배치할 수 있는 충분한 IP 주소를 제공합니다.


GNS3 실습

  • ethernet 0, 1 사용해서 연결
  • 라우터 오른버튼 → start 클릭 → ctrl+shift+esc → 작업관리자 열림 → dynamips CPU 퍼센테이지 확인 → 약 5~15% → 라우터 오른 버튼 → auto idle-PC 클릭→ 작업관리자에서 dynamips CPU 퍼센테이지가 0~1%로 떨어진 것 확인
  • 라우터 오른버튼 → console → enter enter enter … →

config t
int f0/0
ip add 172.16.1.1 255.255.255.0
no sh

int f0/1
ip add 172.16.2.1 255.255.255.0
no sh

do show ip route

  • PC1 PC2 통신되는지 확인
    PC1, PC2 둘 다 오른버튼에 start, console 순차적으로 눌러줌
    <PC1>
    ip 171.16.1.10/24 171.16.1.1
    <PC2>

ip 171.16.2.10/24 171.16.2.1

<PC1>

ping 172.16.2.10
arp
ping 172.16.2.10

profile
좋아 가는거야

0개의 댓글