본문 바로가기

네트워크

[네트워크] 27. 텔넷, SSH, 이더넷 프레임, L123 장비들

이 게시물은 <킹 오브 네트워킹 (피터전)>을 공부한 내용을 바탕으로 작성됨.

 


 

텔넷 (Telnet)

 

텔넷과 SSH는 원격으로 장비에 접속하기 위해 사용하는 프로토콜이다. 텔넷은 보안성이 없지만 (송수신되는 데이터가 암호화되지 않은 평문이므로 공격자가 내용을 전부 확인할 수 있음) SSH는 메시지가 암호화되어 전송된다는 차이가 있다.

 

 

텔넷(Telnet)은 가장 많이 사용되는 원격 접속용 프로토콜이다. 텔넷의 목적을 반드시 알고 넘어가야 한다. = 어떤 한 라우터에서 멀리 떨어진 다른 라우터에 원격 접속하여 원격으로 구성을 바꾸는 것이 목적이다.

 

 

R1#telnet 1.1.30.3
Trying 1.1.30.3 ...Open

User Access Verification
Password: 

R3>

 

 

위 네트워크에서 R1➜R3로 telnet 접속을 시도한 것이다. 먼저 Telnet 접속을 시도하기 위해서는 두 라우터가 서로 연결되어 있어야 한다. 또한, R3에 설정되어있는 password를 원격 접속자인 R1에서 알고 있어야 한다. password를 입력하면 R1의 console 창에서 R3를 다룰 수 있게 된다.

 

 

 

R3(config)#interface s0/1/1
R3(config-if)#no ip address
% Connection timed out; remote host not responding

 

 

R3에 텔넷 접속하여 R2-R3를 연결하는 interface를 끊으려고 시도해보았다. 하지만 아무리 엔터키를 눌러도 반응이 없다. R1-R3 텔넷 접속을 위해서는 R1-R2-R3가 반드시 연결되어 있어야 하기 때문에 R2-R3 interface를 임의로 끊을 수 없는 모양이다.

(이 실습 후에 바로 R2-R3를 다시 연결해주어야 함. 반응은 없지만 실제로는 interface s0/1/1가 끊겨있다.)

 

 

 

<R3 console>
R3(config)#line vty 0 4
R3(config-line)#no password

<R1 console>
R1#telnet 1.1.30.3
Trying 1.1.30.3 ...Open

[Connection to 1.1.30.3 closed by foreign host]
R1#

 

 

Telnet 접속은 Telnet 암호가 설정되어 있을 때만 가능하다. R3의 telnet 0~4번 포트에 대하여 no password를 수행한 후에 R1로 돌아가서 R3에 telnet 접속을 시도한 결과이다. 접속이 불가능하다. 

 

 

 

 

 

<R3>
R3(config)#no enable secret


<R1>
R1#telnet 1.1.30.3
Trying 1.1.30.3 ...Open


User Access Verification

Password: 
R3>en
% No password set.
R3>

 

 

이번에는 R3에서 관리자용 암호를 삭제해주었다. 이 경우 R1에서 R3으로 telnet 접속은 가능하지만 enable 관리자 모드로 진입이 불가능하다. ➜ 텔넷을 정상적으로 사용하기 위해서는 1. vty line에 password를 지정해주어야 하며, 2. secret password도 지정해주어야 한다.

 

 

 

<R3>
R3(config)#enable secret cisco
R3(config)#line vty 0 4
R3(config-line)#no login


<R1>
R1#telnet 1.1.30.3
Trying 1.1.30.3 ...Open


R3>

 

 

R3에서 다시 secret password를 설정해주고, 이번에는 telnet 포트들에 no login을 설정해 주었다. no login 명령어를 입력하면 R3으로 텔넷 접속 시 암호를 묻지 않고 바로 접속된다.

 

 

 

R3#show user
    Line       User       Host(s)              Idle       Location
*  0 con 0                idle                 00:00:00 
 390 vty 0                idle                 00:01:10 1.1.12.1

 

 

show user 명령어를 통해 현재 R3에 원격으로 접속해있는 장비들을 확인할 수 있다. con은 console이므로 R3 자기 자신을 의미하고, vty이 telnet으로 접속한 외부 장비를 의미한다. location을 통해 어느 IP 주소를 갖는 장비가 R3에 원격 접속했는지 알 수 있다.

 

 

 

 

 

 


 

