내 Linux 기술은 기껏해야 초보적이지만 배우려고 노력하고 있습니다. 그러니 이 사실과 이 질문을 생각해 보세요. Debian Buster가 설치된 노트북이 있습니다. 이더넷과 WiFi 어댑터를 함께 연결해야 합니다.
저는 많은 튜토리얼을 읽었으며 모두 이 게시물에 설명된 것과 거의 같은 내용을 담고 있습니다.데비안을 사용하여 WiFi에서 이더넷으로 네트워크 인터페이스 브리지를 구성하는 방법은 무엇입니까?그러나 이 기사에서는 다음과 같이 지적합니다.
"wlan0 인터페이스도 원격 AP에 연결하도록 구성되어야 합니다.",
그래서 즉흥적으로 시도했습니다. 아래는 내 구성입니다. 말할 필요도 없이 {ssid} 및 {password}는 실제 값으로 대체되었습니다.
auto enp0s31f6
allow-hotplug enp0s31f6
iface enp0s31f6 inet manual
auto wlp4s0
allow-hotplug wlp4s0
iface wlp4s0 inet manual
wpa-ssid {ssid}
wpa-psk {password}
auto br0
iface br0 inet static
bridge_ports enp0s31f6 wlp4s0
address 10.0.10.8
netmask 255.255.255.0
gateway 10.0.10.1
dns-domain prox
dns-nameservers 8.8.8.8
그래서 이런 종류의 작품이 있습니다! 이 경우 이더넷 측은 작동하지만 Wi-Fi 측은 작동하지 않으므로 이더넷이 끊어지면 인터넷 연결이 끊어져 이 활동의 목적이 무산됩니다. 내가 여기서 뭔가 잘못하고 있는 걸까요? 무선 인터페이스를 무선 네트워크에 연결하려면 다른 방법을 사용해야 합니까?
이 구성을 사용하여 무선으로 연결하면 무선 네트워크에 연결할 수 있지만 분명히 브리지에서는 작동하지 않습니다.
allow-hotplug wlp4s0
iface wlp4s0 inet static
wpa-ssid {ssid}
wpa-psk {password}
address 10.0.10.8
netmask 255.255.255.0
gateway 10.0.10.1
dns-domain prox
dns-nameservers 8.8.8.8
도움을 주셔서 대단히 감사합니다. 일주일의 대부분을 작동시키려고 노력했는데 거의 포기하고 있습니다.
###고쳐 쓰다###
답장을 보내주신 @dirkt에게 감사드립니다. 이해가 되네요. 그러면 근본적인 문제를 더 명확하게 설명할 수 있을 것 같습니다. 네트워크 어댑터를 사용하기 전에 브리지를 적용하는 응용 프로그램을 사용하고 있습니다.
그런 다음 애플리케이션은 브리지를 사용하여 네트워크와 통신합니다. 브리지와 함께 사용하려면 네트워크 어댑터가 하나만 필요합니다. 집에 이더넷이 많지 않기 때문에 Wi-Fi 어댑터를 선호합니다(저는 이 설정을 사용하고 있습니다).
그래서 이더넷 쪽을 걱정하지 않고 WiFi 어댑터를 브리지하려고 해도 작동하지 않습니다. 작동을 시도하지만(즉, 오류가 발생하지 않음) 브리지에 IP 주소를 발급하지 않습니다.
물어보기 전에 이 애플리케이션은 전문 오디오 산업을 위한 독점 오디오 애플리케이션입니다. 제조사들이 왜 이것이 최선의 방법이라고 생각하는지 모르겠지만, 내가 읽은 바에 따르면 이는 이상한 일이 아닌 것 같습니다. 소프트웨어 부분이 가상화되었기 때문에 일부 가상화 플랫폼도 동일한 작업을 수행할 것이라고 믿습니다. 아마도 그것이 이유일 것이다.
따라서 위의 내용을 고려하여 WiFi 어댑터를 단면 브리지로만 사용하면 됩니다. 이 정도면 충분하지 않나요? 이 문제가 해결될 수 있나요?Wi-Fi 클라이언트와 이더넷 문제를 연결할 수 없습니까?아니면 내가 무슨 뜻인지 오해한 걸까?
답변1
이더넷과 WiFi 어댑터를 함께 연결해야 합니다.
FAQ는 다음과 같습니다. Wi-Fi는 기본적으로 3주소 모드를 사용합니다. 그 결과Wi-Fi 클라이언트와 이더넷을 연결할 수 없습니다..
(기술적으로는 가능하지만 작동하지 않습니다. Wi-Fi 네트워크의 패킷은 브리지되어 있고 동일한 서브넷에 있더라도 이더넷의 대상에 도달하지 않습니다. "작동합니다"라고 쓰면, 아마도 이 사례를 테스트해 본 적이 없을 것입니다.)
그러나 당신은할 수 있는브리지 aWiFi 액세스 포인트(AP) 및 이더넷.
그래서 이것은XY 문제: 귀하의 Y는 "Debian Buster에서 Wi-Fi와 LAN을 연결해야 합니다."이지만 X가 무엇인지 모릅니다(아마도 집에 Wi-Fi와 LAN이 있고 동일한 서브넷에 있기를 원합니까?).
X가 무엇인지에 따라 이를 달성하는 다른 방법이 있습니다. 예를 들어 Wi-Fi AP와 LAN을 브리지할 수 있습니다.라우터에서.
답변2
예비 설명
~처럼@dirkt가 이미 작성했습니다., 브리징 제한은 네트워크 스택이 무선 인터페이스를 통해 다른 소스 MAC 주소를 사용하여 프레임을 전송하려고 시도(및 실패)하지 않도록 강제하는 것입니다. 이 제한 사항에 대한 자세한 내용은 이 NE SE Q/A에서 확인할 수 있습니다.802.11 프레임 헤더에 있는 4개의 레이어 2 주소. 링크 제목에도 불구하고 기본적으로 3개의 MAC만 사용되며, 스테이션 클라이언트("STA")가 단순한 엔드포인트로 처리되는 것이 아니라 액세스 포인트("AP")가 세 번째 MAC을 브리지로 사용합니다. 4일 결석. STA 브리징을 허용하는 4주소 모드("4A")로 전환하려면 4A를 지원하도록 AP를 재구성해야 합니다. 예를 들어주인브리지가 완전히 구성되어야 하는 각 STA에 대해 4A 모드에서 추가 로컬 클론 무선 인터페이스를 생성함으로써 평소처럼 일반 STA에 대한 서비스 제공을 지원하거나 4A 모드 STA에 다른 서비스를 제공할 수 있습니다. 대부분의 공용 고객 AP는 이 기능을 지원하지 않습니다(재구성 가능한 AP를 실행하지 않는 한).주인그리고 후드 아래에 적절한 Wi-Fi 하드웨어/펌웨어가 있어야 합니다).
OP의 특정 경우에는 추가 단서가 있습니다. 브리지는 단일 브리지 포트를 사용하므로 괜찮습니다.라고 할 수 있다그냥 가정해 보세요하나소스 MAC 주소는 브리지에서 나옵니다. 브리지가 무선 카드의 MAC 주소로 구성된 경우 프로토콜에 내재된 제한 사항은 이 경우 적용되지 않습니다. 그러나 이 특정 경우에는 무선 인터페이스 설정을 허용하도록 네트워크 스택에 알릴 방법이 없습니다. 브리지 포트로. 누군가가 다른 사람을 원한다면상호 작용(아니요브리지포트) 이렇게 행동하면IPVLAN가장 쉬운 선택이 될 것입니다.
그래서 사용교통 통제기능은 허브 해결 방법과 동일한 기능을 사용합니다.
- 들어오는 무선 인터페이스의 모든 프레임을 가져와서 이동하여 들어오는 미러 인터페이스를 표시합니다.
- 이 미러링된 인터페이스에서 나가는 모든 프레임을 가져와서 나갈 준비가 된 무선 인터페이스로 이동합니다(전파로).
- 무선 인터페이스 대신 미러 인터페이스를 사용하도록 네트워크 스택을 구성하거나 이 미러 인터페이스(와이즈피어)를 브리지 포트로 사용하여 무선 인터페이스를 브리지 포트로 설정하는 것을 재현합니다.
그러면 해당 가상 "허브"의 다른 포트가 OP의 경우 브리지 포트로 실제 브리지에 연결됩니다. 기술적으로 브리지 포트로 설정된 무선 인터페이스가 아니므로 커널은 이를 비활성화할 필요가 없으므로 특별한 제한이 없습니다.
참고: 저는와이즈한 쌍의 인터페이스. 사용하다가짜인터페이스도 작동하지만 선택했습니다와이즈인터페이스 쌍에는 두 가지 이유와 한 가지 추가 이유가 있습니다.
나이가 많은IP 경로 2/커널 버전
tc ... action mirred
다음으로 리디렉션할 수 없습니다.입구하지만 단지출구. ㅏ와이즈한 쌍의 인터페이스는 방향 인버터 역할을 합니다.출구한쪽은 된다입구반면에 이 답변은 이전 시스템에서도 작동합니다.네트워크 스택 작동 방식(거기에 약도가 있습니다), 이는 AF_PACKET(
tcpdump
) 캡처를 비대칭으로 만듭니다.입구AF_PACKET 복제 후에 발생하며tcpdump
볼 수 없습니다 .입구트래픽이 다음으로 리디렉션됩니다.입구미러 인터페이스에서는 두 인터페이스 모두에서 동시에 볼 수 있습니다.출구이는 AF_PACKET 이전에 발생합니다. 이 답변은 일반적인 동작을 유지합니다. 즉, 무선 인터페이스와 미러링된 인터페이스(및 미러링된 인터페이스)에서 양방향이 모두 표시됩니다.와이즈실제로 관련되지 않은 피어 인터페이스).보너스 이유:nftables겨우 얻었어출구커널 5.16/5.17에서는 여전히 지원이 불가능할 수 있습니다. 마찬가지로 자유롭게 선택할 수도 없습니다.방향프레임 이동용. 그리고와이즈방향성 인버터로서 모든 조건이 충족됩니다.입구도착하다출구교체도 가능하도록교통 통제그리고nftables.
미러 인터페이스(또는와이즈여기서 구현(미러링된 인터페이스의 다른 쪽)은 IP 주소를 직접 수신할 수 있지만(DHCP 사용 포함) OP 문제를 해결하는 브리지 포트로 사용됩니다. 즉, 애플리케이션에 브리지가 필요합니다.
준비하다
OP에서 해결해야 하는 몇 가지 세부 사항을 삭제하겠습니다.
네트워크 연결이 일시적으로 끊어지므로 원격으로 설정을 수행해서는 안 됩니다.
OP는 IP 주소(IPv4 또는 IPv6 없음), DNS 또는 기타 사용자 정의 설정을 요청하지 않고 SSID에만 연결되도록 Wi-Fi를 재구성해야 했습니다. 이 부분은 이제 브리지 인터페이스용입니다. 구성은 원래 영구 주소이든 이 답변의 12:34:56:78:9a:bc와 같은 다른 주소(비무작위 모드)이든 항상 무선 인터페이스에서 동일한 MAC 주소를 유지해야 합니다.
시스템 구성으로의 통합은 OP를 통해 수행되어야 합니다. 여기서는 수동 설정만 사용할 수 있습니다. 브릿지는 무선으로 연결될 때까지 실제 연결이 되지 않으므로 성급하고 쓸데없이 시작해서는 안 됩니다. 요즘에는 무선 인터페이스 대신 일반적인 구성이 브리지(예: DHCP 클라이언트 실행 포함)에 설정됩니다.
br_netfilter
커널 모듈을 로드하면 안 됩니다. 현재 로드된 경우 부작용을 피하십시오rmmod br_netfilter
(왜냐하면Docker가 libvirt 브리지 네트워크를 중단합니다.그리고 많은 브리지 설정).
따라서 변경하기 전에 예제 구성을 정의해 보겠습니다. 유일한 관련 정보는 무선 인터페이스 이름 wlp3s0
과 해당 MAC 주소(이 경우 12:34:56:78:9a:bc)입니다.
# ip link show dev wlp3s0
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
속도
선호하는 네트워크 구성 도구를 사용하여 연결하고 IPv4 또는 IPv6에 대한 주소를 요청하지 않도록 Wi-Fi를 재구성하세요.
이 작업을 수행하는 것은 OP에 달려 있습니다.
vmbr0
동일한 MAC 주소로 브리지 인터페이스를 생성wlp3s0
하고 특수 기능을 비활성화합니다(예기치 않은 트래픽 생성을 방지하기 위해).ip link add name vmbr0 address 12:34:56:78:9a:bc type bridge stp_state 0 forward_delay 0 mcast_snooping 0 mcast_router 0
또는 이미 생성된 경우 설정을 변경합니다.
ip link set dev vmbr0 down ip link set dev vmbr0 address 12:34:56:78:9a:bc type bridge stp_state 0 forward_delay 0 mcast_snooping 0 mcast_router 0
만들다와이즈인터페이스는
vmbr0p1
고유한 브리지 포트로 설정되며vmbr0
할당된 피어 링크와 동일한 MAC 주소를 갖습니다wlp3s0mirred
(MAC 주소는 중요하지 않음).ip link add name vmbr0p1 address 12:34:56:78:9a:bc master vmbr0 type veth peer name wlp3s0mirred
IPv6 SLAAC와 같은 자체 트래픽을 재구성
wlp3s0
하거나 생성하지vmbr0p1
않습니다wlp3s0mirred
. 이 3개의 인터페이스는 이제 브리지 포트(또는 기능적으로 브리지 포트와 동일)입니다.sysctl -w net.ipv6.conf.vmbr0p1.disable_ipv6=1 sysctl -w net.ipv6.conf.wlp3s0mirred.disable_ipv6=1 sysctl -w net.ipv6.conf.wlp3s0.disable_ipv6=1 #1st bullet should already have done this one
철저하게 설명하자면(선택 사항):
ip link set dev wlp3s0 arp off ip link set dev wlp3s0mirred arp off ip link set dev vmbr0p1 arp off # this one is probably already forced by being a bridge port.
인터페이스는 다음 명령 배치 이전에 이미 존재해야 합니다.
트래픽 리디렉션
wlp3s0mirred
리디렉션됨입구wlp3s0
도착출구사용TC
tc qdisc add dev wlp3s0mirred ingress tc filter add dev wlp3s0mirred ingress matchall action mirred egress redirect dev wlp3s0
위의 것 대신에 다음을 사용하십시오.nftables
nft add table netdev hijack nft add chain netdev hijack towireless '{ type filter hook ingress device wlp3s0mirred priority 0; policy accept; }' nft add rule netdev hijack towireless fwd to wlp3s0
wlp3s0
리디렉션됨입구wlp3s0mirred
도착출구⚠️질문이 있어요:WPA는 다음에 따라 다릅니다.이폴이더넷 프레임 유형 0x888E. 프레임을 하이재킹하고 있고 인증 데몬(
wpa_supplicant
)에게 브리지에서 이를 읽도록 지시할 수 없기 때문에 브리지를 성공적으로 사용하라는 지시를 내릴 수 없기 때문에 여전히 브리지에서 EAPOL 프레임을 찾고 있습니다wlp3s0
. 이러한 프레임을 계속 사용할 수wlp3s0
있도록 하려면 먼저 예외를 추가해야 합니다wpa_supplicant
. 그렇지 않으면 초기 연결이 성공하더라도 마지막 필터만 사용하여(다음 예외 없이) 수행된 다음 키 재생성은 실패합니다(그리고 추가 재연결도 성공하지 못합니다). 무선 인터페이스가 지속적으로 연결되고 연결이 끊어지는 것 같습니다.사용TC
tc qdisc add dev wlp3s0 ingress tc filter add dev wlp3s0 ingress pref 1 protocol 0x888e matchall action pass tc filter add dev wlp3s0 ingress pref 2 matchall action mirred egress redirect dev wlp3s0mirred
위의 것 대신에 다음을 사용하십시오.nftables
nft add table netdev hijack # already done but doesn't fail to write it again nft add chain netdev hijack fromwireless '{ type filter hook ingress device wlp3s0 priority 0; policy accept; }' nft add rule netdev hijack fromwireless ether type 0x888e accept nft add rule netdev hijack fromwireless fwd to wlp3s0mirred
모든 인터페이스 설정
ip link set dev vmbr0p1 up ip link set dev wlp3s0mirred up ip link set dev vmbr0 up
이 대답은 한 가지를 허용합니다. 브리지는 시스템의 기본 인터페이스가 될 수 있으며 전환에 사용될 수 있습니다.정상트래픽은 이더넷 연결을 통해 사용되는 것과 동일한 방식으로 Wi-Fi 연결을 통해 전송됩니다.
이것이 보장하지 않는 것은 실제로 작동하기 위해 브리지가 필요한 독점 애플리케이션을 생성한다는 것입니다. 이는 브리지가 필요한 이유에 따라 다릅니다. 만약에 어떠한이상다른 소스 MAC 주소를 사용하는 트래픽이 원인이지만 여전히 작동하지 않을 가능성이 높습니다.