내 질문:내가 어느 VLAN에 있는지 알아낼 수 있는 방법이 있나요? tcpdump가 이것을 표시할 수 있습니까? 아니면 일반 스위치가 나에게 말하도록 강제할 수 있나요?
답변1
일반 스위치가 무엇을 의미하는지 잘 모르겠지만 대부분의 스위치에서는 "액세스" 포트에 연결할 때 어떤 VLAN에 있는지 확인할 수 있는 방법이 없습니다.
즉, CDP(Cisco) 및 LLDP(Juniper) 프로토콜을 사용하여 다음을 수행할 수 있습니다.할 수 있는현재 어떤 VLAN에 속해 있는지 알아보세요. 액세스 포트에서 CDP/LLDP를 활성화하면 보안 위험(정보 유출)이 발생할 수 있으므로 네트워크에서 활성화하지 못할 수도 있습니다. tcpdump를 사용하여 CDP/LLDP 패킷을 분해하여 VLAN 번호를 찾을 수 있습니다.
Cisco CDP의 경우:
sudo tcpdump -nn -v -i eth0 -s 1500 -c 1 'ether[20:2] == 0x2000'
주니퍼 LLDP의 경우:
sudo tcpdump -nn -v -i eth0 -s 1500 -c 1 '(ether[12:2]=0x88cc or ether[20:2]=0x2000)'
답변2
전통적으로 클라이언트 컴퓨터에서는 자신이 어느 VLAN에 있는지 알 수 없었습니다. IP 주소와 서브넷 마스크를 보고 IP가 어느 서브넷에 있는지 확인할 수 있지만 VLAN은 확인할 수 없습니다. 하지만, 그와이어샤크 위키VLAN 태그 캡처에 대한 몇 가지 흥미로운 정보가 있습니다.
VLAN에서 캡처할 때 패킷에 VLAN 태그가 반드시 표시되는 것은 아닙니다.
예를 들어, 적어도 일부 운영 체제에서는 캡처할 수 있는 여러 네트워크 인터페이스 장치(물리적 네트워크 어댑터에 해당하는 "원시 인터페이스" 및 트래픽이 발생하는 "VLAN 인터페이스")가 있을 수 있습니다. VLAN 태그가 제거되었습니다. 운영 체제의 네트워크 스택은 VLAN 인터페이스에 연결되고 인터페이스는 VLAN 태그를 위한 공간을 확보하기 위해 일반 MTU보다 작은 이더넷 인터페이스로 네트워크 스택에 나타납니다. 이러한 운영 체제에서 "de-VLANized" 패킷이 아닌 원시 이더넷 패킷을 보려면 VLAN의 가상 인터페이스가 아닌 물리적 네트워크 장치에 해당하는 인터페이스(가능한 경우)에서 캡처해야 합니다.
다양한 운영 체제에서 VLAN 태그를 캡처하는 방법에 대한 자세한 내용은 다음과 같습니다. 운영 체제 또는 네트워크 어댑터 드라이버가 VLAN 태그 캡처를 허용하지 않는 경우 VLAN 스위치에서 포트 미러링(또는 Cisco에서 부르는 "포트 스패닝")을 설정하고 랩탑과 같은 독립형 시스템을 미러링된 포트에 연결하고 이 포트에 대한 인터페이스는 VLAN 구성원으로 구성되어 있으므로 연결하지 마십시오. 독립 실행형 시스템이 실행 중인 운영 체제나 사용 중인 네트워크 어댑터 유형에 관계없이 VLAN 태그가 확실히 표시됩니다.
리눅스
VLAN 태그 지정을 활성화하려면 vlan rpm(예: vlan-1.8-23)과 8021q 커널 모듈이라는 두 가지가 필요합니다. 설치 후 vconfig 명령을 사용하여 기존 물리적 장치에 VLAN 인터페이스를 생성할 수 있습니다. 자세한 내용은 vconfig(8) 매뉴얼 페이지를 참조하십시오.
VLAN 인터페이스가 설정되고 트래픽 흐름이 시작되면 Wireshark를 실행하고 원하는 VLAN 인터페이스(예: VLAN 100의 경우 eth0.100) 또는 기본 물리적 인터페이스(예: eth0)에서 캡처할 수 있습니다. 전자를 선택하면 해당 VLAN으로 향하는 프레임만 표시되고, 전자를 선택하면 해당 VLAN으로 향하는 프레임만 표시됩니다. 후자를 선택하면 모든 프레임이 표시되거나 태그가 지정되지 않은 프레임(있는 경우)만 표시될 수 있습니다. 이는 NIC, NIC 펌웨어, 드라이버, 달과 행성의 정렬에 따라 다릅니다. (다양한 어댑터, 펌웨어 버전 및 드라이버 동작을 나열하는 표가 유용할 수 있습니다. -Guy Harris)
VLAN이 구성된 호스트 시스템에서 캡처하는 경우 물리적 장치에서 캡처하는 경우에도 캡처된 프레임에 VLAN 태그가 표시되지 않을 수 있습니다. 드라이버는 pcap 라이브러리가 태그를 보기 전에 태그를 제거합니다. 아래 Windows 섹션에 언급된 Intel 기술 노트를 참조하세요. (Linux 드라이버는 드라이버 구성 옵션이나 Intel Windows 드라이버와 유사한 기능을 사용하여 VLAN 태그 가져오기를 지원합니까? - Guy Harris) (e100 드라이버는 2.4.26에서 잘 작동합니다 - Jaap Keuter)
윈도우
Windows에는 VLAN에 대한 기본 지원이 없습니다. 이러한 지원을 추가하는 전용 드라이버가 없으면 캡처할 수 있는 별도의 물리적 인터페이스와 VLAN 인터페이스가 없습니다.
따라서 Wireshark에 VLAN 태그가 표시되는지 여부는 보유하고 있는 네트워크 어댑터와 해당 드라이버가 VLAN 태그를 처리하는 방법에 따라 달라집니다.
대부분의 "간단한" 네트워크 어댑터(예: 널리 사용되는 Realtek RTL 8139)와 해당 드라이버는 VLAN 태그를 상위 계층에 전달하기만 하면 이러한 문제를 처리합니다. 이 경우 Wireshark는 VLAN 태그를 확인하고 이를 처리하고 표시할 수 있습니다.
좀 더 정교한 어댑터는 어댑터 및/또는 드라이버에서 VLAN 태그 지정을 처리합니다. 여기에는 일부 Intel 어댑터와 내가 아는 한 Broadcom 기가비트 칩셋(NetXtreme/57XX 기반 칩)이 포함됩니다. 또한 특수 드라이버가 있는 카드도 "실제" 드라이버의 간섭을 방지하기 위해 이 경로를 따를 수 있습니다.
답변3
아마도 lldpd 패키지가 가장 좋은 솔루션일 것입니다.
lldpctl
lldpd의 단점은 하드 코딩된 MAC 주소를 사용하여 ARP 요청을 보낸다는 것입니다. 동일한 스위치의 여러 컴퓨터에 설치하면 "mac 스푸핑" 시나리오가 발생합니다. 이러한 패킷을 처리하는 데는 자체적인 오버헤드가 있으며, 이로 인해 스위치의 CPU가 부풀어 오르기 시작합니다.
답변4
ifconfig -a
이것을 실행하면 장치가 VLAN 탭으로 표시될 것이라고 믿습니다 . 내가 이해한 바로는 VLAN ID는 인터페이스 이름의 접미사 부분입니다.
예를 들어, 시스템에 이더넷 장치가 포함되어 있는 경우 eth0
이 인터페이스를 통해 연결된 모든 VLAN ID에는 그 뒤에 VLAN ID가 붙은 해당 접미사가 붙습니다(예: ) eth0.192
. 다음 제목의 참고 자료를 참조하세요.9.2.6. 802.1q VLAN 태그 설정더 많은 정보와 예시를 확인하세요.
tcpdump
패킷에 802.1q VLAN 태그가 포함되어 있다고 가정하고 사용 하면 다음을 수행할 수 있습니다.
$ tcpdump -s0 -nnpi eth0 vlan 100
여기서 100은 VLAN ID입니다.
노트:tcpdump
리소스 섹션의 두 번째 링크에는 802.1Q를 사용하여 홈 네트워크 설정의 설정 및 조사를 보여주는 완전한 예가 있습니다.