Cloud 실습 (1-2) - NAT, PAT 기능을 사용한 외부 네트워크 통신 실습, SSH

Hwarang Goh·2022년 7월 10일
0

Kakao Cloud School

목록 보기
7/13
post-thumbnail

Cloud 실습 (1-2) - NAT, PAT 기능을 사용한 외부 네트워크 통신 실습


이 실습은 Cloud 실습 (1-1)에서 이어지고 있습니다.
앞의 내용을 참고하세요.

NAT (Network Address Translation)

  • 사설 IP 주소 하나를 특정 공인 IP 주소로 변경하는 것
    • 사실 그냥 IP 주소 변환이 더 어울리는 설명
      (사설-사설, 사설-공인, 공인-공인 모두 가능)

  • 동적 NAT
    • 공인 주소 여러개는 공인 주소 pool 에 담겨 있고 공인 주소를 요청하는 사설 주소가 이를 요청했을 경우, pool 에 있는 공인 주소를 꺼내어 연결해준다. 따라서 공인주소와 사설 주소는 지정되지 않는다.
      (그때그때 할당 받는 IP가 다를 수 있음)

  • 정적 NAT
    • 특정 사설 주소는 무조건 지정된 공인주소를 사용하도록 정적으로 매핑해 두는 기술
    • server 는 이 방법을 씀
      매번 서버의 IP가 바뀌면 서버에 접속하기 어려움

PAT (Post Address Translation)

  • 공인주소가 1개인 경우 다수의 사설 주소가 한개의 공인 주소를 공유하여 주소 변경을 하고자 하는 방법
  • port 번호를 이용

참고할 내용: AWS 탄력적 IP 주소

  • AWS 에서 인스턴스에다가 public ip 주소 하나를 고정

동적 PAT 구성(일반적으로 공유기에서 제공하는 기능)

# router console 에서 실습, 이 실습은 Cloud 실습 (1-1)에서 이어집니다.
conf t
access-list 1 permit any
# 변경할 주소 지정 (모든 IP(any) 를 확인하도록 list 1 에 지정)

ip nat inside so list 1 int fa0/0 overload
# "ip nat" 주소 변경할 때
# "inside source list 1" 주소를 변경할 출발지 주소는 list 1에 지정된 ip 리스트임
# "int fa0/0" fa0/0(192.168.1.101) 에 할당된 공인주소로 변경한다는 뜻
# 여기까지는 NAT 임
# "overlaod" PAT 활성화, pool 의 ip 들을 중복해서 사용
# 다수의 사설 주소가 fa0/0 의 주소를 공유!

int fa0/0
ip nat outside
int fa0/1
ip nat inside
# fa0/1 로 들어와서 fa0/0 으로 빠져나갈때 주소를 바꿀거임

do ping 8.8.8.8
  • gns3 에서 fa0/0, fa0/1 둘의 링크에서 icmp 패킷 캡처해보면 ping 을 보낼 때 request 패킷에서 fa0/0, fa0/1 src 가 변경되는 것을 확인 가능
  • reply 패킷에서는 dst 가 라우터에서 변경되고 있는 것을 볼 수 있다.

정적 PAT

  • 공인 IP를 통해 내 사설 IP로 들어오는 것이 필요

  • 정적 PAT : 정해진 사설 IP 와 정해진 사설 IP 를 port를 이용해서 mapping
    http://192.168.1.1xx -----> Router -----> 172.16.1.100:80

시나리오

외부에 있는 사용자들은 192.168.1.1xx:8001 포트로 접속할 경우,
내부에 있는 사설 주소인 172.16.1.100 의 80번 포트로 접속되도록 한다.
192.168.1.1xx:8001 = 172.16.1.100:80

  • router console 에서
    ip nat inside so static tcp 172.16.1.100 80 int fa0/0 8001

    • 내부에 있는 사설 IP 주소인 172.16.1.100 의 tcp 포트번호 80 과 공인 IP 주소가 할당된 fa0/0 의 8001 포트를 정적으로 매핑하겠다!
  • VMware CentOS terminal 에서