SSH (Secure shell)

 

 

SSH도 Telnet과 같은 원격 접속 프로토콜이다. Telnet은 보안성이 없는 반면 SSH는 인증(authentication), 패킷 암호화(encryption), 패킷 변조를 방지하는 무결성 확인(integrity) 기능을 제공하여 보안성이 뛰어나다.

 

SSH는 ver1, 2가 존재하며 버전 1의 취약점을 보완한 것이 버전 2이므로 가능하면 버전 2를 사용한다. 또한 두 버전 간 호환은 제공되지 않는다.

 

 

 

R3(config)#ip domain-name cisco.com

R3(config)#crypto key generate rsa general-keys modulus 1024
The name for the keys will be: R3.cisco.com

% The key modulus size is 1024 bits
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
*Mar 1 6:15:39.319: %SSH-5-ENABLED: SSH 1.99 has been enabled

 

 

1. SSH에서 사용할 암호키를 만들기 위해서는 적당한 도메인 이름을 지정해주어야 한다. 일단 아무거나 입력하자.

2. SSH에서 사용할 암호키의 길이를 지정해준다. SSH 2를 사용하기 위해서는 최소 768 bit 이상을 지정해야 한다.

 

 

 

 

 

R3(config)#username ccna password cisco
R3(config)#line vty 0 4
R3(config-line)#login local


R3(config)#ip ssh version 2
R3(config)#line vty 0 4
R3(config-line)#transport input ssh

 

  1. SSH에서 사용할 unsername과 password를 지정한다.
  2. line vty 0 4 ➜ 원격라인 (line vty) 설정모드로 진입한다.
  3. login local ➜ 1번에서 설정한 username / password를 이용하여 원격 접속자를 인증(authentication) 하도록 설정한다. 이제 원격 접속자는 username / password를 입력해야만 원격 접속이 가능하다.
  4. ip ssh version 2 ➜ SSH ver 2만 접속 허용한다.
  5. transport input ssh ➜ SSH 만 접속이 가능하도록 한다. (Telnet은 차단된다.)

 

 

 

 

R1#ssh -v 2 -l ccna 1.1.30.3

Password: 



R3>

 

 

R1에서 R3으로 SSH 원격접속을 수행하는 과정이다. ssh -v 2 -l ccna 1.1.30.3 명령어를 입력해주었다.

-v 옵션을 이용하여 버전(2)을 지정해주고, -l 옵션을 이용하여 이용자명을 지정, 그 후 접속대상의 IP 주소를 입력한 후 password를 입력하면 R3로 원격접속이 완료된다.

 

 

 

 

 


 

이더넷 MAC 서브 계층

 

 

이더넷은 LAN, MAN, WAN에서 가장 많이 사용되는 기술 규격으로, 이더넷 기술은 IEEE 802.3 규약으로 표준화되었다. 또한 이더넷은 데이터링크 계층 (L2)에서 MAC 패킷과 프로토콜 형식을 정의한다. IEEE 802.3 MAC sublayer는 Ethernet frame format, 이더넷 동장방식, 충돌감지 및 재전송 방식 등을 정의한다.

 

이더넷은 L2에서 작동하지만 이더넷 MAC sublayer라고 칭하는데, 그 이유는 이더넷 MAC에서 정의하는 프로토콜이 L2 계층 전체가 아닌 일부에만 해당하기 때문이다.

 

 

 

 

 

Ethernet frame format

 

