2021年1月7日 星期四

Linux Raspberry pi Wi-Fi 自動連線、DNSDynamic 網址

配置你的網路連線的其中一個方法就是去手動配置你的網絡卡介面配置檔案。使用你用的比較順手的一個檔案編輯器(哥習慣的是vi)來開啟該介面設定檔案:

sudo vi /etc/network/interfaces

把該配置檔案修改成DHCP連線模式如下所示:

1 auto lo
2 
3 iface lo inet loopback
4 iface eth0 inet dhcp
5 
6 allow-hotplug wlan0
7 iface wlan0 inet dhcp
8 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
9 iface default inet dhcp

下一步你需要做的就是去提供你的WiFi網路連線資訊。請開啟你的WPA配置檔案如下:

sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

下面給出了我的一個配置示例以供參考:

 1 ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
 2 update_config=1
 3 network={
 4   ssid="ENTER NETWORK NAME"
 5   proto=WPA
 6   key_mgmt=WPA-PSK
 7   pairwise=TKIP
 8   psk="ENTER WPA KEY"
 9   auth_alg=OPEN
10 }

如果你不想使用DHCP或者說你想要設定多個網路連線的話,那麼你就需要一些額外的設定。比如你需要做如下修改:

iface wlan0 inet dhcp => iface wlan0 inet manual

並且做如下修改:

wpa-conf => wpa-roam

下面同時給出了一個靜態IP配置的示例:

1 auto lo
 2 
 3 iface lo inet loopback
 4 iface eth0 inet dhcp
 5 
 6 allow-hotplug wlan0
 7 iface wlan0 inet manual
 8 wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
 9 iface default inet dhcp
10 
11 # For ssid 'work':
12 iface work inet static
13 address XXX.XXX.X.X
14 network XXX.XXX.X.X
15 gateway XXX.XXX.X.X

你將需要在你的WPA設定中輸入你的工作網路資訊:

 1 ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
 2 update_config=1
 3 network={
 4   ssid="ENTER NETWORK NAME"
 5   proto=WPA
 6   key_mgmt=WPA-PSK
 7   pairwise=TKIP
 8   psk="ENTER WPA KEY"
 9   auth_alg=OPEN
10 }
11 network={
12   ssid="work"
13   proto=WPA
14   key_mgmt=WPA-PSK
15   pairwise=TKIP
16   psk="ENTER WPA KEY"
17   auth_alg=OPEN
18 }

然後重啟:

sudo shutdown -r now

如果你的設定是正確的話那麼你現在的網路連線應該就是OK的了。你可以通過以下命令來進行驗證:

ifconfig

在你的wlan0這個輸出中你會看到一個分配的IP如下所示: 'inet addr:XXX.XXX.XXX.XXX'

如果你想在不用重啟的情況下就進行驗證的話,你可以先通過以下方式釋放已有的網路連線:

sudo ifdown wlan0

然後通過以下命令來使用新配置進行連線:

sudo ifup wlan0

讓樹莓派告訴你它的IP(軟體的方式)

那麼如何在你的樹莓派加入新的網路後獲取到它當前的ip地址呢?因為你在重新配置樹莓派的網路並重啟後,你跟樹莓派的連線會斷掉,因此你需要知道樹莓派在新網路中的ip,從而使你能重新連線到樹莓派。在網上很多免費提供的域名解析服務,你可以某個域名解析成你設定的ip地址。每次樹莓派啟動後都會更新自己的域名對應的ip,我是用的DNSDynamic提供的服務,進行簡單的設定就OK了。

  1. 註冊賬號~~~~
  2. 設定一個啟動指令碼來獲取本機ip並且更新到DNSDynamic上:

    • 修改/etc/rc.local,新增如下內容:

      IP=`hostname -I`
      EMAIL=your_username_in_dnsdynamic
      PASSWORD=your_password
      DOMAIN=your_registered_domain.dnsdynamic.com
      curl -v --user "$EMAIL:$PASSWORD" -k "https://www.dnsdynamic.org/api/?hostname=$DOMAIN&myip=$IP" > /var/log/update-dns.log 2>&1
      

指令碼後面的內容是呼叫dnsdynamic提供的api更新域名對應的ip地址

每一次樹莓派啟動之後都會執行這個指令碼更新自己的ip地址,也可以將這段腳新增到cron job裡定時更新ip,但是感覺好像沒有必要。

  1. 之後你就不用管ip地址了,可以通過域名直接ssh進樹莓派:

    ssh pi@your_registered_domain.dnsdynamic.com
    

 


沒有留言: