ㄴ CCNA

3월 28일 (Ubuntu - EVE 연결, 스위치 및 STP)

깜자왕 2022. 3. 28. 17:51
반응형

* 목적지 도달 불가 관련 설명 사이트

-> http://ktword.co.kr/test/view/view.php?m_temp1=2101 


* py파일 import 추가세팅

-> import getpass, import telnetlib

-> getpass : 파이썬에서 패스워드를 입력받을 때 화면에 보이지 않게 하는 패키지

-> telnetlib : 텔넷 프로토콜을 구현하는 패키지


Ubuntu <-> eve (Telnet 연결)

username, password 설정 후 vty에 세팅

   파이썬에서 Telnet관련 세팅하기 (tn.write로 한 줄 한 줄 직접 쓰기)

 

    def clickExec(self):
        id = self.textEdit.toPlainText()
        passwd = self.lineEdit.text()
        ip = self.textEdit_2.toPlainText()
        tn = telnetlib.Telnet(ip) #내가 입력한 ip를 telnet접속에 이용
        tn.read_until(b"Username: ") #화면에서 Username이 뜨면 읽어라
        tn.write(id.encode('ascii') + b"\n") #id값을 입력하고 엔터를 누르면 id을 ascii값으로 가져와라
        if passwd:
            tn.read_until(b"Password: ")
            tn.write(passwd.encode('ascii') + b"\n")
        tn.write(b"enable\n") #enable 치고 엔터
        tn.write(b"cisco\n") #enable password 인 cisco 입력 후 엔터
        tn.write(b"conf t\n")
        tn.write(b"hostname edge-router\n")
        tn.write(b"int loopback 0\n")
        tn.write(b"ip add 1.1.1.1 255.255.255.255\n") #루프백 ip부여
        tn.write(b"end\n")
        tn.write(b"exit\n")
        print(tn.read_all().decode('ascii')) #ascii로 encode했던 것들을 decode해라

 

넣은 명령어를 파이썬print문으로 출력 완료
router 이름이 edge-router 로 변경됨

 

   파이썬에서 Telnet관련 세팅하기 (plaintext 박스 안의 텍스트를 읽어오기(tn.write로 한 줄씩 쓸 필요x))

우선은 plainText값을 print해보자
값 입력
파이썬에 print문으로 출력완료

 

-> 우선은 파이썬 자체에 print하는것으로 설정해보기

 

이제 plaintext 박스 안의 값을 한 줄씩 가져와 for문으로 라우터에 적용해보자

split으로 \n을 기준으로 나눈 값을 리스트형식으로 가져온 뒤 그 값을 for문으로 반복해 명령어 입력

 

 

* 번외로 다음과 같이 명령해도 먹힘

-> plainText 텍스트 값들을 \n(엔터값)을 포함하여 통째로 적용시킴.

-> 다만 for문은 한 줄 한 줄 리스트형식에서 읽어오는 것이기 때문에 추후에 한 줄씩 읽어와야만 하는 상황에서는 for문을 쓰도록 한다.


Switch

 

unknown unicasts -> mac table에 없는 주소들

micro segmentation -> 스위치 내에서 mac table을 통해 1:1로 통신이 가능한 구역

micro segmentation이 구성되면 collision domain은 포트끼리 연결 된 구간만 한정된다

 

Transparent Bridging -> TTL값, Fragmentation(단편화) 등의 이유때문에 일어난다

 

Reduntant Topology

 

   1. broadcast storms

   -> host X에서 broadcast 프레임을 보내면 스위치 A,B가 프레임을 주고받으면서 Broadcast Storm이 발생

   -> 데이터가 A, B를 계속 무한반복하면서 돌게 되며 looping이 발생

   

   2. Multiple Frame copies

   -> 라우터의 포트에 같은 데이터가 여러번 들어오게 된다

 

   3. Database Instability

   -> 스위치 A를 기준으로 보자면 mac table에 port 0 에 대한 mac주소가 무한히 바뀌는 상황이다

   -> 즉 mac table이 불안정 해지는 상황

 

Spanning Tree Protocol

   -> Reference Point의 포트는 '물리적'으로는 연결되어 있는 상태지만, '논리적'으로는 blocking 하는 것

   -> looping 방지 이중화 토폴로지 제공

 

Spanning Tree Operations

-> MAC주소의 6바이트 중 앞 3바이트는 BridgeId(BID), 뒤 3바이트는 Sequence Number

