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 에서 인스턴스에다가 public ip 주소 하나를 고정
동적 PAT 구성(일반적으로 공유기에서 제공하는 기능)
conf t
access-list 1 permit any
ip nat inside so list 1 int fa0/0 overload
int fa0/0
ip nat outside
int fa0/1
ip nat inside
do ping 8.8.8.8
- gns3 에서 fa0/0, fa0/1 둘의 링크에서 icmp 패킷 캡처해보면 ping 을 보낼 때 request 패킷에서 fa0/0, fa0/1 src 가 변경되는 것을 확인 가능
- reply 패킷에서는 dst 가 라우터에서 변경되고 있는 것을 볼 수 있다.
정적 PAT
시나리오
외부에 있는 사용자들은 192.168.1.1xx:8001 포트로 접속할 경우,
내부에 있는 사설 주소인 172.16.1.100 의 80번 포트로 접속되도록 한다.
192.168.1.1xx:8001 = 172.16.1.100:80
systemctl start httpd
echo "HELLO HWARANG" > /var/www/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 잘못된것 삭제하고 싶다면?
- do show run 으로 확인
- no [복사한 라인]
- 만약 사용중이라는 단어가 보이면
- do clean ip nat trans *
- 강제로 nat 테이블 삭제
- "2" 를 다시 실행
SSH 연결 설정 맛보기
ssh-keygen -q -f ~/.ssh/id_rsa -N ""
id_rsa : private key
id_rsa.pub : public key
ssh -i id_rsa 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 다시 날려서 알아내야함
웹 서버 접속 과정
- client 에서 www.test.com 으로 접속을 하려고 함
a. 캐시를 먼저 검색해서 해당 domain으로의 기록이 있는지 확인
b. 자신의 hosts 파일을 검색해서 해당 domain의 IP가 있는 지 확인
c. 자신의 DNS에게 해당 domain의 IP를 알기위해서 Query를 보냄
- www.test.com 의 IP를 물어보는 요청이 DNS에 도착
a. DNS 서버는 DB에서 해당 Domain의 IP를 검색
- www.test.com의 서버는 미리 domain에 대한 자신의 IP를 DNS 서버에 등록해둬야한다.
b. 찾은 IP를 client에게 응답
- 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 연결을 한다.
- 연결 후, client의 HTTP 요청에 따라 server는 응답
- 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