프로젝트 배경
- 사내에 한정된 IP 주소를 효과적으로 관리하고, 각 구역 별로 DHCP 서버를 운영하며 외부 DNS 서버를 사용하는 네트워크 환경을 구축하고자 한다.
프로젝트 목표
- 프로젝트가 잘 완성될 수 있도록 아래와 같은 목표가 설정됨
- 서브넷팅 : 주어진 IP 주소 범위를 서브넷팅하여 4개의 영역으로 분할
- 네트워크 구성 : 각 서브넷에 라우터, 스위치, DHCP 서버 구성
- DHCP 서버 운영 : 각 사이트별로 DHCP 서버를 운영하여 IP 주소 자동 할당
- 외부 DNS 서버 사용 : 외부 DNS 서버를 사용하여 도메인 이름 해석
- 네트워크 동작 검증 : 외부 사이트 접속을 통해 네트워크 동작 확인
- 네트워크 토폴로지 구성 사진

토폴로지 조건
- 각 사이트는 독립적인 서브넷을 가지며, 각 서브넷에는 라우터, 스위치, DHCP 서버 등 구성
- 주어진 서브넷 192.168.1.0/24을 4개의 서브넷으로 분할
- 서브넷 SITE 1 / SITE 2 / R1 – R3 / R2 – R4
- 서브넷의 첫 번째 IP 주소는 라우터에 할당
- 서브넷의 두 번째 IP 주소는 스위치에 할당
- 서브넷의 세 번째 IP 주소는 DHCP 서버에 할당
- 주의할 점이 존재한다. IP 서브넷을 설계할 때, 서브넷이 서로 중첩되지 않도록 계획하는 것이 중요하다. 만약, 작은 네트워크 공간을 먼저 설정한 후 큰 네트워크 공간에 중복된 범위를 이용한다면 충돌이 발생하게 된다.
- 주어진 조건을 표로 정리해 보았다.


구간별 토폴로지 구축
SITE
- 라우터에 IP 주소를 입력하는 방법은 1. 관리자 모드 접속(
en) 2. 환경 설정 터미널 접속(conf t) 해당 인터페이스에 접속(int g0/0(예시))하여 ip 주소와 서브넷 마스크 값을 입력(ip addr <ip 주소> <서브넷 마스크 값>)한 후 인터페이스를 활성화(no sh) 시켜주면 된다.
- 일반적으로 2계층 스위치(L2)에서는 VLAN 1이 기본 관리 VLAN이지만, 보안상 VLAN 99와 같은 별도의 VLAN을 관리 VLAN으로 사용되는 것을 권장한다.
- 3계층 스위치(L3) 에서는 라우터와 동일한 방식을 이용하여 IP 주소를 입력한다.
- 관리용 IP는 원격에서 SSH 프로토콜을 이용하여 스위치를 관리하기 위해 사용되는 IP 주소를 말한다.

- cisco packet tracer의 경우에는 PC나 Server에 IP 주소를 입력하는 방식은 아래와 같다.

- gateway는 다른 네트워크로 나가는 경로의 IP 주소를 입력하면 된다.
- 또한 DHCP로 PC에 IP 주소를 할당한다고 하였기 때문에 Service 탭에서 DHCP 를 활성화 해준다.

- PC에서는 이 DHCP 서버를 이용해 IP 주소를 받으면 된다.

SITE 내부에서 서로 연결이 잘되었는지 확인하기 위해서 PC1 에서 내부 IP 주소들로 ping 테스트를 수행해보았다.
Router-Router 사이
- 라우터 간 연결된 인터페이스를 확인한 후, ip 주소를 입력한다.
- 라우터 간 연결은 포인트-투-포인트(Point-to-Point) 링크이므로, 두 개의 IP만 필요하다. 따라서 /30 서브넷을 사용하여 네트워크 주소를 효율적으로 할당한 것을 위에서 보았다.



지금 까지 192.168.0.0/24 네트워크를 4개의 구역으로 나누는 서브넷팅을 수행했다.
외부 네트워크 연결
- 내부 네트워크(192.168.0.0/24)를 연결한 것과 마찬가지로 똑같이 작업을 수행하면 된다.
DNS 서버
- 먼저 dns 서버에 대한 IP 주소를 8.8.8.8로 할당해준다.
- dns 설정은 다음과 같이 수행해주면 된다.