-> 스위치는 기본적으로 값이 적은 것을 우선선택하는데, MAC 주소는 나중에 만든 기기가 크기 때문에 MAC 주소로 Root Bridge를 선정하게 되면 구식장비가 선택될 수 있다. 그러므로 여기서 Priority 값을 이용하여 우선선정한다.

-> BID ( priority + MAC주소 ), Root ID ( Root Bridge의 BID ) 

-> Path Cost -> 속도에 따라 정해져있다

pathcost 표

 

-> Root Bridge에 붙어있는 포트들은 Designated port이고, 다른 스위치에서의 포트는 path cost를 기준으로 path cost가 높은 부분을 non-designated port 로 선정한다.

-> Root Bridge에서 non-designated port와 연결되지 않은 포트는 상대 스위치에서 root port로 선정 (non-root bridge마다 하나 선정)

-> 즉 non-designated port는 blocking 된다.

 

이 경우는 priority, path cost가 같다.

-> path cost가 같으므로 path cost만으로는 root port를 선정할 수 없다.

-> 이제 port ID를 판별해서 port 0 < port 1 이므로 port 0을 root port로 선정한다. **아래사진 참조

root port 선정 과정

 

 

Bridge Protocol Data Unit (BPDU)

-> Root Bridge, Root port, designated port 등을 선출하기 위해 사용되는 프로토콜

 

Spanning-Tree Recalculation

bpdu를 2초마다 주고받아야 하는데 오지 않는다 -> max age(약 20초)만큼 기다린 후 blocking port를 푼다 -> listening 상태로 넘어가며 15초 정도 기다린다 -> learning 상태가 되며 mac table을 재계산 -> 15초정도 기다린다 -> 다시 정상적으로 root port로 frame forwarding 

 

* TCN(Topology Change Notification) BPDU : topology의 변화가 생겼다는 것을 알리는 BPDU.
message type이후의 field는 사용하지 않고 padding으로 채워진다. (message type 0x80)

 

* BPDU는 어느 포트를 통해 전달되는가? -> Designated port

* BPDU는 얼마 간격으로 전송되는가? -> 2초간격

* BPDU는 어떤 유형의 패킷인가? -> Multicast

* Root Bridge만이 BPDU를 Designated port로 송신

 


구성해놨던 스위치에서 root bridge 관련 설정 보기

-> Server-sw에서 show spanning-tree 명령

vlan 10에 대한 정보

* PVST -> vlan 별로 Spanning-Tree를 설정

---------------------------------------------------------------

vlan 10에 대해서만 root bridge를 바꿔보자

   1. 기본 설정확인

Server-sw
client-sw
transparent-sw

   -> server-sw가 root bridge인 것을 확인할 수 있다

   -> client-sw의 e0/1이 Blocking 포트인 것을 확인할 수 있다.

 

   2. blocking포트가 있는 client-sw에서 vlan 10에 대한 설정만 root bridge로 바꿔보자

vlan 10에 대해 priority값에 대해 4096으로 설정

   3. priority 값 변경 뒤 vlan10에 대한 설정을 다시 확인

client-sw ->우선은 blocking 이었던 포트가 Learning 중임을 확인할 수 있다

 

Server-sw
client-sw -> vlan10에 대한 root bridge가 Server-sw에서 client-sw로 변경된 것을 확인할 수 있다
transparent-sw -> vlan10에 대해서 e0/0포트가 blocking포트로 바뀌었다.

   -> spanning-tree vlan x priority y 명령어로 관리자가 root bridge를 변경시킬 수 있다


* ARP 종류 정리하기

 1. arp 2. rarp 3. Proxy arp 4. Inverse arp 5. Gratuitous arp

 

1. arp

-> arp table, MAC table 및 ip주소를 이용해 상대의 MAC 주소를 알아내는 프로토콜

 

2. rarp

-> MAC주소에 해당하는 IP주소를 알아내는 프로토콜

-> Request는 MAC정보를 담고있으며 '브로드캐스트'

-> Reply는 IP주소를 담아서 요청자에게 '유니캐스트'

 

3. Proxy arp

-> host에서 보내온 arp request를 보고 목적지ip가 자신의 라우팅테이블에 있다면, 자신의 MAC주소로 대신 응답

 

4. Inverse arp

-> arp와 다르게 MAC주소를 이용해 IP주소를 자동으로 알아내는 기술

 

5. Gratuitous arp

-> 송신 ip, 수신 ip가 동일하다

-> 자신의 존재를 알리는 목적

-> IP 충돌 감지, ARP 테이블 갱신 용도