
저는 5대의 컴퓨터(Windows PC 1대와 Raspbian이 설치된 Raspberry Pi 4대)로 구성된 임시 Wi-Fi를 만들려고 합니다. Raspberry Pi는 mqtt를 통해 통신하지만 그게 요점이 아닙니다. 내가 겪고 있는 문제는 wlan0
재부팅할 때마다 인터페이스를 얻으려면 항상 다음을 수행해야 한다는 것입니다.
sudo ifdown wlan0
sudo ifup wlan0
이유를 아시나요? 내 구성은 다음과 같습니다(분명히 IP 주소를 제외한 모든 파이에서 동일합니다!).
~ % ifconfig
eth0 Link encap:Ethernet HWaddr b8:27:eb:ff:88:99
inet addr:192.168.1.41 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:951 errors:0 dropped:0 overruns:0 frame:0
TX packets:266 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:66321 (64.7 KiB) TX bytes:43663 (42.6 KiB)
wlan0 Link encap:Ethernet HWaddr 00:0f:13:51:05:8c
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:2520 (2.4 KiB)
~ % iwconfig
wlan0 IEEE 802.11bgn ESSID:"mirroir"
Mode:Ad-Hoc Frequency:2.412 GHz Cell: 42:B1:44:EB:D2:C1
Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:on
lo no wireless extensions.
eth0 no wireless extensions.
~ % more /etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
auto wlan0
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
wireless-channel 1
wireless-essid mirroir
wireless-mode ad-hoc
wireless-key 967136deac
~ % sudo route add -net 192.168.0.0 netmask 255.255.255.0 wlan0
~ % netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 wlan0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
어떤 아이디어가 있나요?
이것이 작동하는 것처럼 보이지만 항상 그런 것은 아닙니다. 부팅이 10번 중 1번 정도 되는 것 같습니다. 정말 이상합니까? !
답변1
다음 해결 방법 중 하나를 시도해 보셨나요? 문제는 쉽게 재현되지 않고 구입하신 드라이버에 문제가 있을 수 있으므로 여기서 답을 추측해야 합니다.
"auto wlan0"을 주석 처리하고 인터페이스 파일에 "allow-hotplug wlan0"을 남겨 두십시오.
#auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp ... rest of the config ...
아마도 당신이 찾고 있는 이상적인 솔루션은 아닐 것입니다. 그러나 다음 내용을 포함하여 즐겨 사용하는 스크립트 디렉터리에 실행 권한이 있는 새 셸 스크립트를 만들어 보십시오.
ifdown wlan0 ifup wlan0
그런 다음 인터페이스 파일에 다음 줄을 추가합니다.
auto wlan0 iface wlan0 inet dhcp ... rest of the config ... post-up /path-to-your-script/script.sh
무선 연결을 활성화하지 않고 컴퓨터가 시작되는 경우.
iwconfig
인터페이스가 나타날 때까지 다양한 매개변수를 조작해 보십시오 (전체 목록을 보려면 man iwconfig를 시도하십시오).txpower
어떤 종류의 스위치가 도움이 될 수 있을 거라 생각했어요 . 이것이 효과가 있다면pre-up <command-that-worked>
두 번째 답변과 같이 인터페이스 파일에서 사용하고 거기에 명령을 그대로 두십시오.그래서 결국 이렇게 됩니다((pre|post)-up에 절대 경로를 전달하는 것을 기억하세요)
pre-up /sbin/iwconfig wlan0 txpower on
답변2
여기서도 똑같은 문제가 있습니다. 문제는 타이밍 문제입니다. 부팅 프로세스가 .wlan0을 생성하면 wlan0은 아직 준비되지 않은 것입니다 ifup
.
pre-up sleep 5
인터페이스 파일의 wlan0에 wait 문을 추가하여 이 문제를 해결했습니다.
marcelo@breeze:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
pre-up sleep 5
address 10.0.0.42
netmask 255.255.255.0
gateway 10.0.0.2
dns-nameservers 10.0.0.2
wpa-ssid mycoolssid
wpa-psk returnguantanamo
답변3
eth0 인터페이스와 wlan0에 대해 다른 "로컬" 네트워크를 사용하고 싶을 수도 있습니다.
따라서 wlan의 경우 network 10.10.0.1
,mask와 같은 것을 사용하고 255.255.255.0
eth의 경우 network 192.168.0.1
,mask 와 같은 것을 사용합니다.255.255.255.0
RPI에서는 이 문제가 발생하지 않았습니다(아마도 항상 wlan0과 eth0 네트워크 IP가 매우 다르기 때문일 것입니다). 하지만 내 Windows PC에서는 이 문제가 계속 발생합니다. 무선을 사용한 다음 rasbperry 및 주소(세 번째 옥텟 참고) 192.168.1.x
와 같은 이더넷 포트에 연결하면 항상 네트워크 연결이 끊어집니다.192.168.0.x
답변4
주석을 제거 auto eth0
하거나 장치가 시작될 때 표시하려는 인터페이스를 제거 auto eth1
하십시오 .auto wlan