이론상: WIFI 상위 인터페이스가 포함된 TAP 인터페이스

이론상: WIFI 상위 인터페이스가 포함된 TAP 인터페이스

여러 개의 Linux TAP 인터페이스를 만들고 단일 WIFI 어댑터를 통해 패킷을 보내고 받을 수 있도록 하려고 합니다. 모든 의도와 목적을 위해 TAP 인터페이스가 완전한 기능을 갖춘 네트워크 어댑터로 작동하길 바랍니다. 그들은 자신의 DHCP 주소를 요청하고 다른 네트워크 어댑터처럼 로컬 네트워크에서 상호 작용할 수 있어야 합니다.

이더넷 어댑터를 사용하여 이 작업을 수행했지만 WiFi는 다른 짐승이라고 들었습니다. 정확한 이유는 기억나지 않지만 "라디오 방송 주소당 IP 주소 1개"와 관련이 있었습니다.

TAP 인터페이스를 사용하면 기본적으로 WiFi 연결을 통해 브리지 네트워킹을 수행할 수 있습니까? networkmanager를 사용하여 구성을 수행할 수 있습니까? 누군가 기사 한두 개를 연결할 수 있나요? 나는 이것에 대해 아무것도 찾는 데 어려움을 겪고 있습니다.

답변1

이 네트워크 엔지니어링 SE 링크802.11 프레임 헤더의 레이어 2 주소 4개이더넷과 Wi-Fi의 차이점을 아주 잘 설명합니다.

Wi-Fi에는 통신을 위해 추가 MAC 주소가 필요합니다. 이더넷의 소스 및 대상 MAC와 동일한 송신자 주소(SA) 및 대상 주소(DA) 외에도 Wi-Fi가 작동하려면 송신기 주소(TA) 및 수신자 주소(RA)가 필요합니다. 이렇게 하면 총 4개의 MAC 주소가 만들어집니다. 일반적인 경우는 클라이언트(STA)가 전송할 때 TA = SA이고 액세스 포인트(AP)가 STA로 전송할 때 DA = RA이므로 일반적으로 3개의 주소만 필요하며 이것이 AP가 구성되는 방식입니다. 가능한 주소는 4개 중 3개뿐입니다.

브리지 모드의 클라이언트는 위의 TA != SA 또는 DA != RA 및 4개의 주소가 모두 필요하고 AP는 3개로만 구성됨을 의미합니다. 그렇기 때문에 일반적인 구성에서는 Wi-Fi를 브리지할 수 없습니다. 클라이언트 브리징이 작동하려면 AP와 STA 모두에서 4개 주소 모드를 활성화해야 합니다. 이것은 일반적으로 호출됩니다무선 분배 시스템(WDS)하지만 호환되지 않는 구현이 여러 개 있을 수 있습니다. AP와 모든 STA는 호환 가능한 구현을 사용해야 합니다.

그래서:

  • 시스템 브리징이 AP인 경우 문제 없이 Wi-Fi를 브리지할 수 있습니다. 이것이 바로 기본 3개 주소 모드를 사용하여 모든 AP를 수행하는 것입니다.

  • 브리지를 시도하는 시스템이 단순 클라이언트(STA)인 경우 작동하지 않습니다. 최신 드라이버는 이러한 종류의 오류로 인해 무선 인터페이스를 브리지 포트로 설정하는 것을 방지합니다.

    # ip link set wlan0 master bridge0
    Error: Device does not allow enslaving to a bridge.
    
  • 구성할 수 있다면둘 다AP와 STA를 호환 가능한 WDS로 연결합니다. 예를 들어 모두 mac80211과 호환되는 드라이버를 사용하여 Linux를 실행하는 경우 다음을 사용하여 STA에서 활성화할 수 있습니다.

    # iw dev wlan0 set 4addr on
    

그런 다음 노예화될 수 있습니다.

    # ip link set wlan0 master bridge0
    # ip link show wlan0
    3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue master bridge0 state DOWN mode DEFAULT group default qlen 1000
    [...]

iw 명령을 사용하는 4개 주소 모드에 대한 일부 문서는 Linux 무선 위키에서 찾을 수 있습니다.AP 및 클라이언트 모드에 4주소 사용

AP 구성은 여기서 범위를 벗어납니다. 사용할 때호스트, 활성화할 특정 설정이 있습니다.

# WDS (4-address frame) mode with per-station virtual interfaces
# (only supported with driver=nl80211)
# This mode allows associated stations to use 4-address frames to allow layer 2
# bridging to be used.
#wds_sta=1

단일 Wi-Fi 기본 모드(3주소 모드) 연결을 통해 별도의 IP로 여러 컨테이너 또는 VM을 동시에 사용할 수 있는 해결 방법이 여전히 있습니다.하나MAC 주소(STA로 사용되는 주소): 따라서일반적으로 DHCP와 호환되지 않음이는 기본적으로 MAC 주소에 의존합니다(DHCP 서버가 MAC 주소를 허용하지 않는 한).dhcp-클라이언트-식별자옵션). 그것은 ~라고 불린다IPVLAN(일반적으로 컨테이너의 경우) 및 해당 TAP 대응(일반적으로 VM의 경우)이 호출됩니다.IPVTAP. L2 모드에서 사용하면 표준 이더넷 인터페이스처럼 보입니다.

(간단한IP 네트워크네트워크) 컨테이너는 인터페이스를 사용하는 호스트에서 게이트웨이 192.0.2.1을 사용하여 IP LAN 192.0.2.0/24에서 Wi-Fi 연결을 이미 설정한 후 이와 같이 사용할 수 있습니다.무선랜0:

# ip netns add testwifi
# ip link add link wlan0 name ipvl0 type ipvlan mode l2
# ip link set dev ipvl0 netns testwifi up
# ip -n testwifi address add 192.0.2.99/24 dev ipvl0
# ip -n testwifi route add default via 192.0.2.1
# ip netns exec testwifi ping -q -c1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.372/5.372/5.372/0.000 ms

NetworkManager에 4개 주소 모드와 관련된 옵션이 있는지 심각하게 의심됩니다. 에 관해서는IPVLAN/IPVTAP이는 다음과 같은 컨테이너/가상화 애플리케이션에서 지원되어야 합니다.LXC또는 실제로는 NetworkManager가 아닌 libvirt(기본적으로 IPVTAP를 지원하지 않는 것으로 보임)입니다.

관련 정보