Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
세팅 환경
제시된 순서대로 네트워크를 구성해 나가보자.
1. IP 세팅
2. 동적 Routing (OSPF)
3. ACL로 NAT 내의 사설망은 외부 통신 차단.
4. NAT로 다시 외부로 통신을 가능하게 만듬.
1. IP 세팅
IP는 위 사진과 같이 할당해 준다.
#NAT
conf t
int loopback 0
ip add 10.10.1.1 255.255.255.0
int loopback 1
ip add 10.10.2.1 255.255.255.0
int loopback 2
ip add 10.10.3.1 255.255.255.0
int s1/0
ip add 1.19.12.1
no sh
#R2
conf t
int s1/0
no ip add 1.19.12.2 255.255.252.0
ip add 1.19.12.2 255.255.255.0
no sh
int s1/1
no ip add 1.19.23.2 255.255.252.0
ip add 1.19.23.2 255.255.255.0
no sh
#ISP
conf t
int s1/1
ip add 1.19.23.3 255.255.255.0
no sh
2. OSPF, 동적 라우팅 적용
이 상태에서는 인접 디바이스에게만 통신이 가능하다.
따라서 라우팅을 진행해야 한다.
R2 라우터와 ISP 라우터는는 NAT 내부의 네트워크(Loop_back)를 모른다.
반대로 NAT 라우터는 R2 너머의 네트워크를 모른다.
수가 적으므로 Static으로 간단히 해결할 수 있지만, 문제에서 제시한 대로 동적 라우팅 프로토콜인 OSPF를 사용하자.
OSPF
OSPF 란 (Open Shortest Path First), IP 네트워크를 위해 개발된 링크 상태 라우팅 프로토콜이다. 링크 상태 프로토콜은 인터넷에서 연결된 링크의 상태를 감시하여 최적의 경로를 선택한다.
지속적인 감시로 인해 같은 Area로 묶인 네트워크의 인접 라우터에게 계속 Hello packet이 나간다. 만약 인접 라우터에서 응답(Line keep Alive)이 없다면, 문제가 발생한 것으로 판단해 해당 라우터와의 라우팅 관계를 끊는다.
인접 라우터와 라우팅 테이블을 공유해 나가면, 최종적으로 같은 Area 내의 라우터끼리 서로의 라우팅 경로를 알게 된다.
와이어 샤크로 확인해보면, 목적지 주소는 Area 내부의 모든 디바이스가 수신 가능하도록 멀티캐스트(224.0.0.5) 주소로 보내게 된다.
224.0.0.5는 IP 멀티캐스팅을 위해 예약된 IPv4 멀티캐스트 주소 중에서, OSPF 용으로 사용된다.
RIP(Routing Information Protocol)
OSPF 이전에 사용되던 라우팅 프로토콜이다.
네트워크의 급속한 성장과 확장으로 인해 RIP(Routing Information Protocol)는 대규모 네트워크에 사용되기에는 한계점이 있다.
- RIP는 15개의 홉으로 제한된다. 15개를 초과하는 홉(15개를 초과하는 라우터)에 걸쳐 있는 네트워크는 연결할 수 없는 것으로 간주된다.
- RIP는 가변 길이 서브넷 마스크(VLSM)를 처리할 수 없다. IP 주소가 부족하고, VLSM을 사용하면 IP 주소를 유연하게 효율적으로 할당할 수 있다는 점을 감안하면 이는 중대한 결함으로 간주된다.
세팅
#NAT OSPF
conf t
router ospf 1 #1번을 같이 사용해야 함.
network 10.10.1.0 0.0.0.255 area 0 # 해당 라우터와 연결된 모든 네트워크를 지정
network 10.10.2.0 0.0.0.255 area 0 #모두 Area 0으로 묶어주자.
network 10.10.3.0 0.0.0.255 area 0
network 1.19.12.0 0.0.0.255 area 0
network 1.1.1.0 0.0.0.255 area 0
#R2 OSPF
conf t
router ospf 1
network 1.19.12.0 0.0.0.255 area 0
network 1.19.23.0 0.0.0.255 area 0
#ISPF OSPF
conf t
router ospf 1
network 1.19.23.0 0.0.0.255 area 0
3. ACL로 NAT 내의 사설망은 외부 통신 차단
현재 모든 트래픽은 R2을 지나가고 있다.
사설망의 트래픽이 ISP로 전달되지 않도록 하려면, R2에서 방어 하는 것이, NAT의 모든 회선에 ACL을 적용하는 것보다 효과적일 것이다.
NAT의 s1/0의 outbound가 더 적절해 보일 수 있지만, Cisco router는 자신이 만든 패킷에 대해서는 ACL 검사를 하지 않고 내보낸다.
현재 NAT는 Loop back으로 가상의 PC들을 구성해 두었기 때문에 R2의 s1/0의 inbound에서 방어하겠다.
#ACL to R2
ip access-list standard dontgo
deny 10.10.0.0 0.0.3.255
permit any
interface s 1/0
ip access-group dontgo in
2번에서 ping이 날라갔지만, 이번에는 방어되었다.
4. NAT로 다시 외부로 통신을 가능하게 만들기
NAT를 사용하면 사설망의 private ip를 public ip로 변환하여 내보낼 수 있다.
이때 각 ip의 개수에 따라서 NAT를 쓸지, NAT-PAT를 쓸지 갈린다.
if (public ip 개수 >= private ip 개수) NAT;
else PAT;
NAT(Network Address Translation)
public ip 개수가 private ip 개수와 같거나 많으면, 1:1로 매칭시켜 주소 변환을 진행 한 후 내보내면 된다.
public ip 개수가 한정적이라면, port까지 동원해서 매핑을 시킨다. 따라서 제한적인 public ip로도 사설망의 ip들을 변환시켜 내보낼 수 있다.
일종의 포트 포워딩이라고 볼 수있다.
단, 내부에서 외부로의 진출은 다른 port로 변환되어 가능하지만, 반대로 외부에서 내부로 진입 시 동일한 포트 번호로 다른 자원들이 서비스 중이라면, 주소가 중복된다.
이런 경우, public ip가 1개 이상이거나, 망 분리가 필요할 수 있다.
수동으로 세팅하기 보다는, NAT 명령어를 통해 자동으로 할당해 주자.
#NAT
int loopback 0
ip nat inside
int loopback 1
ip nat inside
int loopback 2
ip nat inside
int s 1/0
ip nat outside #나가는 출구만 outside로 설정
access-list 1 permit 10.10.0.0 0.0.3.255 #private ip 대역대 설정
ip nat pool PUBLIC_IP 1.1.1.1 1.1.1.254 netmask 255.255.255.0 #사용 가능한 public ip 설정
ip nat inside source list 1 pool PUBLIC_IP overload #두 ip를 PAT로 매칭(overload x 시 only NAT)
show ip nat translations
NAT로 인한 OSPF라우팅 경로 TS
이제 loopback이 public ip인 1.1.1.0/24로 변환되어 나간다. 1.1.1.0/24로 변환되었기 때문에, 3번에서 적용한 ACL에도 걸리지 않고 ISP 까지 도달가능하다.
하지만 ping으로 날린 ICMP 패킷이 돌아오지 않는데, 그 이유는 1.1.1.0/24 대역에 대한 라우팅 테이블 정보가 없기 때문이다.
따라서 1.1.1.0/24 대역을 추가로 광고해주어야 한다.
#NAT OSPF
conf t
router ospf 1
network 1.1.1.0 0.0.0.255 area 0
그럼에도 불구하고, OSPF를 통해 1.1.1.0/24 대역에 대한 라우팅 경로가 다른 라우터에 전달되지 않는다.
그 이유로는 osfp로는 자신의 라우터에 존재하지 않는 네트워크 대역을 광고할 수 없는 것으로 예상된다. 만약 자신의 네트워크가 아님에도 자신으로 들어오도록 광고한다면, 다른 네트워크의 패킷을 탈취할 수 있으므로 OSFP 자체가 이런 악용을 차단하는 것으로 보인다.
따라서 NAT라우터에 1.1.1.0/24 대역에 대한 Loopback을 추가로 만들어주면, 정상적으로 모든 라우팅 경로가 전달된다.
와이어 사크를 통해 10.10.3.1인 출발지 IP가 1.1.1.1로 변환된 것을 확인할 수 있다.
'개발 > 네트워크 & Ubuntu' 카테고리의 다른 글
[GNS3] DHCP 서버를 ip helper-address로 다른 네트워크에서 사용하기 (1) | 2024.01.25 |
---|---|
Router ACL 적용해보기 (2) | 2024.01.25 |
[GNS3] L3 switch Access mode와 Trunk mode (VLAN) (1) | 2024.01.21 |
[GNS3] static Routing 세팅 (VLAN, SubInterface) (1) | 2024.01.21 |
GNS3를 사용한 static Routing 테스트 (1) | 2024.01.21 |