
외부 Wi-Fi 어댑터가 연결된 여러 개의 라즈베리 파이 3 모델 B 보드가 있습니다. 내 목적은 다음과 같습니다
- RSP 장치의 메시 네트워크를 만듭니다.
- 각 RSP 보드에는 자체 AP가 있어야 하며 여기에 클라이언트(모바일/노트북)를 연결할 수 있습니다.
- 이러한 AP의 클라이언트는 서로 다른 RSP 장치 범위를 이동할 수 있으며 어떤 AP에 연결되어 있든(단일 네트워크에 연결된 것처럼) 여전히 서로 통신할 수 있어야 합니다.
#1을 수정하려면: RSP3의 내부 Wi-Fi 인터페이스(wlan0)에서 batman-adv를 사용했으며 이제 모든 장치가 가상 bat0 인터페이스를 통해 서로 핑할 수 있습니다.
#2의 경우: 외부 Wi-Fi 어댑터(wlan1)를 사용했고, Hostapd와 dnsmasq의 도움으로 각 RSP 보드에서 AP(모든 AP에서 동일한 ssid 및 채널)를 실행할 수 있습니다. 또한 현재 다른 AP에 몇 가지 모바일 장치를 연결했습니다.
내 주요 차단 문제는 목표 #3입니다.
이 문제를 해결하기 위해 bridge-utils 도구를 사용하여 wlan0과 wlan1 인터페이스 사이에 브리지를 만들려고 했습니다. 그러나 RSP에서는 두 인터페이스 모두 WDS 모듈을 지원하지 않습니다. 따라서 지금까지는 모든 클라이언트에 대해 단일 네트워크를 만들 수 없습니다. 또한 wlan0과 wlan1 사이에서 IP 전달을 사용하려고 시도했지만 다른 RSP 장치에서 연결된 클라이언트를 ping할 수 없습니다.
연결된 모든 클라이언트에 대해 단일 네트워크를 생성하는 다른 접근 방식(WDS 제외)이 있습니까?
답변1
이것이 작동하려면 조정이 필요한 몇 가지 사항이 있습니다.
첫째, 모든 RPI의 wlan1 AP를 동일한 채널에 두어서는 안 됩니다. 왜냐하면 RPI 간에 상당한 간섭이 발생하기 때문입니다.
또한 WDS를 사용할 필요도 없습니다. 보다이 설명이에 대한 자세한 내용은 각 AP의 SSID, WiFi 보안 유형 및 비밀번호가 동일한지 확인하세요.
모든 RPI에서 wlan0과 wlan1 사이에 브리지를 만들어야 한다는 점에서 올바른 생각을 갖고 있습니다. 나는 bridge-utils에 익숙하지 않지만 batman-adv 문서의 브리지 만들기 지침을 따르는 것이 더 나을 것입니다.여기.
주목해야 할 또 다른 점은 DHCP 서비스를 위해 dnsmasq를 실행할 필요가 없다는 것입니다. 클라이언트는 자동으로 할당된 링크 로컬 IPv6 주소를 사용하여 이 무선 LAN을 통해 서로 통신할 수 있습니다.
편집하다:내 실수. RPI3에서 WLAN을 사용하여 실제 브리지를 만드는 것은 지원되지 않는 것 같습니다. NAT를 사용하면 잠재적인 해결 방법이 있는 것 같습니다.여기. 브리지 연결을 지원하는 외부 WiFi 어댑터 2개를 연결하는 경우에도 가능할 수 있습니다.
답변2
당신은 IP 구성에 대해 아무 말도 하지 않았으며 IP 구성은 바로 문제 #3을 해결하는 데 필요한 것입니다.
IP 계획을 신중하게 선택하세요
전체 네트워크에는 "일반 IP 체계"가 있습니다. 예를 들어, 많은 네트워크에서 192.168.*.*
.
당신이 사용할 수있는IPv4 및 IPv6 모두의 모든 IP 개인 공간. 사용자의 다른 네트워크와 충돌하지 않는지 확인하십시오.또는 RPi에 연결될 수도 있습니다.
예를 들어 글로벌 네트워크를 사용한다고 가정해 보겠습니다 172.17.*.*
. "모두 0"( 172.17.*.0
) 및 "모두 1"( 172.17.*.255
) 주소는 네트워크 및 모든 하위 분할에서 예약되어 있습니다(즉, 사용할 수 없음).
우리는 이 큰 네트워크를 모든 RPi가 독립적으로 사용할 더 작은 네트워크로 세분화해야 합니다. 하위 네트워크 중 하나는 RPi 간의 통신에 사용되며 이를 우리가 172.17.0.*
직접 보관할 것입니다. 다른 숫자를 사용할 수도 있지만 0을 사용하면 스크립트로 Pis를 쉽게 구성할 수 있습니다.
네트워크의 "공용" 부분은 각 RPi에 고유한 IP를 사용 172.17.xxx.*
합니다 xxx
. 다시 말하지만, 스크립트를 쉽게 작성하기 위해 1부터 시작하여 증가합니다.
RPi에는 IP가 필요합니다.둘 다네트워크. 공용 네트워크의 경우 를 사용하는 것이 가장 좋습니다 . .254
따라서 가 됩니다 172.17.xxx.254
. 하지만 중앙 네트워크는 어떻습니까? RPi는 172.17.xxx.*
다른 RPi에 의해 네트워크에 대한 게이트웨이로 사용됩니다 . IP 주소를 릴레이된 네트워크와 일치시키는 것이 논리적일 뿐입니다. 우리는 를 사용할 것입니다 172.17.0.xxx
.
Pis 설정
RPi를 구성합니다'
wlan1
(공공의인터페이스)를 사용하려면결정된모든 RPi 중에서 고유하고 0이 아닌 IP172.17.xxx.254
입니다 (위 참조).xxx
넷마스크는255.255.255.0
.RPi를 구성합니다'
wlan0
(사적인인터페이스)를 사용하려면결정된IP172.17.0.xxx
는xxx
위와 같습니다. 넷마스크는255.255.255.0
.$END
모든 RPi에서 사용 중인 RPi 수로 바꾼 후 다음 스크립트를 실행합니다 .echo 1 > /proc/sys/net/ipv4/ip_forward for i in $(seq 1 $END); do route add -net 172.17.$i.0 netmask 255.255.255.0 gw 172.17.0.$i; done iptables -A FORWARD -s 172.17.0.0/16 -d 172.17.0.0/16 -j ACCEPT
TL;DR, 우리는 다음을 수행합니다. 여기서는 대규모 네트워크를 선택합니다 172.17.0.0/16
. 우리는 이를 255개의 소규모 네트워크로 세분화합니다 172.17.xxx.0/24
. 우리는 스스로 보관 0
하고 다른 모든 번호는 사용자에게 제공합니다. 그런 다음 RPi에 다른 컴퓨터로 향하는 패킷을 적절한 "게이트웨이" RPi로 전송하도록 지시합니다.
사용자의 기기에게 올바른 위치를 보라고 지시하세요.
공용 네트워크의 DHCP 서버로 dnsmasq를 사용한다고 가정합니다. 사용자 장치를 올바르게 구성하려면 설정을 조정해야 합니다.
네트워크에 적합한 범위(IE
172.17.xxx.1
~ ) 의 주소를 제공하도록 DHCP를 설정합니다172.17.xxx.253
.dnsmasq 구성의 DHCP 부분에 고정 경로를 추가합니다(다시
xxx
적절하게 교체).dhcp-option=121,16.172.17.0.0,172.17.xxx.254
고정 경로를 사용하면 클라이언트의 기본 게이트웨이를 덮어쓰지 마세요. 이렇게 하면 여전히 다른 네트워크(예: 이더넷이 연결된 노트북)에 연결되어 있는 경우 아무런 문제가 발생하지 않습니다.
설정을 커밋하기 전에 1~2개의 Pi와 1~2개의 클라이언트로 이를 테스트해야 합니다.모두당신의 RPi.