- 해당 도메인에 대한 웹 서버들도 설정 해준다.

프로젝트 토폴로지가 구축이 완료되었다. 
- 하지만, 완전히 동작하지는 않는다. 같은 네트워크 대역 내에서는 브로드캐스트를 이용해 ping 테스트가 성공하지만, 라우터를 거쳐 다른 네트워크 주소로 패킷을 보내는 ping 테스트는 실패한다.
- 이는 라우터가 직접 연결된 네트워크 주소만 알고 있으며, 다른 네트워크로 가는 경로를 학습하지 않았기 때문이다. 쉽게 말하자면, 같은 마을 내에서는 정보를 알고 있지만, 다른 마을로 이동하기 위해서는 해당 마을로 길을 안내해 줄 지도(라우팅 테이블)가 필요하다.
- 지금 부터 우리는 라우팅 테이블 작업을 수행하고자 한다.
라우팅 테이블(Routing Table) 설정
- 라우팅 테이블은 라우터가 패킷을 목적지 네트워크 주소로 전달하기 위해 저장하는 경로 정보 목록이다. router에 설정된 라우팅 테이블을 확인하는 방법은 터미널 창에서
sh ip route를 입력하면 된다.
- 아래 사진은 현재 Router 1에 설정되어있는 routing table 이다. 직접 인터페이스로 연결되어있는 네트워크 주소외의 정보가 존재하지 않는다.

라우팅 테이블을 설정하는 방법은 크게 2가지로 정적 라우팅 설정을 하는 방법과 동적 라우팅 설정하는 방법이 존재한다.
이 프로젝트에서는 정적 라우팅을 설정한다. 정적 라우팅은 특정 목적지로 가는 경로를 수동으로 지정해주는 방식이라고도 이해하면 쉽다.예를 들어, A마을에서 C 마을로 이동하기 위해서는 B 마을로 반드시 이동해야 한다고 지정해두는 것이 정적 라우팅의 개념이라고도 한다.
- 모든 목적지 네트워크에 대한 정적 경로(Static Route)를 추가해보자. routing을 추가하는 방법은
ip route <네트워크 주소> <subnet mask> <다음 경로(Next-Hop)>로 입력하면 된다. 
- 이렇게 네트워크 마다 직접 입력하는 방법이 존재하고, 프로젝트에서는 R1에서 목적지 네트워크로 이동하는 경로가 하나이기 때문에 기본 경로(default route) 설정을 수행하여 설정하는 방법도 존재한다.
- R2에도 같은 케이스기 때문에 R2에서는 기본 경로로 설정을 수행했다.

- R1 과 R2의 라우팅 테이블을 비교해보면 둘의 방식의 차이점을 확인 할 수 있다.
라우팅 테이블에서 S로 표시된 네트워크가 정적(static) 설정한 값이다.
- R3는 네트워크마다 가는 경로가 다르기 때문에 정적 라우팅을 하기 위해서 직접 다 작성해줘야 한다.

이제 토폴로지 내부에 설정된 IP 값들을 이용해서 테스트를 수행하면 성공되는 것을 볼 수 있다. 또한 DNS 서버로 설정되어있는 값들 cisco.com(8.8.8.3),gns3.com(8.8.8.4)으로 ping테스트도 성공하는 것을 확인했다.
이번 프로젝트에서는 서브넷팅과 정적 라우팅을 이용해서 네트워크 토폴로지를 구축해보는 연습을 진행했다.
서브넷팅을 이용해서 IP 자원을 효율적으로 관리할 수 있었고, PC에 수동으로 IP를 할당해주는 것이아닌 DHCP 서버를 이용해서 호스트가 추가되거나 삭제 되었을 때 자동으로 관리하는 방법을 배워보았다.
다음 프로젝트에서 네트워크가 추가되었을 때 정적라우팅을 이용하는 방법의 단점에 대해서 분석하고, 이에 대한 해결책으로 동적 라우팅 중에 RIP 프로토콜을 이용해서 토폴로지 대한 해결책으로 동적 라우팅 기법 중 RIP 프로토콜을 이용해서 토폴로지를 구축할 예정이다.