여러 개의 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를 지원하지 않는 것으로 보임)입니다.