以程式方式在 ad-hoc 和正常無線網路之間切換
我正在使用 Raspberry Pi 建構一個小型獨立設備。點擊按鈕時,我想配置一個 ad-hoc 網路,以便使用者可以連接到網路,使用基於 Web 的配置工具,然後設備將在退出時加入指定的無線網路。我已經準備好了所有的軟體,但是我對 Linux 網路的了解不是很好。我正在使用 Raspbian Jessie - 2016 年 9 月。
這是我建議啟動 ad-hoc 網路的方法。
更改
/etc/network/interfaces
為:auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 iface wlan0 inet static address 192.168.0.1 netmask 255.255.255.0 wireless-channel 0 wireless-essid DEVICE wireless-mode ad-hoc
雖然我認為此時不應該使用它,但我的
/etc/wpa_supplicant/wpa_supplicant.conf
包含:country=GB ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1
當使用者連接時,我還
isc-dhcp-server
執行分配 IP 地址。的內容/etc/dhcp/dhcpd.conf
是:ddns-update-style none; option domain-name "DEVICE"; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.0.255; option broadcast-address 192.168.0.255; }
當需要更改回正常網路時,更改
/etc/network/interfaces
為:auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
我
/etc/wpa_supplicant/wpa_supplicant.conf
改為:country=GB ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="{{ssid}}" psk="{{key}}" }
如果我手動進行這些更改並重新啟動設備,它們會按預期工作。但是,我不知道哪個命令序列會導致應用新配置。
我嘗試了以下各種組合:
sudo ifdown --force wlan0 && sudo ifup wlan0
,
sudo service isc-dhcp-server stop
和
sudo service networking restart
.要麼我保留舊配置,要麼無線網路失去,直到我重新啟動。
我的配置文件是否適合臨時網路和正常網路?我使用什麼命令序列在它們之間切換,在 ad-hoc 模式下啟動 dhcp,在正常模式下停止 dhcp?
您可以嘗試使用配置而不是介面名稱,如此處所述。
你的介面文件應該給出這兩種情況的描述,
auto lo iface lo inet loopback iface eth0 inet dhcp auto wlan0 allow-hotplug wlan0 iface adhoc inet static address 192.168.0.1 netmask 255.255.255.0 wireless-channel 0 wireless-essid DEVICE wireless-mode ad-hoc iface normal inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
adhoc
和normal
是網路配置名稱。要啟用/禁用您應該使用的配置,interface=configuration作為ifupdown的參數,# ifup wlan0=adhoc # ifdown wlan0=adhoc