https://www.javatpoint.com/ethernet-frame-format

 

 

  • Preamble ➜ 10101010... 이 반복되는 7Byte 길이의 필드이며 이제 곧 도착할 이더넷 프레임에서 0과 1일 구분할 수 있도록 synchronization 신호를 제공하는 역할

 

  • SOF (Start of Frame) ➜ 프리엠블과 달리 마지막 비트가 1인 10101011 값을 가지며, 프레임의 시작을 알리는 데 사용된다. 즉 SOF 필드 바로 다음에 이더넷 프레임의 destination MAC 주소 필드가 시작되는 것을 알려주는 역할이다. 이더넷 프레임의 크기를 계산할 때는 프리엠블과 SOF 필드를 제외한다.

 

  • Destination MAC address ➜ MAC address는 이더넷 장비의 L2층 주소를 나타낸다. MAC 주소는 48bit (6Byte) 길이를 가지며, 16진수로 표현된다. MAC address의 앞 24bit를 OUI(Organizationally Unique Identifier) 또는 회사 코드 (vendor code, company ID)라고 하며, IEEE에 일정한 금액을 지불하면 고유한 코드를 부여받을 수 있다. 
  •  MAC address의 첫 번째 bit ➜ 0 : Unicast / 1 : Multicast / 48bit 전부 1 : Broadcast
    MAC address의 두 번째 bit ➜ 0 : 공인 MAC 주소임 / 1 : 사설 MAC 주소임따라서 MAC address의 맨 앞 2개 bit는 제외되므로 실제 OUI는 22bit로 약 4백만개의 code를 가질 수 있다. 또한 MAC address는 L2 계층에서 사용되는 주소지만 물리적인 port에 부여되므로 Physical address 라고도 한다.총 48bit 중 뒷부분 24bit는 일련번호로, 하나의 OUI당 약 1600만개의 MAC address를 자체의 제품에 할당할 수 있다.

 

  • Source address ➜ 출발지 MAC address는 이더넷 프레임이 전송되는 출발지 이더넷 port의 MAC address가 쓰여지며 항상 Unicast 주소이다.

 

  • Length or Type  ➜ 2Byte 길이를 갖는 필드이며 이더넷 프레임의 데이터 필드 길이 혹은 상위 계층인 L3에서 사용하는 프로토콜의 종류를 나타내는 데 사용된다. 이 값이 1,500 이하이면 프레임 데이터의 필드 길이를 표시하는 것이다.

 

  • Data ➜ 이더넷 데이터 필드는 최소 46Byte, 최대 1500Byte이다. 만약 전송할 데이터가 46Byte 이하이면 의미없는 데이터 비트를 padding하여 46Byte로 만든다.

 

  • FCS(Frame Check Sequence) ➜ 이더넷 프레임의 Destination address 부터 Data field까지 에러 발생 여부를 확인하는 필드이다.

 

 

 

 

 

 

CSMA/CD

 

이더넷이 프레임을 전송하는 방식은 Full Duplex / Half Duplex로 나누어 생각할 수 있다. 앞전에는 Ethernet = CSMA/CD라고 단정지어서 생각했었는데, 사실은 그렇지 않다. Ethernet이 Half Duplex를 사용할 때만 CSMA/CD 방식을 택한다. 

 

 

CSMA/CD(Carrier Sense Multiple Access with Collision Detection)는 다음 방식으로 진행된다.

 

  1. Half duplex로 작동하는 Ethernet 장비들은 프레임을 전송하기 전에 현재 케이블에 전송되고 있는 프레임이 있는지 확인한다. 이 과정을 Carrier sense라고 하며, 만약 전송중인 프레임이 있으면 기다리고 없으면 자신의 프레임을 전송한다.
  2. 이더넷 장비들은 CPU같은 제어장치 없이도 그냥 알아서 Carrier sense를 거친 후 자신의 프레임을 전송할 수 있는 구조인데, 이것을 Multiple access라고 한다.
  3. Half duplex로 작동하는 허브 or 스위치에 접속된 Ethernet 장비들은 여러 장비가 동시에 프레임을 전송할 수 있기 때문에 충돌이 발생할 수 있다. 따라서 프레임 전송 후에는 항상 Collision detection을 통해 충돌이 발생했는지 확인한다. 충돌이 발생했다면 일정시간 기다린 후 재전송한다.

 

CSMA/CD 이름 자체가 알고리즘을 설명하고 있음을 잘 이해하면 좋다.

 

 

 

 

그렇다면 Full Duplex에서는 Ethernet이 어떻게 동작할까?

 

Full duplex 모드로 동작하는 링크에서는 프레임의 송/수신이 서로 다른 channel을 통하여 이루어지므로 충돌이 발생하지 않는다. CSMA/CD는 충돌을 방지하기 위해 사용했던 건데.. Full duplex에서는 프레임 충돌이 발생하지 않는다! 그래서 이 경우에서는 CSMA/CD를 사용하지 않는다.

 

➜ Full duplex 모드에서는 송/수신이 별개 channel에서 이루어지기 때문에 송수신 트래픽 양이 동일하다면 Half duplex보다 데이터 전송속도가 2배 빠르다. 현재 10BaseT를 비롯하여 모든 상위 전송속도의 이더넷에서는 Full Duplex를 지원한다.

 

 

 

 

 

 


 

