Network/GNS3

GNS3 - 10

Glory-L 2022. 9. 17. 13:30

 

※ 이전 포스팅에서 SSH 접속이 왜 안되는지에 대한 의문점으로 이것 저것 찾아본 결론은 S1 -> R4까지의 통신상의 문제는 없었고 S1에서 디버그 작업 후 SSH 했을 때 R4까지 트래픽이 나갔다 왔다. 이 장비에서 대칭키로 암호화하는 SSH를 지원하지 않았다는 결론을 도출했다. 물론 내 의견이 틀렸을 수 있기 때문에 혹시 다른 의견이 있으시다면 댓글로 남겨주세요 :)

 

 

※ NAT [network address translation]

private address [내부의 사설 주소] -> public address [ 외부로 나가면서 공인 주소로 변환 - routing 대상이 되는 주소]

 

* private address는 너무 많아서 RFC1918의 규약으로 서로 약속을 해놓았다. 

 

1) 10.0.0.0 /8 

2) 172.16.0.0 /12

3) 192.168.0.0 /16

4) 127.0.0.1  ::1(ipv6 표기) : local loop address, self ping 

5) 169.254.x.x : ip를 찾을 수 없다고 알려주는 ip, 이것을 보고 ip가 169.254로 할당된 것이라고 착각 X

 

-> RFC 3330, 5735에 위와 같은 예약된 주소가 정의되어 있다. (위의 ip는 정해져 있는 ip)

 

 

※ NAT를 왜 사용하는가?

 

1. 망을 분리시켜서 보안을 강화할 수 있다.  

 

2. 대부분의 IPv4의 주소 부족 현상의 문제를 NAT 변환 테이블을 사용해서 IP 절약을 할 수 있다. (사설 IP 대역이 하나의 공인 IP 주소로 나갔다 들어오기 때문에)

* 그럼 IPv6는 NAT를 하지 않는지? 보안적인 측면을 위해서 IPv6도 NAT를 한다. 

 

 

※ NAT의 단점 

 

1.  주소 변환을 하는 과정에서 내부의 수많은 IP 대역으로 주소 변환 과정에서 연산 부하 심하다.

 

2. 통신 연결성 (공인 주소와 사설주소를 연결하는 과정에서 통신이 불안정한 경우가 있었다.) 

 

 

 

※ NAT 종류

 

연결 방법 사설주소  공인주소 특징
Static NAT 1 개 1개 - NAT 변환 테이블에 미리 정해짐

- 항상 주소가 정해져 있어서 외부에서도 바로 통신이 가능
Dynamic NAT m 개 m 개 - 공인 주소를 순차적으로 배분

- 내부에서 먼저 통신을 시작해야 NAT 테이블이 생긴다.

- 누가 먼저 나갈 지를 정하지 않아서 먼저 나가는 주소에 첫 번째 주소로 할당된다.

- 내부에서 통신이 이뤄지기 전에는 NAT 테이블이 없기 때문에 외부에서 통신이 불가능하다. 
PAT 약 6만개 1개 이상 - 약 6만개의 내부 사설 주소를 공인 주소로 1개 이상으로 변환

- 예를 들어, S라는 이름의 공인 주소로 변환하면 나가는 주소마다 순차적으로 S1 ~ S60000 형식의 이름으로 나가고 외부에서 들어올 때는 S라는 이름의 공인 주소로 들어온다. 

- 포트 변환 된다는 의미에서 Port Address Translation 

 

(ex)

 

S1  ---------------------------->     NAT 장비       ---------------------------------------------> S2

                       (나가면서 공인 IP 주소 변환)                                   (통신이 나간 적이 없어서 NAT 주소 변환 테이블이 없음)

                   (NAT 테이블에 S1 주소가 적힘)                                                ( 따라서 S1 핑을 drop 시킨다.)

S1    <------------------------    NAT장비        ---------------------------------------------------- S2 

         (NAT 테이블에 이미 주소가 적혀 있어 통신 가능)             (다시 내부에서 핑을 보내면서 NAT 주소 변환 테이블 생성)

 

S1     <---------------------------------------------------------------------------------------------------> S2

                                             (이제부터 서로 통신이 가능해진다.)

 

 

※ NAT 변환 순서 

 

1. inside(내부 사설 ip)와 outside(외부 공인 ip) 식별

 

2. 사설 주소 대역과 공인 주소 대역을 정해준다. --> Cisco 장비는 static nat의 경우, 따로 지정 안한다.

 

3. NAT 문법 작성 (위의 3가지 종류마다 다르다.)

 

ip nat inside source static [사설 내부 ip 주소]   [routing된 바꿀 주소] 

 

* NAT는 routing된 주소로 변환이 가능하기 때문에 routing이 사전에 꼭 routing table에 있어야 통신이 가능하다. 이전의 설정에서 이미 routing을 해놓은 상태이기 때문에 지금은 따로 설정하지 않았다. 

 

 

 

