이론
Packet
3계층
- packet으로 데이터를 주고 받는다.
- header를 포함하고 있고, header는 source IP와 destination IP를 포함한다.
4계층
- TCP - http(80), ssh(22), telnet(23)
- UDP - dhcp (67,68), tftp
사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용할 때, NAT이 필요하다.
ARP
ARP (Address Resolution Protocol) : 주소 결정 프로토콜
=> IP로부터 MAC 주소를 알아내는 프로토콜
플러딩. 목적지의 MAC 주소를 모르는 경우 스위치에게 브로드캐스팅으로 MAC 주소 요청을 한다. 스위치는 허브처럼 이를 위해 들어온 패킷을 제외한 자신과 연결된 모든 포트에 같은 내용의 패킷을 전달하게 되고 이러한 동작방식을 플러딩이라고 한다.
플러딩이 발생하는 경우
1. MAC 주소 테이블이 완전히 비어있는 경우
2. MAC 주소 테이블이 가득 차 있는 경우 (네트워크 공격)
3. MAC 주소 테이블에 없는 목적지 MAC 주소인 경우
4. 보내고자 하는 목적지 MAC 주소가 브로드캐스팅인 경우 (위에서 말한 경우에 해당한다.)
상황
PC A에서 PC B로 ping을 치는 상황 (그전에는 아무런 통신을 한 적이 없다.)
= 서로 상대의 IP, MAC 주소를 모르는 상황
1. SW는 학습된 내용이 아무것도 없기 때문에 수신포트를 제외하고 나머지 주소로 플러딩(Flooding)
=> 수신포트 정보를 학습(0001)
2. 플러딩을 받은 호스트들은 본인이 그 정보에 해당되는 호스트인지를 파악
=> 본인이 맞으면 응답, 본인이 아니면 폐기.
VLAN (Virual LAN)
일반적으로 같은 스위치 = 같은 네트워크.
하나의 물리적인 스위치는 보통 하나의 네트워크를 구성한다.
하지만 하나의 물리스위치로 여러개의 네트워크를 구성하고 싶은 경우, VLAN을 통해 여러개의 논리적인 네트워크로 나눌 수 있다.
1.라우터는 한개의 물리적인 인터페이스(주 인터페이스)만 스위치와 연결되므로, 서브인터페이스를 VLAN 갯수만큼 여러개 만들어 각 보조 인터페이스마다 GW주소를 설정해준다.
2.스위치는 해당 포트에 몇개의 VLAN이 지나다니는지 결정한 후 여러개일 경우 trunk, 한개일 경우 access 해준다.
실습
VLAN 실습 1
<Router>
#라우터의 서브인터페이스 설정 => 하나의 인터페이스를 두개로 나누는 효과
Router(config)#int f0/0
Router(config-if)#no sh
#반드시 주(main) 인터페이스의 전원을 켜야함
Router(config-if)#int f0/0.100
#서브 인터페이스로 진입
Router(config-subif)#encapsulation dot1Q 100
#인캡슐레이션을 통해 VLAN의 태그를 지정.
Router(config-subif)#ip add 192.168.100.100 255.255.255.0
Router(config-subif)#no sh
Router(config-subif)#int f0/0.200
Router(config-subif)#encapsulation dot1Q 200
Router(config-subif)#ip add 192.168.200.100 255.255.255.0
Router(config-subif)#no sh
<Switch>
# 스위치 모드에는 크게 두가지가 있다.
# trunk : 여러개의 VLAN이 지나다닐때
# access : 단일 VLAN이 지나다닐때
Switch(config)#int f0/5
#라우터로 향하는 상행포트
Switch(config-if)#switchport mode trunk
# 여러개의 VLAN (100,200)이 지나다니기때문에 trunk로 모드를 변경.
Switch(config-if)#vlan 100
# VLAN 100을 생성
Switch(config-if)#int f0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 100
# f0/1포트를 vlan 100 에 access
Switch(config-if)#vlan 200
Switch(config-vlan)#int f0/2
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 200
Switch(config-if)#int f0/3
Switch(config-if)#swi m a
Switch(config-if)#swi a vlan 100
Switch(config-if)#int f0/4
Switch(config-if)#swi m a
Switch(config-if)#swi a vlan 200
# PC A와 B가 통신되는지 확인.
VLAN 실습 2
<R1>
Router#conf t
Router(config)#int f0/0
Router(config-if)#ip add 172.16.12.100 255.255.255.0
Router(config-if)#no sh
Router(config-if)#int f0/1
Router(config-if)#ip add 11.22.33.65 255.255.255.252
Router(config-if)#no sh
Router(config-if)#router os 10
Router(config-router)#router 1.1.1.1
Router(config-router)#net 11.22.33.65 0.0.0.0 a 2
# OSPF 라우팅
Router(config)#ip dhcp pool a
Router(dhcp-config)#default-router 172.16.12.100
Router(dhcp-config)#net 172.16.12.0 255.255.255.0
Router(config)#access-list 1 permit 172.16.12.0 0.0.0.255
Router(config)#int f0/0
Router(config-if)#ip nat inside
Router(config-if)#int f0/1
Router(config-if)#ip nat out
Router(config-if)#ip nat inside source list 1 int f0/1 over
Router(config)#do sh ip nat tran
<R2>
Router(config-if)#int f0/1
Router(config-if)#ip add 11.22.33.69 255.255.255.252
Router(config-if)#no sh
Router(config-if)#router os 10
Router(config-router)#router 2.2.2.2
Router(config-router)#net 11.22.33.66 0.0.0.0 a 2
Router(config-router)#net 11.22.33.69 0.0.0.0 a 0
# 라우팅
Router(config)#int f0/0
Router(config-if)#ip nat out
Router(config-if)#int f0/1
Router(config-if)#ip nat out
Router(config-if)#int f1/0
Router(config-if)#ip nat inside source static 172.16.8.200 11.22.33.66
Router(config)#ip nat inside source static 172.16.8.200 11.22.33.69
# destination + static NAT
<R3>
Router(config)#int f0/0
Router(config-if)#ip add 11.22.33.70 255.255.255.252
Router(config-if)#no sh
Router(config-if)#int f0/1
Router(config-if)#ip add 11.22.33.73 255.255.255.252
Router(config-if)#no sh
Router(config-if)#router os 10
Router(config-router)#router 3.3.3.3
Router(config-router)#net 11.22.33.70 0.0.0.0 a 0
Router(config-router)#net 11.22.33.73 0.0.0.0 a 1
# OSPF 라우팅
<R4>
Router(config)#int f0/0
Router(config-if)#ip add 11.22.33.74 255.255.255.252
Router(config-if)#no sh
Router(config-if)#router os 10
Router(config-router)#router 4.4.4.4
Router(config-router)#net 11.22.33.74 0.0.0.0 a 1
Router(config)#ip dhcp pool c
Router(dhcp-config)#default-router 172.16.0.100
Router(dhcp-config)#net 172.16.0.0 255.255.248.0
Router(config)#access-list 1 per 172.16.0.0 0.0.7.255
Router(config)#int f0/1
Router(config-if)#ip nat inside
Router(config-if)#int f0/0
Router(config-if)#ip nat out
Router(config-if)#ip nat inside source list 1 int f0/0 over
VLAN 실습 3
IP Address / Subnet Mask / Default Gateway
PC A: 192.168.100.10 / 255.255.255.128 / 192.168.100.100
PC B: 192.168.100.140 / 255.255.255.224 / 192.168.100.130
Web Server: 192.168.100.80 / 255.255.255.0 / 192.168.100.100
<R1>
Router(config)#int f0/0
Router(config-if)#no sh
Router(config-if)#int f0/0.10
Router(config-subif)#en do 10
Router(config-subif)#ip add 192.168.100.100 255.255.255.128
Router(config-subif)#no sh
Router(config-subif)#int f0/0.20
Router(config-subif)#en do 20
Router(config-subif)#ip add 192.168.100.130 255.255.255.224
Router(config-subif)#no sh
Router(config-subif)#int f0/1
Router(config-if)#ip add 10.20.30.249 255.255.255.252
Router(config-if)#no sh
Router(config-if)#router os 10
Router(config-router)#router 1.1.1.1
Router(config-router)#net 10.20.30.249 0.0.0.0 a 0
Router(config)#access-list 1 per 192.168.100.0 0.0.0.127
Router(config)#access-list 2 per 192.168.100.128 0.0.0.31
Router(config)#int f0/0.10
Router(config-subif)#ip nat inside
Router(config-subif)#int f0/0.20
Router(config-subif)#ip nat inside
Router(config-subif)#int f0/1
Router(config-if)#ip nat out
Router(config-if)#ip nat inside source list 1 int f0/1 over
Router(config)#ip nat inside source list 2 int f0/1 over
<R2>
Router(config)#int f0/0
Router(config-if)#ip add 10.20.30.250 255.255.255.252
Router(config-if)#no sh
Router(config-if)#int f0/1
Router(config-if)#ip add 10.20.30.253 255.255.255.252
Router(config-if)#no sh
Router(config-if)#router os 10
Router(config-router)#router 2.2.2.2
Router(config-router)#net 10.20.30.250 0.0.0.0 a 0
Router(config-router)#net 10.20.30.253 0.0.0.0 a 0
<R3>
Router(config)#int f0/0
Router(config-if)#ip add 10.20.30.254 255.255.255.252
Router(config-if)#no sh
Router(config-if)#int f0/1
Router(config-if)#ip add 192.168.100.100 255.255.255.0
Router(config-if)#no sh
Router(config-if)#router os 10
Router(config-router)#router 3.3.3.3
Router(config-router)#net 10.20.30.254 0.0.0.0 a 0
Router(config-router)#int f0/0
Router(config-if)#ip nat out
Router(config-if)#int f0/1
Router(config-if)#ip nat in
Router(config-if)#ip nat inside source static 192.168.100.80 10.20.30.254
<Switch>
Switch(config-if)#int f0/3
Switch(config-if)#swi m t
Switch(config-if)#int f0/1
Switch(config-if)#vlan 10
Switch(config-if)#swi m a
Switch(config-if)#swi a vlan 10
Switch(config-if)#vlan 20
Switch(config-vlan)#int f0/2
Switch(config-if)#swi m a
Switch(config-if)#swi a vlan 20
<R3에서 R1으로 ping이 안가는 이유>
<R1에서 수신 icmp(ping) 패킷을 모니터링
Router(config)#do debug ip icmp
패킷 모니터링 결과 R1에서는 수신이 잘 되는걸 확인
=> 이유는 R3에서의 NAT 때문. R3의 10.20.30.254로 수신되는 모든 패킷에는 R1에서 돌아오는 ping packet도 포함되기때문에 해당 패킷이 192.168.100.80으로 흘러들어가버렸다.
이 문제를 해결하기 위해, 기존 DNAT를 삭제
Router(config)#no ip nat inside source static 192.168.100.80 10.20.30.254
해당 포트만 DNAT를 걸어준다.
Router(config)#ip nat inside source static tcp 192.168.100.80 80 10.20.30.254 80
'🎆 Cloud Practice > 🧪 On-Premise' 카테고리의 다른 글
DHCP 서버 설정을 해보자 (0) | 2023.09.06 |
---|---|
Virtual Machine에 대해 알아보자 ( + Linux 명령어 ) (0) | 2023.09.04 |
NAT에 대해 알아보자 (0) | 2023.09.01 |
VLSM, OSPF (0) | 2023.08.31 |
라우터와 스위치, 사설 IP, 네트워크 연결 (0) | 2023.08.30 |