2016-12-07 37 views
0

我想配置一個wlan0靜態ip並通過ssh連接它。Raspbian:強制一個wlan0靜態ip

這裏我/etc/network/interfaces

source-directory /etc/network/interfaces.d 
auto lo 
iface lo inet loopback 

auto eth0 
iface eth0 inet static 
adress 192.168.0.2 
netmask 255.255.255.0 

auto wlan0 
allow-hotplug wlan0 
iface wlan0 inet static 
address 192.168.100.102 
netmask 255.255.255.0 
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf 

當我做ifconfig我爲wlan0和eth0的接口配置正確:

然而,當我要ssh通過無線網絡連接我的覆盆子,我的WiFi路由器給我覆盆子的ip:192.168.100.116

如何強制我的Wifi路由器給192.168.100.102加入我的rapsberry pi? 此外,我的WiFi路由器給我的覆盆子有時192.168.100.102有時192.168.100.116

不知道爲什麼

回答

1

登錄路由器管理界面上(如果它有這個功能,大多數人的話)保留一個DHCP地址在您的選定客戶端的路由器上,以便特定客戶端始終具有相同的IP地址。有關更多信息,請參見this article

2

當我想要將我的Rasperry Pi 2與Raspbian Jessie Lite連接起來,並通過我的Windows 10 PC上的PuTTY進行SSH訪問時,我遇到了類似的問題。

就我而言,事實證明,Ahavi守護進程(zeroconf的實現)與我的路由器的DHCP和名稱服務器選項衝突。

Raspbian Jessie和Raspbian Jessie Lite預先配置了Avahi和DHCP客戶端deamon以進行自動化網絡配置。在大多數情況下,這可能會工作得很好,但如果不是的話,情況會變得更糟,並伴隨着不可預知的副作用。

而不是深入到任何細節(它真的很長的故事),我只是在這裏總結我做了什麼,爲什麼。有太多可能的問題,我不想把你推向錯誤的方向。試試看。如果失敗,請尋找其他方法或留下澄清意見。

現在讓我們你的腳弄溼:

  1. 與Raspbian傑西的新副本首先嚐試一個非生產SD卡(無頭服務器,我更喜歡Raspbian傑西精簡版)。

  2. 用鍵盤和顯示器連接並用用戶pi登錄來啓動Raspberry Pi。

  3. sudo raspi-config啓動raspi-config並確保打開SSH服務器(菜單7高級選項 - > A4 SSH)。

  4. 獲取您當前的eth0 IP地址ifconfig

  5. 嘗試使用ssh通過以太網連接到此地址。如果您無法連接,請先解決此問題。在這個階段你無法通過WLAN連接。

  6. 如果連接成功,您可以通過ssh使用此連接來完成其餘配置。

  7. 吹掃的avahi守護

    $ sudo apt-get purge avahi-daemon

不要擔心錯誤信息 '命令rmdir:無法刪除‘/ var/run中/的avahi守護’:目錄非空'。這涉及到一個空的套接字和一個pid文件,目前無法刪除。您可以忽略此消息或手動刪除目錄,但如果您放棄它,它不會受到傷害。