※ Cisco GNS3에서 Static NAT 변환 하기 

 

-> 이전에 저장했던 practice4-ip 파일 사용

 

ip 설정 확인 및 access-list 있는지 확인 후 있다면 지우기

 

- 지금 설정되어 있는 서버 ip를 내부 사설 ip 대역으로 설정한다. 

 

 

-> 지금 설정되어 있는 대역을 위와 같은 사설 ip로 모두다 변경한다. S1 ~ S55에 해당하는 서버 장비의 IP는  오버라이드 되기 때문에 따로 지우지 않아도 되지만 default route 설정은 no로 지워준 뒤 설정해야한다. 

 

# R1 ~ R6의 라우터 장비들의 f 0/0 , f 2/0도 꼭 들어가서 사설 ip 대역으로 바꿔주는 것을 잊지 않아야한다. 인터페이스가 서로 연결되는 것이기 때문에 각각 설정해야한다. #

 

 

설정을 끝낸 뒤 inside와 outside를 분리한다.

 

nat inside 설정해주기 , 살짝의 기다림이 있을 수 있는데 이건 과정에서 resource를 많이 잡아먹게 되고 가상의 메모리 할당 과정이 있기 때문에 느리다. NVI0이라는 인터페이스로 연결
show run으로 확인해보면 NVI0이라는 가상 인터페이스로 연결

 

주소 바꾸는 공간을 따로 만들어서 재조립한다.

 

※ 그렇다면 inside에 해당하는 인터페이스를 생각해보자.

 

 

동그라미 쳐둔 곳이 각 서버 NAT의 inside에 해당할 것이다.
각 인터페이스마다 NAT 설정을 해준다.
확인하기

 

- outside 확인하기 

 

동그라미 친 곳이 나가는 경로, outside 설정 해주기
각 장비(R1~R6) 인터페이스 확인 후 outside 설정 적용

 

※ 문법 적용하기 

 

 

10.1.10.1 -> 11.1.1.1로 변환해주는 명령

 

R6 10.1.20.1 -> 22.1.1.1 변경

 

routing lookup 과정 뒤에 S1에서 S2로 공인 주소인 22.1.1.1 ip로 찾아서 들어간다. (사설 주소는 10.1.20.1로 설정되어 있다.)

 

각각 장비에 설정한다.
S1에서 핑을 보냈을 때 모든 사설 ip들이 바뀐 공인 ip로 전달되는 것을 확인 할 수 있다.

 

※ debugging 해보기

 

R1에서 debug 설정

 

S1 -> 22.1.1.1로 핑 전달

 

전달 과정이 R1에 직혔다.

HO_R1#

 

1) S1 -> S22 보냄


*Mar  1 01:25:23.043: NAT*: i: icmp (10.1.10.1, 7) -> (22.1.1.1, 7) [35]

-> 만약 여기에 에러가 발생했다면 S1에서 R1으로의 통신 도달성의 문제가 발생했다는 것 


*Mar  1 01:25:23.047: NAT*: s=10.1.10.1->11.1.1.1, d=22.1.1.1 [35]

-> 만약 여기에 에러가 발생했다면 NAT 설정 자체가 잘못 된 것

 

2) S22 -> S1 응답 


*Mar  1 01:25:23.195: NAT*: o: icmp (22.1.1.1, 7) -> (11.1.1.1, 7) [35]

-> 만약 여기에 에러가 발생했다면 외부의 문제 (인터넷의 문제가 있다.)


*Mar  1 01:25:23.199: NAT*: s=22.1.1.1, d=11.1.1.1->10.1.10.1 [35]

-> 만약 여기에 에러가 발생했다면 이 역시도 NAT 설정 자체가 잘못 된 것

 

 

=============하단은 위의 메세지 반복 =======================
*Mar  1 01:25:23.223: NAT*: i: icmp (10.1.10.1, 7) -> (22.1.1.1, 7) [36]
*Mar  1 01:25:23.223: NAT*: s=10.1.10.1->11.1.1.1, d=22.1.1.1 [36]


