공인 IP 한 개를 이용하여 내부 사용자들이 서버 1대 외부에서 제공할 수 있는 환경을 만든다. 서버 관리자가 외부네트워크 SSH를 통해 내부 서버를 접속 할 수 있게 한다. Security를 적용해 지정된 IP에서만 가능하도록 한다.
(사설 IP)
외부네트워크—————-Router ———-내부네트워크
(인터넷) 우리회사 내부 서버들(웹/DB/스토리지)
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 # 연결 되는 지 확인
통신 안되는 것
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 : 포트 번호까지 확인
시나리오
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 # 파일의 내용을 봄
# 만약에 >> 로 한다면 그 밑에 덧붙여짐. >은 새로 쓰는 것
퇴근한 서버 관리자는 집에서 웹서버로 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 잘못된 것 삭제하고 싶다면
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