GNS3 - 10
※ 이전 포스팅에서 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를 내부 사설 ip 대역으로 설정한다.
-> 지금 설정되어 있는 대역을 위와 같은 사설 ip로 모두다 변경한다. S1 ~ S55에 해당하는 서버 장비의 IP는 오버라이드 되기 때문에 따로 지우지 않아도 되지만 default route 설정은 no로 지워준 뒤 설정해야한다.
# R1 ~ R6의 라우터 장비들의 f 0/0 , f 2/0도 꼭 들어가서 사설 ip 대역으로 바꿔주는 것을 잊지 않아야한다. 인터페이스가 서로 연결되는 것이기 때문에 각각 설정해야한다. #
※ 그렇다면 inside에 해당하는 인터페이스를 생각해보자.
- outside 확인하기
※ 문법 적용하기
※ debugging 해보기
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
※ 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
※ 이렇게만 하고 핑을 치면 라우팅이 되지 않아 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
※ 트러블 슈팅을 했다.
1. router 경로 설정이 잘된 건지부터 봤다.
-> 위에서 ip route 경로를 줄 때 S22에서 내 대역인 24.1.1.0을 써준 것을 확인했다.
-> 목적지 경로인 42.1.1.0 대역으로 변경했다.
-> 다시 핑 시도
- show int b, show ip route로 각 장비의 ip 설정에 이상이 없는지 확인했다.
- router 경로에는 이상이 없는데... 인터페이스의 주소가 장비쪽이 변하지 않았다...!!!

네크워크 문제 인 것 같다는 결론과 함께...정적 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 로 확인하기