나는 (매우 간단한) 사용자 수준 IP 네트워크 스택을 작성하고 있습니다. 이렇게 하려면 OS 네트워크 스택을 "우회"하고 원시 이더넷 프레임을 가져와야 합니다. 이 tap
인터페이스는 실행 가능한 접근 방식처럼 들리지만 나에게는 작동하지 않는 것 같습니다. 과 인터페이스 bridge
사이에 인터페이스를 만들었지 만 실제 인터페이스에는 다른 많은 패킷이 포함되어 있음에도 불구하고(다시 확인됨) 거기에는 매우 이상한 UDP 패킷이 몇 개만 나타나는 것 같습니다.wlan
tap
tcpdump -i tap0 -e -vv
wlan
tcpdump
내가 뭐 잘못 했어요? 사용자 공간 네트워크 스택 솔루션을 해결하는 다른 (더 나은) 방법이 있습니까?
답변1
Wi-Fi 스테이션 모드 인터페이스를 브리지할 수 없으며 작동하지 않습니다. 어떤 소프트웨어 스택을 사용하는지는 중요하지 않습니다. 이 제한은 가상화 등에 적용됩니다.
그것은 명확하지 않습니다. 설명하려고 노력하겠습니다.
ieee802.11 패킷에는 (일반적으로) 세 개의 주소가 포함됩니다. 액세스 포인트의 주소, 발신자 주소, 수신자 주소입니다. 발신자와 수신자 주소는 유선 이더넷과 무선 이더넷 간에 공유되는 이더넷 MAC 주소입니다. 패킷은 무선 "스테이션"과 유선 네트워크(일명 "DS", 분배 시스템)의 호스트 간에 흐를 수 있지만 스테이션 ID와 대상 주소를 포함할 만큼 패킷에 주소 필드가 충분하지 않기 때문에 스테이션에서 더 이상 배포될 수 없습니다. (같은 분야입니다.)
결과적으로 "메인 모드"(액세스 포인트) 인터페이스는 브리지할 수 있지만 스테이션 모드 인터페이스는 브리지할 수 없습니다.
해결책은 일반적으로 브리징 대신 NAT를 사용하는 라우팅을 사용하는 것입니다.