3. 네트워크 통신하기
IP, MAC
IP(Internet Protocol) -> 상호 통신시 사용하는 프로토콜, 표준프로토콜
v4랑 v6간의 직접적인 통신이 불가능
그래서 이걸 현재는 인터넷은 v4로 처리하고 v6 컴퓨터끼리는 터널링 기술로 통신하게끔 만드는 것이다.
통신을 위해서는 물리적인 주소인 MAC 주소와 논리적인 주소(그때 그때마다 바꿀 수 있다)인 IP 주소가 필요하다.
서브넷마스크
서브넷 : 네트워크와 호스트를 구분한것 -> 현재는 CIDR을 사용
서브넷 마스크 : 서브넷을 구분할때 사용하는 것 -> 주로 16, 24를 사용함
서브넷팅 : 나누어진 서브넷을 다시금 네트워크를 쪼개는 것
그래서 서브넷팅은 비트가 한개씩 오른쪽으로 갈수록 만들 수 있는 네트워크는 2의 제곱수로 늘어난다고 보면된다.
- PC에 사용할 수 없는 주소들
1. 0.0.0.0 -> 알 수 없는 주소
2. 255.255.255.255 -> IPv4 전체에 대한 브로드캐스트 주소
3. 각 네트워크에서의 첫번쨰 주소(네트워크 주소)
4. 각 네트워크에서의 마지막 주소(브로드캐스트 주소)
5. lo 또는 loopback 주소는 각 디바이스에 있는 논리 인터페이스이며 테스트용으로 사용된다. PC에 할당 할 수 있는 주소가 아니다.(127.0.0.1 == localhost)
스위치와 라우터 그리고 ARP
스위치 : 동이 네트워크 내에서 노드를 나누고 연결 (L2 장비 : frame[MAC]을 처리할 수 있다)
- ARP TABLE만 있음
라우터 : 물리적으로 네트워크를 구분하고 연결 (L3 장비 : IP주소를 읽고 이를 처리할 수 있다. 다른 네트워크와 연결에 관여한다 - 이때 쓰는게 라우팅 테이블)
- ARP TABLE과 Route TABLE 두개를 가지고 있다.
- 역활1 : Path Selection(경로선택 based on Route TABLE)
- 역활2 : Packet Forwarding
스위치는 IP가 뭔지 몰라서 vlan 도움 없이는 스위치만으로 네트워크를 나눌 수 없음. 라우터로 연결을 중재하기 전까지 스위치에 연결된 전체 PC는 그냥 하나의 네트워크에 묶인것이다.
ARP(Address Resolution Protocol)
ip만 안 상태에서 대상을 찾기 위해 하는 것이다.
1. ARP를 스위치에 던짐. 이때 dst ip는 Default Gateway
2. 스위치는 브로드캐스트로 ARP를 던짐, 스위치는 ARP 던진 PC의 맥주소와 ip를 기록함
3. 라우터가 ARP 받아서 ARP table에 던진 PC ip와 맥주소를 기록함. 그리고 응답을 PC에 던짐
4. 스위치는 ARP 받아서 라우터의 ip와 맥주소를 기록하고 PC에게 응답 던짐
5. PC는 이제 Default Gateway(라우터)로 패킷을 던짐. 이때 패킷은 내가 보내고픈 대상의 IP임
6. 라우터가 패킷을 받아서 ARP를 다시하고 나중에 목적지로 패킷을 보냄
4. 스위치: 2계층 장비
VLAN -> STP(간단히) -> Static route(서로다른 네트워크 간 통신) -> 필터링/분류(Access-Control List) -> NAT(주소변환) -> Dynamic Routing(using Routing protocol - OSPF[Open Shortest Path First]) -> HSRP(이중화) -> GRE + IPsec(VPN)
vlan
돈없는 회사가 라우터 하나만 있거나 혹은 매번 라우터를 새로 사서 네트워크 구분하기 힘들때 스위치로 값싸게 네트워크 구분하는 기술
라우터는 1 interface = 1 network = 1 Broadcast
스위치는 1 vlan = 1 network = 1 Broadcast
공식 필수
스위치는 인터페이스 별로 네트워크를 구분할 수 없다. 하지만 스위치는 논리적으로 네트워크를 구분할 수 있다. 이때 사용하는 기술이 바로 VLAN(Virtual Local Area Network)로 사실상 라우터가 하나뿐인데 네트워크를 나누고 싶을때 사용한다고 보면 된다.
대충 위와같이 스위치 내에 vlan이라는것을 만들어 Access port로 연결해주고
스위치끼리는 trunk port로 연결하게끔 해주면 됨
그럼 수십개의 네트워크로 연결했어야 했던것을 Trunk port의 encapsulation 방법으로 처리해주면 된다.
패킷에는 Tag부분이 추가된다.
이걸 나중에 kvm의 ovs를 이용해 vlan을 구현한다
- vlan 디자인 방법
1. local VLAN
2. End-to-End VLAN
위에서 일반적으로 많이 사용하는 것은 1번이지만 2번과 같이도 작업할 수 있다. 2번의 장점은 만약 사무실이 이동되었어도 PC만 가지고 이동하면 자동으로 해당 vlan에 맞는 IP가 할당된다.
- vlan 과정
서로다른 스위치에 PC가 연결되어 있다.
각 PC는 한개의 VLAN에만 속하게 된다. -> access port
스위치와 스위치 사이의 통신은 vlan 10, 20을 모두 허용해야 한다. 이렇게 모든 VLAN 통신이 가능한 포트를 Trunk Port라고 부른다.
트렁크 포트는 상대방에서 프레임을 전송할 때 해당 프레임이 몇번 VLAN에서 발생했는가를 알려주기 위해 MAC 주소 뒤에 TAG를 삽입하여 전송한다. TAG에는 12bit를 활용한 VLAN-ID(번호)가 포함되어 있다.
이를 전달받은 상대방 스위치는 TAG 확인후 해당 TAG는 버리고 원래의 프레임으로 재조합하여 PC에게 전송해준다.
그래서 위와같이 라우터 하나만 연결해서 얘를 통해서만 ISP에 나갈 수 있게 만들어주자.
Fa0/1은 (1)이 Inside같아서 내부 포트와 통신시키고
Fa0/0은 (0)이 Outside같아서 외부 포트와 통신하게끔 만든다.
이게 가능한 이유가 fa0/1가 pc를 위한 Default-Gateway되기 때문이다. 이렇게 TRUNK에 sub-interface들을 만들어주어서 사용해주면 라우터는 Default Gateway(기본 게이트웨이)로 동작하게 된다. 일반적으로는 vlan의 번호와 동일하게 sub-interface를 만든다.(fa0/1.10)
라우터는 받은 패킷을 보고 ip가 해당하는 인터페이스로 패킷을 던진다. 그럼 라우터는 패킷의 목적지 주소에 기반하여 경로를 선택하고 선택된 경로로 패킷을 포워딩한다. 이걸 우리는 라우팅이라고 부른다.
또 원격에 있는 Zone과도 터널을 만들어서 VM간의 통신이 가능해질 수도 있다.
- vlan 서브넷팅
Quiz. 우리회사 본사와 지사간 WAN 연결을 위해 우리는 192.168.111.0/24라는 주소를 서브넷팅하여 IP낭비를 최소화한 서브넷을 사용할 계획이다.
prefix-length와 서브넷 마스크는 무엇을 사용해야 하는가?
/? 255.255.255.?
30, 252를 써야한다. (31을 못쓰는 이유는 시작과 끝 ip는 사용불가능하기 때문이다)
그래서 왼쪽은 192.168.111.1/30 오른쪽은 192.168.111.2/30 을 사용하자
라우터 설정
라우터는 기본적으로 자신에게 직접 연결된 네트워크에 대해서만 통신이 가능하다. 알지 못하는 네트워크로의 접근은 불가하다.(예를 들어 타 라우터와 연결되지 않은 pc의 ip는 모르기 때문에 패킷 드랍한다)
이를 해결하기 위해서는 라우팅 체이블에 알지 못하는 네트워크를 기록해주면된다.
1. static routing : 그냥 내가 적은것이다.
2. dynamic routing : 라우터에 설치된 라우팅 프로토콜을 이용하여 경로를 서로 간에 교환한다.
기타 네트워크 명령어(안 외워도 됨)
라우터
en
conf t
hostname R1
# 포트 ip 넣기
int fa0/0
ip add 192.168.1.126 255.255.255.0
no shutdown
#명령어 입력보기
do show his
# vlan
int fa0/1
no sh
int fa0/1.10
encap dot1q 10
ip add 192.168.1.1 255.255.255.0
int fa0/1.20
encap dot1q 20
ip add 192.168.2.1 255.255.255.0
# static route
show ip route
ip route 172.16.1.0 255.255.255.0
ip route [가고자하는 목적지 네트워크] [목적지 네트워크 서브넷마스크] [next-hop's IP]
스위치
en
conf t
hostname SW1
# vlan 설정하기
vlan 10
name SALES
vlan 20
name ENG
# vlan 연결하기
int fa0/1
sw mode access
sw access vlan 10
int fa0/2
sw mode access
sw access vlan 20
# vlan 스위치끼리 연결하기
int fa0/10
sw trunk encap dot1q
sw mode trunk
'Development(Web, Server, Cloud) > Cloud : 정리' 카테고리의 다른 글
6. Docker 도커 (0) | 2022.03.03 |
---|---|
5. 클라우드 가상화(KVM, Libvirt) (0) | 2022.02.24 |
3. GCP와 AWS (0) | 2022.01.18 |
2. 리눅스 쉘 (0) | 2022.01.18 |
1. 클라우드와 가상화를 위한 리눅스 7.0 : VMWare 네트워크, CentOS7, vi, disk, 사용자와 그룹, 추가적인 작업, DNS서버, 웹서버, NFS서버, 클라우드 가상화, KVM, Docker, SELinux (0) | 2022.01.18 |