systemctl start httpd # 웹서버 실행
echo "HELLO HWARANG" > /var/www/html/index.html # index.html 페이지 작성
# \>> 두개 쓰면 이어쓰기 > 하나만 쓰면 새로쓰기
systemctl stop firewalld # 방화벽 해제
  • VMware web browser에서
    http://192.168.1.1xx:8001 로 접속해봄
    • "HELLO ALL" 이 보이는 웹페이지 접속!
    • WiFi 환경에서 192.168.0.101:8001 로 접속하면 router 에서 TCP 연결할 때, RST 심어서 보내서 연결이 거부됨
      • 기억이 잘 안나는데, 원래 이 과정에서 내부 서버에서 자신에게 돌아오는 요청을 router에게 보내면 안됐었나...?
    • 아래 사진은 같은 WiFi에 연결된 다른 노트북에서 연결했을 때 나오는 화면
      • WiFi 환경에서, 같은 내부망의 다른 기기에서 접속한 화면(192.168.0.101:8001)

nat 잘못된것 삭제하고 싶다면?

  1. do show run 으로 확인
  2. no [복사한 라인]
  3. 만약 사용중이라는 단어가 보이면
    1. do clean ip nat trans *
      1. 강제로 nat 테이블 삭제
  4. "2" 를 다시 실행

SSH 연결 설정 맛보기

  • router console
# ssh 생성
ssh-keygen -q -f ~/.ssh/id_rsa -N ""
id_rsa : private key
id_rsa.pub : public key
ssh -i id_rsa localhost
# ssh 로 localhost 접속
ssh -l root -p 20022 192.168.1.101

화면에는 public key 를 저장할 것인지를 물을 것이고 yes를 타이프한 후 패스워드 인 test123 을 입력하면 정상적으로 원격지 서버에 접속할 수 있어야 한다.

참고로 ssh 서버의 기본포트는 22번이다

ssh 연결은 추후 나올 실습에서 하니 여기서는 읽고만 넘어가자.


ARP (Address Resolution Protocol)

  • 통신하고자 하는 목적지의 IP 주소를 이용하여 해당 목적지의 물리주소인 MAC 주소를 찾기위한 프로토콜이며 정상적으로 ARP 가 동작한 이후에는 ARP 테이블에 목적지 IP와 MAC 주소가 등록된다. 이후 자신이 최종적으로 원했던 통신을 하고자 한다면 ARP 테이블에 있는 정보를 참고하여 패킷을 완성하게 된다.
  • aging time 이 지나면 arp 테이블에서 목록이 삭제됨
  • 그 후에 다시 mac addr 알려면 arp 다시 날려서 알아내야함

웹 서버 접속 과정

  1. client 에서 www.test.com 으로 접속을 하려고 함
    a. 캐시를 먼저 검색해서 해당 domain으로의 기록이 있는지 확인
    b. 자신의 hosts 파일을 검색해서 해당 domain의 IP가 있는 지 확인
    c. 자신의 DNS에게 해당 domain의 IP를 알기위해서 Query를 보냄
  2. www.test.com 의 IP를 물어보는 요청이 DNS에 도착
    a. DNS 서버는 DB에서 해당 Domain의 IP를 검색
    • www.test.com의 서버는 미리 domain에 대한 자신의 IP를 DNS 서버에 등록해둬야한다.
      b. 찾은 IP를 client에게 응답
  3. client는 www.test.com의 IP를 통해 TCP 연결을 시도
    a. TCP 3-way handshake 과정을 진행하면서 client와 server는 TCP 연결을 완료(session established)
    • 3-way handshake : TCP 연결을 위한 과정으로써, SYN (요청) - SYN, ACK (응답 및 요청) - ACK (응답) 의 과정으로 TCP 연결을 한다.
  4. 연결 후, client의 HTTP 요청에 따라 server는 응답
  5. client는 server로부터의 응답을 받고 www.test.com에 대한 data를 받아볼 수 있게 되었다.

IP 맛보기

  • 는 ISP 에게 비용을 지불했느냐 여부에 따라, 공인[public]IP, 사설[private]IP 로 분류
  • 대표적인 사설 IP 주소 대역
    • 10.X.X.X
    • 172.16.X.X ~ 172.31.X.X
    • 192.168.X.X

0개의 댓글