$ sudo rm -r /var/run/avahi-daemon 
  • 配置的/ etc /網絡/接口
  • 知道,我們只需要一個在這個文件中單一變化是很重要的。使用您選擇的編輯器打開/ etc/network/interfaces以進行更改(注意:如果您按照此步驟1:1擴展vim尚未安裝)。

    $ sudo nano /etc/network/interfaces 
    

    只是現有生產線iface eth0 inet manual之前添加行auto eth0。這就是我們所要做的就是在這裏。更改後的文件應如下所示:

    # interfaces(5) file used by ifup(8) and ifdown(8) 
    
    # Please note that this file is written to be used with dhcpcd 
    # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' 
    
    # Include files from /etc/network/interfaces.d: 
    source-directory /etc/network/interfaces.d 
    
    auto lo 
    iface lo inet loopback 
    
    auto eth0 
    iface eth0 inet manual 
    
    allow-hotplug wlan0 
    iface wlan0 inet manual 
        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf 
    
    allow-hotplug wlan1 
    iface wlan1 inet manual 
        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf 
    

    注意:請務必閱讀並理解文件頂部的註釋!

  • 配置DHCP客戶端守護程序
  • 接着,如在先前編輯的文件的註釋中規定,在配置文件的結尾添加靜態IP配置DHCP客戶端守護程序。

    如果我們打算使用靜態IP地址,使用DHCP客戶端可能聽起來很愚蠢。但是,當我試圖刪除DHCP客戶端守護進程時,遇到了新的配置和/或依賴關係問題。最後,我決定保持儘可能接近標準配置,並保持原樣。

    該配置在文件/etc/dhcpcd.conf(注意正確的拼寫)的最後完成。該文件的最後一行應爲:'nohook lookup-hostname'。所以讓我們在編輯器中打開文件並向下滾動到文件的底部。

    $ sudo nano /etc/dhcpcd.conf 
    

    在那裏添加靜態ip定義。在我的情況下,在中/etc/dhcpcd.conf的定義是這樣的:

    nohook lookup-hostname 
    
    # static ip configuration for eth0 and wlan0 
    interface eth0 
    static ip_address=192.168.1.61/24 
    static routers=192.168.1.1 
    static domain_name_servers=192.168.1.1 8.8.8.8 
    
    interface wlan0 
    static ip_address=192.168.1.62/24 
    static routers=192.168.1.1 
    static domain_name_servers=192.168.1.1 8.8.8.8 
    

    注意語法是從/etc/network/interfaces使用的語法不同。對於完整的C類網絡,必須在IP地址末尾以/ 24的形式提供網絡掩碼。詳情請諮詢man dhcpcd.conf

  • 重新啓動,併爲eth0
  • 測試您的配置,你應該有靜態IP地址的可靠的網絡配置在下次重新啓動後。但請記住,我們還沒有完成,只有eth0會起作用。此時,如果發出ifconfig,即使沒有IPv4地址也會顯示wlan0

    如果失敗並且您迄今沒有做任何錯誤(仔細檢查拼寫錯誤),那麼您有另一個必須修復的問題第一;在這種情況下,這個解決方案可能不適合你。

  • 配置WLAN
  • 要配置WLAN我們必須編輯/etc/wpa_supplicant/wpa_supplicant.conf和網絡配置添加到它。

    對我來說,我使用WPA/PSK安全訪問和修改國家代碼和添加在入網後,該文件的內容看起來是這樣的:

    country=CH 
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev 
    update_config=1 
    
    # home network; allow all valid ciphers 
    network={ 
        ssid="home" 
        scan_ssid=1 
        key_mgmt=WPA-PSK 
        psk="very secret passphrase" 
    } 
    

    SSID =「回家「是WLAN路由器或接入點的WLAN網絡名稱(SSID)。

    scan_ssid = 1掃描隱藏的SSID。這是通常的做法,但會減慢掃描過程。

    key_mgmt = WPA-PSK定義將使用WPA預共享密鑰管理協議。

    psk =「非常祕密密碼」定義您的密碼來訪問路由器。

    將分配給ssid和psk的值替換爲安全WLAN訪問的實際值。有幾種支持的協議,一些需要其他更多的選項。

    請諮詢man wpa_supplicant.conf瞭解更多詳細信息。

  • 重新啓動,並與爲wlan0
  • 測試配置現在是時候重新啓動和測試爲wlan0。如果發出ifconfig,現在應該顯示爲wlan0配置的IP地址。

    如果是這種情況,您應該能夠使用ssh訪問Rasperry Pi,並使用爲wlan0配置的IP地址。

    我希望你很高興,到目前爲止,一切正常。如果是這種情況,我可以停止在這裏寫作,讓你一個人待着。但是等等,還有更多!

    1. 兩個網絡連接,是否有意義?

    如果您在兩個相同的網絡連接到樹莓派,eth0和爲wlan0併發出ifconfig看看在發送和接收的數據包或字節,你會認識到,即使你連接到IP for wlan0大多數流量正在通過eth0。

    我無法解釋爲什麼會出現這種情況,但顯然不知何故數據包沿着更快的路徑發送,這聽起來不錯。

    但是,我發現罕見的情況下,這種行爲是不受歡迎的,並減緩了我的關係。由於我在我的路由器附近使用我的Raspberry Pi,使用到eth0的有線連接或者離路由器較遠,並且無法使用wlan0訪問電纜,所以如果連接到路由器的活動連接的電纜已連接,我決定停止wlan0到eth0。

    要做到這一點,我創建/home/pi/ifdown-wlan-if-not-needed.sh

    #!/bin/sh 
    #### Shutdown wlan0 
    # Test eth0 for a cable attached and 
    # shutdown wlan0 if this is the case. 
    ### 
    sleep 30 
    cable=$(cat /sys/class/net/eth0/carrier) 
    echo $cable 
    if [ "$cable" = "1" ]; then 
        sudo ifdown wlan0 
    fi 
    exit 0 
    

    然後我設置腳本爲可執行腳本

    $ chmod +x /home/pi/ifdown-wlan-if-not-needed.sh 
    

    並將其添加到用戶pi的crontab重新啓動後執行crontab -e

    @reboot /home/pi/ifdown-wlan-if-not-needed.sh 
    
  • 名到IP地址的解析
  • 到目前爲止,我還沒有解決的名到IP地址解析問題。如何做到最好,取決於你的網絡設備和用例。

    我的路由器提供了將名稱綁定到MAC地址,主機名和IPv4地址的功能。但是,由於某些原因,這些選項都不起作用。有些時候只需使用給定的名稱就可以工作,其他時候需要後綴.home。有時候名字從列表中消失或者甚至沒有名字解析發生,即使一切看起來都不錯。

    我終於在Windows PC和我的筆記本電腦的C:\ Windows \ System32 \ drivers \ etc \ hosts文件中定義了地址。這當然不是最先進的,但工作可靠,沒有麻煩。

    但是,我無法保證我所做的工作對您也有效,但我希望它能爲您解決問題帶來正確的方向。自從Raspbian Jessie大約一年前發佈以來,我一直在使用我的配置。它迄今在沒有麻煩的情況下倖存下來。

    祝你好運!