Hub & Switch & Bridge & Router

 

이쯤되니까 후니에서 배웠던 내용을 괜히 또 다시 정리하는 느낌이 들긴 하는데, 책마다 세부내용이 다르고 어쨌거나 내가 이 내용들을 완벽히 숙지하는 게 목적이기 때문에 중복되는 내용이더라도 개의치 않고 정리해보도록 하겠다.

 

 

 

허브의 특성

  • 허브, 리피터는 전기적인 신호를 증폭시켜 LAN의 데이터 전송거리를 연장해준다.
  • 전기적인 신호는 물리계층에 속하므로 허브, 리피터는 물리계층 장비 혹은 L1 장비라고 부른다.
  • 10BaseT, 100BaseT 처럼 UTP 케이블을 사용하는 환경에서 장비들을 상호 연결해주는 concentrator 역할도 제공한다.
  • 한 장비에서 허브로 전송된 데이터를 허브와 연결된 모든 장비에 전송하는 Flooding을 수행한다.
  • Flooding 때문에 충돌이 자주 발생하여 하나의 허브에 많은 장비를 연결할 수 없다.
  • Half duplex로만 작동하기 때문에 프레임 충돌 발생 가능성이 더욱 높아 네트워크 성능이 저하된다.
  • 허브와 연결된 모든 장비들은 하나의 Collision domain에 있다.
  • 결론 : 요즘엔 특별한 경우가 아니면 허브나 리피터를 사용하지 않는다.

 

 

 

 

스위치와 브리지의 특성

  • 스위치와 브리지는 MAC address table을 갖고 있어, 목적지 MAC address에 해당하는 장비가 연결된 port로만 프레임을 전송한다. ➜ 따라서 다른 포트에서 전송되는 프레임과 충돌이 일어날 가능성이 낮아진다.
  • MAC address는 데이터링크 계층에서 사용되므로 스위치와 브리지를 링크 계층 장비 혹은 L2 장비라고 부른다.
  • 스위치는 ASIC(Application-Specific Integrated Circuit)을 이용하여 HW 상에서 고속으로 이더넷 프레임을 스위칭하는 반면, 브리지는 SW 상에서 스위칭을 수행하므로 속도가 느리다.
  • 따라서 스위치는 수백 개 이상의 포트를 가질 수 있지만, 브리지는 수 개로 제한된다.
  • 결론 : 요즘엔 브리지도 사용하지 않는다. 스위치만 사용한다.

 

근래에 들어서 MAC address (L2) 뿐만 아니라 L 3,4,7등 상위 계층의 정보를 함께 참조하는 스위치들이 등장하였는데, 이런 고급 스위치들과 MAC address만을 참조하는 스위치를 구분하기 위하여 후자를 L2 switch라고 부른다.

 

 

 

 

 

 

라우터와 L3 스위치의 특성

 

  • 라우터와 L3 스위치는 IP 주소 등 L3 패킷 header에 있는 주소를 참조하여 목적지와 연결되는 포트로 패킷을 전송한다. 따라서 이들을 L3 장비라고 부른다.
  • 서로 다른 IP 주소를 가지는 subnet에 존재하는 장비들 간 통신이 이루어지려면 반드시 L3 장비를 거쳐야만 한다.
  • L3 장비는 Broadcast frame을 차단한다. L3 장비를 이용하면 Broadcast domain이 분할되므로 그 영역의 크기는 줄어들고, 개수는 증가한다.

 

 

 

 


 

스위치 네트워크 실습

 

 

1 Switch(config)#host SW1
2 SW1(config)#enable secret cisco
3 SW1(config)#no ip domain-lookup
4 SW1(config)#line console 0
5 SW1(config-line)#logging synchronous
6 SW1(config-line)#exec-timeout 0
7 SW1(config-line)#line vty 0 4
8 SW1(config-line)#password cisco

 

  1. 장비이름 SW1로 지정
  2. 관리자용 암호 cisco로 설정
  3. EXEC 모드에서 명령어를 잘못 입력해도 DNS 서버를 찾지 않도록 함
  4. 콘솔 설정모드로 진입
  5. 콘솔 메시지 출력 시 자동으로 줄바꿈 설정
  6. 장시간 입력이 없어도 자동으로 콘솔 밖으로 빠져나오지 않도록 함 : 요게 진짜 쏠쏠하다.
  7. 텔넷 설정모드 진입
  8. 텔넷용 암호 cisco로 지정

 

SW1, 2, 3에 모두 같은 설정을 진행해준다. 위 설정은 어느 상황에서나 디폴트로 적용해주면 아주 유용하다. 특히 6번의 경우, 장비 설정을 하다가 자리를 비우는 경우 자동으로 콘솔 밖으로 빠져나가서 다시 들어가야하는 번거로움이 없어진다.

 

 

 

 

show cdp neighbors 명령어를 통해 SW1과 연결된 cisco 장비들을 탐색해보자.

 

SW1#show cdp neighbors 

Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
Device ID    Local Intrfce   Holdtme    Capability   Platform    Port ID
Switch       Fas 0/10         19             S       2960        Fas 0/10
Switch       Fas 0/11         19             S       2960        Fas 0/11
Switch       Fas 0/13         79             S       2960        Fas 0/13
SW2          Fas 0/10         139            S       2960        Fas 0/10
SW2          Fas 0/11         139            S       2960        Fas 0/11
SW3          Fas 0/13         139            S       2960        Fas 0/13

 

 

그 결과 switch 3개, SW2 그리고 SW3이 출력되었다. Switch 3개는 SW2, SW3의 이름을 바꾸기 전에 표기된 항목들로, Holdtime이 지나면 더 이상 응답을 받을 수 없기 때문에 최대 180초를 기다리면 알아서 제거된다.

 

 

 

SW1#show cdp neighbors 
Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge
                  S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone
Device ID    Local Intrfce   Holdtme    Capability   Platform    Port ID
SW2          Fas 0/10         175            S       2960        Fas 0/10
SW2          Fas 0/11         175            S       2960        Fas 0/11
SW3          Fas 0/13         175            S       2960        Fas 0/13

 

Holdtime을 기다린 후 재출력 해보면 깔끔하게 SW2, SW3만 남게 된다. L2 스위치를 Plug and play 장비라고도 하는데, '전원만 꽂으면 동작'하기 때문에 그렇게 부르는 것이다. 하지만 VLAN, 트렁킹 등을 설정해줘야 최적으로 동작한다. (스위치로 가능한 유용한 기능들은 다 써먹자.) 또한 스위치는 port (interface)가 워낙 많아서 다음처럼 포트별로 description 명령어를 이용하여 설명을 달아놓으면 장애처리가 간편하다.

 

 

SW1(config)#interface range f0/10-11
SW1(config-if-range)#description # To SW2 #

SW1(config)#interface f0/13
SW1(config-if)#description # To SW3 #



SW1#show interface status
Port      Name               Status       Vlan       Duplex  Speed Type
(생략)
Fa0/8                        notconnect   1          auto    auto  10/100BaseTX
Fa0/9                        notconnect   1          auto    auto  10/100BaseTX
Fa0/10    # To SW2 #         connected    1          auto    auto  10/100BaseTX
Fa0/11    # To SW2 #         connected    1          auto    auto  10/100BaseTX
Fa0/12                       notconnect   1          auto    auto  10/100BaseTX
Fa0/13    # To SW3 #         connected    1          auto    auto  10/100BaseTX
Fa0/14                       notconnect   1          auto    auto  10/100BaseTX
Fa0/15                       notconnect   1          auto    auto  10/100BaseTX
(생략)

 

 

몰랐던 기능인데 진짜 유용해보인다. 패킷트레이서 다루면서 어떤 인터페이스가 어느 장비에 연결되어 있는지 자꾸 까먹어서 장비설정 여러번 확인해야 하는 경우가 종종 있는데, 이 설정 해두면 바로 확인할 수 있다.

 

 

 

 

 

인접한 장비 간 Duplex 모드가 서로 다른 경우에도 통신이 가능할까? (하나는 Half, 하나는 Full)

 

➜ 통신 가능하다. 이러한 경우를 Duplex mismatch라고 하는데, 통신은 가능하지만 충돌이 발생하여 속도가 느려진다. 바람직한 경우가 아니므로, 반드시 Duplex 모드를 서로 통일해주어야 한다.

 

 

그렇다면, 인접 장비 간 속도가 달라도 통신이 가능할까?

 

➜ 이 경우에는 통신이 불가능하다. 인접 장비간 데이터 전송속도는 반드시 동일해야 한다.