[클라우드 With네트워크/GNS실습(1)]

SooYeon Yeon·2022년 7월 18일
0

실습하기

시나리오

공인 IP 한 개를 이용하여 내부 사용자들이 서버 1대 외부에서 제공할 수 있는 환경을 만든다. 서버 관리자가 외부네트워크 SSH를 통해 내부 서버를 접속 할 수 있게 한다. Security를 적용해 지정된 IP에서만 가능하도록 한다.

                                                          (사설 IP)

외부네트워크—————-Router ———-내부네트워크

(인터넷) 우리회사 내부 서버들(웹/DB/스토리지)

실습할환경

GNS

conf t # configure terminal과 같음
  • 인터페이스 구축
int fa0/0 # fa0/0으로 접근
ip add 192.168.1.114 255.255.255.0 # ip 할당, 서브넷마스크 할당
no sh # no shutdown
  • 통신 가능한지 확인
do ping 192.168.1.199 # 연결 되는 지 확인

  • 다른 IP로 ping 보내기

  • 나 → 강사님 (request) Frame

통신 안되는 것

  1. 안보냈을때
  2. 목적지 가는데 응답이 안오는 경우

192.168,1,1 (게이트웨이)로 보내준다

리눅스

a = "hello" # 하면 안됨. a하고 공백있으면 a를 명령어로, 그 다음을 매개변수로 취급
a="hello"
echo %? # 결과값, 0번 제외한 모든 건 오류

ip 주소

ifconfig ens32

왼쪽 결과를 오른쪽의 입력으로, 이 결과중에 172.16.1이 있는 친구만 보여주기

ifconfig ens32 | grep 172.16.1 # 해당 라인 행을 골라냄
ifconfig ens32 | grep 172.16.1 | gawk '{print $1}' # 열을 기준으로골라냄 : inet 나옴
ifconfig ens32 | grep 172.16.1 | gawk '{print $2}' # 열 그 옆에거 : 172.16.1.128 나옴

리눅스에서는 ping 보낼 때 라우터로 보내는데 5번만

ping 172.16.1.2 -c 5

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

access-list 1 permit any # 변경할 주소 지정
ip nat inside so list 1 int fa0/0 overload
	# "ip nat" 주소 변경할게!
	# "inside source list1" 주소를 변경할 출발지 주소는 list1에 지정된 친구들이야]
	# "int fa0/0" fa0/0(192.168.1.x)에 할당된 공인 주소로 변경할게
	# 여기까지는 NAT #
	# "overload" PAT 활성화 -> 즉, 다수의 사설 주소가 fa0/0의 주소를 공유
	# fa0/1에 연결되어있는 모든 ip들이 0/0으로 빠져나올때 모든 IP는 fa0/0에할당된 공인주소로 변경해 0/0으로 내보낸다는 뜻
int fa0/0
ip nat outside
int fa0.1
ip nat inside

이렇게 설정했으니, 이제 리눅스에서 인터넷으로 나가는 거 가능해짐

destination은 똑같은데, 나갈 때와 들어올 때 출발지IP 달라짐

외부로 빠져나갈 때 192.168.1.199로 빠져나와서 나가게 됨

http://192.168.1.1xx ——> Router ——→ 172.168.1.100:80

정적 PAT : 포트 번호까지 확인

시나리오

  • 외부에 있는 사용자들은 192.168.1.1xx:8001 포트로 접속할 경우 내부에 있는 사설 주소인 172.16.1.100의 80번 포트로 접속되도록 한다.
  • 192.168.1.1XX;8001 = 172.16.1.100:80으로 정적으로 매핑 해야함

ip nat inside so static tcp 172.168.1.100 80 int fa0/0 8001

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

웹서버 httpd는 동작중이어야 하며, 방화벽은 해제 되어 있는 상태여야 한다.

리눅스에서 실행

systemctl start httpd # 웹서버 실행
echo "HELLO ALL" > /var/www/html/index.html # 출력을 index.html파일에 하겠다는 뜻
systemctl stop firewalld # 방화벽 종료
cat /var/www/html/index.html # 파일의 내용을 봄

# 만약에 >> 로 한다면 그 밑에 덧붙여짐. >은 새로 쓰는 것

Quiz

퇴근한 서버 관리자는 집에서 웹서버로 ssh 연결을 시도하고자 한다.

아래와 같은 방법으로 접속이 가능해야 한다.

ssh -l root -p 20022 192.168.1.199

이렇게 접속을 시도하면, 내부에 있는 리눅스 웹서버로 ssh 연결이 가능해야 한다. 화면에는 public key를 저장할 것인지를 물을 것이고 yes를 타이프 한 후에 패스워드인 test123을 입력하면 정상적으로 원격지 서버에 접속할 수 있어야 한다.

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

ip nat ins so st tcp 172.16.1.100 22 int fa0/0 20022 

하고 ssh로 리눅스에서 확인해보면 됨

NAT 잘못된 것 삭제하고 싶다면

  1. do show run 으로 확인
  2. no [복사한 라인]
  3. 만약 사용중이라는 단어가 보이면
    1. do clear ip nat trans * : 강제로 테이블 삭제
  4. “2”를 다시 실행
ssh -l root -p 20022 192.168.1.199 hostname # 들어가지 않고 해당명령어(hostname)을 실행해서 나한테 보내주세요
ssh -l root -p 20022 192.168.1.199 ifconfig # 들어가지않고 그 사람의 ip 확인 가능
cd # root의 홈디렉토리로 이동
ls -al # 숨긴 폴더, 상세정보까지 보여주는 옵션
# 파란색-디렉토리, 검정색-파일 / .은 현재 디렉토리 ..은 상위 디렉토리
# .ssh 숨겨져있는 것임

ssh 들어가기

public key를 가지고 있어야 데이터 전송 시 암호화 가능

클라우드에서는 key-pair을 이용함. public은 서버가 가지고, private은 나에게 주는 것

템플릿으로 찍어낼 때 public key를 거기에 집어넣고 나는 private을 가지면 됨

인스턴스 생성시 키페어를 만들음. 이 public key를 넣어서 인스턴스 만듦

ssh-keygen -q -f ~/.ssh/id_rsa -N ""
ls
cat id_rsa.pub
cat id_rsa

ssh -i id_rsa localhost
exit

0개의 댓글