3월 28일 (Ubuntu - EVE 연결, 스위치 및 STP)
* 목적지 도달 불가 관련 설명 사이트
-> http://ktword.co.kr/test/view/view.php?m_temp1=2101
* py파일 import 추가세팅
-> import getpass, import telnetlib
-> getpass : 파이썬에서 패스워드를 입력받을 때 화면에 보이지 않게 하는 패키지
-> telnetlib : 텔넷 프로토콜을 구현하는 패키지
Ubuntu <-> eve (Telnet 연결)
파이썬에서 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해라
파이썬에서 Telnet관련 세팅하기 (plaintext 박스 안의 텍스트를 읽어오기(tn.write로 한 줄씩 쓸 필요x))
-> 우선은 파이썬 자체에 print하는것으로 설정해보기
이제 plaintext 박스 안의 값을 한 줄씩 가져와 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 -> 속도에 따라 정해져있다
-> 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 된다.
-> path cost가 같으므로 path cost만으로는 root port를 선정할 수 없다.
-> 이제 port ID를 판별해서 port 0 < port 1 이므로 port 0을 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 명령
* PVST -> vlan 별로 Spanning-Tree를 설정
---------------------------------------------------------------
vlan 10에 대해서만 root bridge를 바꿔보자
1. 기본 설정확인
-> server-sw가 root bridge인 것을 확인할 수 있다
-> client-sw의 e0/1이 Blocking 포트인 것을 확인할 수 있다.
2. blocking포트가 있는 client-sw에서 vlan 10에 대한 설정만 root bridge로 바꿔보자
3. priority 값 변경 뒤 vlan10에 대한 설정을 다시 확인
-> 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 테이블 갱신 용도