重啟後我總是需要 ifdown/ifup wlan0

重啟後我總是需要 ifdown/ifup wlan0

我正在嘗試創建一個由 5 台電腦組成的 ad-hoc wifi(一台 Windows PC 和 4 個裝有 raspbian 的樹莓派)。樹莓派將透過 mqtt 進行通信,但這不是重點。我遇到的問題是,我總是需要執行以下操作才能wlan0在每次重新啟動後獲得介面:

sudo ifdown wlan0
sudo ifup wlan0

你知道為什麼嗎?這是我的配置(顯然除了 IP 位址之外,每個 pi 上的配置都相同!)

~ % 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

任何想法?

這似乎有效,但並不總是有效——就像十次啟動中就有一次,真的很奇怪? !

答案1

您是否嘗試過以下解決方案之一?我必須在這裡猜測答案,因為問題不容易重現,可能是您獲得的驅動程式的問題。

  1. 在介面檔中嘗試註解掉“auto wlan0”並保留“allow-hotplug wlan0”

    #auto wlan0
    allow-hotplug wlan0
    iface wlan0 inet dhcp
    ... rest of the config ...
    
  2. 可能不是您正在尋找的理想解決方案,但請嘗試在您最喜歡的腳本目錄中建立具有執行權限的新 shell 腳本,其中包含以下內容。

    ifdown wlan0 
    ifup wlan0 
    

    然後將以下行新增到您的介面檔案中。

    auto wlan0
    iface wlan0 inet dhcp
    ... rest of the config ...
    post-up /path-to-your-script/script.sh
    
  3. 當您的電腦在沒有啟動無線連線的情況下啟動時。嘗試擺弄iwconfig不同的參數(嘗試 man iwconfig 以獲得完整的清單),直到出現介面。我想也許txpower某種開關可以幫助你。如果這對您有用,請pre-up <command-that-worked>在您的介面檔案中使用,如第二個答案所示,並將命令留在那裡。

    所以最後是這樣的(記得將絕對路徑傳遞給(前|後)-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,請使用類似網絡10.10.0.1,掩碼255.255.255.0 對於 eth,請使用類似網絡192.168.0.1,掩碼255.255.255.0

我在 RPI 上沒有遇到這個問題(可能是因為我總是讓 wlan0 和 eth0 網路 IP 非常不同)。但在我的 Windows PC 上,我一直遇到這個問題:當我使用無線,192.168.1.x然後插入乙太網路連接埠時,例如我的 rasbperry 和192.168.0.x位址(注意第三個八位元組),我總是失去網路連接。

答案4

取消註釋auto eth0,auto eth1auto wlan您希望在裝置啟動時出現的介面。

相關內容