*Mar  1 01:25:23.355: NAT*: o: icmp (22.1.1.1, 7) -> (11.1.1.1, 7) [36]
*Mar  1 01:25:23.359: NAT*: s=22.1.1.1, d=11.1.1.1->10.1.10.1 [36]
HO_R1#
*Mar  1 01:25:23.403: NAT*: i: icmp (10.1.10.1, 7) -> (22.1.1.1, 7) [37]
*Mar  1 01:25:23.407: NAT*: s=10.1.10.1->11.1.1.1, d=22.1.1.1 [37]
*Mar  1 01:25:23.543: NAT*: o: icmp (22.1.1.1, 7) -> (11.1.1.1, 7) [37]
*Mar  1 01:25:23.543: NAT*: s=22.1.1.1, d=11.1.1.1->10.1.10.1 [37]
*Mar  1 01:25:23.591: NAT*: i: icmp (10.1.10.1, 7) -> (22.1.1.1, 7) [38]
*Mar  1 01:25:23.591: NAT*: s=10.1.10.1->11.1.1.1, d=22.1.1.1 [38]
*Mar  1 01:25:23.707: NAT*: o: icmp (22.1.1.1, 7) -> (11.1.1.1, 7) [38]
*Mar  1 01:25:23.707: NAT*: s=22.1.1.1, d=11.1.1.1->10.1.10.1 [38]
*Mar  1 01:25:23.735: NAT*: i: icmp (10.1.10.1, 7) -> (22.1.1.1, 7) [39]
HO_R1#
*Mar  1 01:25:23.739: NAT*: s=10.1.10.1->11.1.1.1, d=22.1.1.1 [39]
*Mar  1 01:25:23.887: NAT*: o: icmp (22.1.1.1, 7) -> (11.1.1.1, 7) [39]
*Mar  1 01:25:23.887: NAT*: s=22.1.1.1, d=11.1.1.1->10.1.10.1 [39]
HO_R1#
*Mar  1 01:26:24.195: NAT: expiring 11.1.1.1 (10.1.10.1) icmp 7 (7)

 

 

 

※ S33과 S55 NAT 

 

빨간동그라미 : 내부 사설 ip 대역, 파란 동그라미 : 외부 공인 ip 변환 주소 대역

※ 33.1.1.1 과 55.1.1.1은 routing 한 적이 없기 때문에 routing 해줘야 한다. 

 

SK_R5 : 192.168.20.1 -----> 55.1.1.1

IX_R3 : 192.168.10.1 ---------> 33.1.1.1

 

do ping은 점프 문으로 바로 ping 가능하게 해준다.
ip 주소 설정 및 라우터 장비에 NAT 주소 변환까지 설정 완료

 

※ 이렇게만 하고 핑을 치면 라우팅이 되지 않아 Unreachable상태

 

 

라우팅 경로를 이렇게 설정하고자 한다.

 

R5

ip route 33.1.1.0 255.255.255.0 1.1.57.7

 

 

R7

ip route 33.1.1.0 255.255.255.0 1.1.37.3

ip route 55.1.1.0 255.255.255.0 1.1.57.5

 

R3

ip route 55.1.1.0 255.255.255.0 1.1.37.7

 

 

-> 이렇게 설정하면 위와 같은 경로로 오고가는 통신 routing 경로가 만들어진다. 

 

다시 핑을 찍으면 핑이 잘 도달하는 모습을 확인 할 수있다.

 

※ S22와 S44 NAT

 

위와 방식은 동일하고 ip만 남아있는 지정 사설 주소 ip로 변환 후 통신해보자
R4 설정
R2 설정

 

R7 설정
S22 설정
S44 설정

 

S22에서 아무리 핑을 쳐도 응답하지 않았다.
반대로도 마찬가지였다.

 

※ 트러블 슈팅을 했다. 

 

1. router 경로 설정이 잘된 건지부터 봤다. 

-> 위에서 ip route 경로를 줄 때 S22에서 내 대역인 24.1.1.0을 써준 것을 확인했다. 

-> 목적지 경로인 42.1.1.0 대역으로 변경했다. 

 

S22 설정 변경
S44 역시도 목적지 경로 변경

 

-> 다시 핑 시도 

여전히 안나간다.

 

- show int b, show ip route로 각 장비의 ip 설정에 이상이 없는지 확인했다. 

 

- router 경로에는 이상이 없는데... 인터페이스의 주소가 장비쪽이 변하지 않았다...!!!

 

 

S22 바로 변경
S44 -> S22로 핑 잘 전달되는데
???? 왜 안되지

 

 

네크워크 문제 인 것 같다는 결론과 함께...정적 routing은 귀찮고 어렵다는 것을 알게되었다..

 

 

※ Dynamic routing 

 

- 현재 상태에서 S1 -> S2로 Dynamic NAT 연결 

- S1, S2의 show ip int b, show ip route 확인 

 

위와 같은 대역으로 변경해준다.

 

※ 설정 문법 

 

R1
no ip nat inside source static .... (기존의 있던 static NAT 설정이 있다면 지워주기)

access-list 1 permit 10.1.10.0 0.0.0.255
access-list 1 remark S1_private_address

ip nat pool S1_pool 11.1.1.1 11.1.1.254 netmask 255.255.255.0

ip nat inside source list 1 pool S1_pool

 



R6
no ip nat inside source static ....

access-list 1 permit 10.1.20.0 0.0.0.255
access-list 1 remark S2_private_address

ip nat pool S2_pool 22.1.1.1 22.1.1.254 netmask 255.255.255.0

ip nat inside source list 1 pool S2_pool

 

 

ping 11.1.1.1

ping 22.1.1.1 로 확인하기