Come posso impostare un indirizzo IP di rete / WiFi / statico?


216

Ho seguito il tutorial (uno qualsiasi delle centinaia) e non funziona.

Come posso impostare un indirizzo IP di rete / WiFi / statico su Raspberry Pi?


(Questo è Dorothy Dixer per spero di catturare le centinaia di domande simili.)

Risposte:


252

Questa esercitazione descrive come configurare la rete utilizzando il gestore di rete predefinito dhcpcd incluso in Raspbian dal 05-05-2015.
Si applica alle versioni Foundation di Raspbian Buster , Raspbian Stretch , Raspbian Jessie e l'ultimo Raspbian Wheezy .
Le impostazioni di Buster sono identiche a Stretch.

Come configurare Raspbian Networking

Se si utilizza una connessione Ethernet con un router, non dovrebbe essere necessaria alcuna configurazione e dovrebbe funzionare immediatamente.


NOTA Il WiFi integrato Pi3 / Pi Zero W non supporta reti a 5 GHz e potrebbe non connettersi a Ch 12,13 su reti a 2,4 GHz fino a quando non viene impostato il dominio di regolamentazione wireless .

Il WiFi sui dispositivi abilitati a 5 GHz è disabilitato fino all'impostazione del dominio di regolamentazione wireless (Pi4B, Pi3B +, Pi3A +)

  • Il dominio può essere impostato tramite Raspberry Pi Configuration(rc_gui) raspi-configo impostando country=un codice paese ISO 3166 alpha2 appropriato in /etc/wpa_supplicant/wpa_supplicant.conf.

Se si utilizza il WiFi e la GUI configurati seguendo le Linee guida di base

Se si utilizza il WiFi dalla riga di comando impostata seguendo le Linee guida di base Questo è l'unico modo per configurare una rete che non trasmette SSID.

Questo può anche essere usato per configurare un sistema "senza testa", ad esempio usando un cavo per console seriale, ma è MOLTO più semplice se puoi prendere in prestito un monitor e una tastiera per l'installazione. Vedi sotto per un altro possibile metodo usando un cavo Ethernet per un PC.

Configurazione WiFi senza testa di Raspbian

Raspbian , da maggio 2016, controlla il contenuto della directory di avvio per un file chiamato wpa_supplicant.confe lo copia in /etc/wpa_supplicant, sostituendo qualsiasi wpa_supplicant.conffile esistente che potrebbe essere lì. Il file nella directory di avvio viene quindi rimosso. Questo può essere usato per abilitare la configurazione senza testa, usando le wpa_supplicant.confimpostazioni descritte di seguito. (Probabilmente vorrai abilitare sshanche tu .)

Qual è il mio indirizzo IP?

Se vuoi solo sapere che il IP Addresstuo Pi sta usando entra hostname -Inella riga di comando.

SSH

A partire dalla versione di novembre 2016, Raspbian ha il server SSH disabilitato per impostazione predefinita. Dovrai abilitarlo manualmente.

Immettere sudo raspi-confignel terminale, selezionare prima advanced options, quindi navigare ssh, premere Entere selezionare Abilita o disabilita server ssh.

Per una configurazione senza testa, SSH può essere abilitato posizionando un file chiamato "ssh", senza alcuna estensione, nella partizione di avvio della scheda SD.

File di rete

Se stai eseguendo un recente Raspbian /etc/network/interfacesdovrebbe essere come di seguito. Se lo hai cambiato, RITORNA. (O Stretchsemplicemente cancellandolo - non fa NIENTE.)

# interfaces (5) file utilizzato da ifup (8) e ifdown (8)

# Si noti che questo file è stato scritto per essere utilizzato con dhcpcd
# Per IP statico, consultare /etc/dhcpcd.conf e 'man dhcpcd.conf'

# Includi file da /etc/network/interfaces.d:
directory sorgente /etc/network/interfaces.d

Il file /etc/wpa_supplicant/wpa_supplicant.confverrà creato / modificato con i metodi di installazione consigliati, ma può essere impostato manualmente. Raspbian recente ha un'opzione raspi-configper inserire SSID e password. Dovrebbe contenere qualcosa di simile al seguente: -

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=AU

network={
    ssid="ESSID"
    psk="Your_wifi_password"
}

Se è necessario connettersi a una rete privata (ovvero nessuna trasmissione SSID), includere la linea scan_ssid=1all'interno network={⋯}.

NOTA Se si desidera connettersi a reti diverse (ad es. Al lavoro o a casa) è possibile includere più network={⋯}voci.

Se si ha accesso a più reti e si desidera connettersi a una rete specifica, includere la linea priority=100all'interno della network={⋯}voce.
È possibile selezionare una priorità diversa per ciascuna rete, verrà selezionata la rete accessibile con la priorità più alta; il valore predefinito è 0.

Ci sono molte altre opzioni che possono essere usate vedi man wpa_supplicant.conf.

Note sui sistemi operativi obsoleti

Jessie non include l' 10-wpa_supplicanthook per gestire le interfacce WiFi, quindi sono necessari i collegamenti a wpa_supplicant. Queste impostazioni non sono compatibili con i nomi delle interfacce di rete prevedibili.

L' /etc/network/interfacesusato da Jessie dovrebbe essere: -

# 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

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

NOTA la chiamata a dhcp in /etc/network/interfacesverrà disabilitata dhcpcd .

Nomi di interfaccia di rete prevedibili

Stretchintrodotto 1 nomi di interfaccia di rete prevedibili che sono stati utilizzati in altre distribuzioni per qualche tempo.

Interfacce di rete avranno nomi formati da un prefisso en- Ethernet o wl- WLAN seguita dalla xindicazione MACe l' MACesempio enxb827eb123456o wlx00c140123456. Il WiFi di bordo di Pi4, Pi3 e PIZeroW che è collegato sdioutilizzerà comunque il nomewlan0

Questo può essere utile per coloro che utilizzano più interfacce di rete, tuttavia per la maggior parte degli utenti Pi, con una singola interfaccia Ethernet e WiFi farà poca differenza. I nomi precedenti eth0e wlan0possono essere ripristinati se si passa net.ifnames=0alla riga di comando del kernel /boot/cmdline.txt.

È disponibile un'opzione raspi-configper abilitare nomi di interfaccia di rete prevedibili.

1. Per qualche ragione incomprensibile, la Fondazione ha deciso di "disabilitare i nomi delle interfacce di rete prevedibili per i dispositivi Ethernet" solo 3 settimane dopo l'introduzione della tanto attesa funzionalità. C'è un'opzione sotto Advanced Optionsdi raspi-configper attivare questa impostazione.


Imposta un indirizzo IP statico

Vedere la risposta separata Indirizzo IP statico


dhcpcdConfigurazione avanzata

Raspbian, per impostazione predefinita, utilizza dhcpcdper gestire le interfacce di rete. Questo è automatico e la maggior parte degli utenti non deve fare altro che specificare SSID e password per le reti wireless.

È possibile configurare il dhcpcdfunzionamento inserendo le opzioni in /etc/dhcpcd.conf; vedi man dhcpcd.conf.C'è un buon articolo su dhcpcda https://wiki.archlinux.org/index.php/dhcpcd

Di seguito vengono descritte alcune delle configurazioni più comuni: -

Profilo di fallback

È possibile configurare un profilo statico all'interno dhcpcde ricorrere ad esso quando il lease DHCP fallisce. Ciò è particolarmente utile per le macchine senza testa, in cui il profilo statico può essere utilizzato come profilo di "ripristino" per garantire che sia sempre possibile connettersi alla macchina. Il profilo statico è configurato come qualsiasi altro indirizzo IP statico

    # definisce il profilo statico
    profilo static_eth0
    indirizzo_ip statico = ⋯
    router statici = ⋯
    static domain_name_servers = ⋯

    # fallback al profilo statico su eth0
    interfaccia eth0
    fallback static_eth0

Impedisci la dhcpcdconfigurazione di un'interfaccia

Questo viene spesso fatto per consentire a Pi di fungere da punto di accesso (che deve essere configurato utilizzando altri file), consentendo al contempo la normale DHCPconfigurazione su altre interfacce.

Aggiungi denyinterfaces wlan0alla fine del file (ma sopra ogni altra riga di interfaccia aggiunta).

Impedire dhcpcddi configurare un gateway su un'interfaccia

Se si desidera che un'interfaccia non installi alcuna route predefinita (spesso utilizzata insieme a un indirizzo IP statico), specificare

    nogateway

Configurazione specifica dell'host

dhcpcdpuò configurare interfacce dipendenti dalla rete host. Questo utilizza l'ARP (Address Resolution Protocol) per sondare gli host in base all'indirizzo MAC o IP prima di tentare la risoluzione DHCP.

    interfaccia bge0
    arping 192.168.0.1

    # La mia rete 192.168.0.1 specifica
    profilo dd: ee: aa: dd: bb: ee
    indirizzo_ip statico = 192.168.0.10 / 24

    # Una rete generica 192.168.0.1
    profilo 192.168.0.1
    indirizzo_ip statico = 192.168.0.98 / 24

È possibile accelerare il DHCP disabilitando il rilevamento ARP se non si utilizzano queste funzionalità e si dispone di una rete semplice.

    noarp

Usa diversi file wpa_supplicant

È possibile configurare dhcpcd per utilizzare diversi file wpa_supplicant.conf per una specifica interfaccia wireless.

Crea un file chiamato wpa_supplicant-"$interface".confin /etc/wpa_supplicant/eg wpa_supplicant-wlan0.confsarà usato solo dawlan0

/etc/wpa_supplicant/wpa_supplicant.conf verrà utilizzato per qualsiasi altra interfaccia wireless.


Collegamento di un computer al Pi

Le versioni recenti di Raspbian (che utilizzano dhcpcd) consentono sshdi lavorare su un link-localindirizzo e avahi(che è un'implementazione di zeroconf) consente ai programmi di rilevare host in esecuzione su una rete locale.

Ciò significa che è possibile collegare il Pi a un computer (con un cavo Ethernet) o un router di rete locale e connettersi senza conoscere l'indirizzo IP.

È possibile connettersi facilmente da Linux e OS X con ssh pi@hostname.local(il nome host predefinito è raspberrypi). Questo dovrebbe funzionare con i sshprogrammi di interfaccia grafica più diffusi. Questo a volte è problematico con alcune versioni di Windows e reti che utilizzano .local in modo non standard. (Vedi https://en.wikipedia.org/wiki/.local )

NOTA la .localrisoluzione non funziona sempre, ad es rsync. In . Quanto segue dovrebbe risolvere l'IP (e può essere incluso negli bashscript)
RemotePi=$(getent hosts hostname.local | awk '{ print $1 }')

Se il tuo sistema non deve getentinterrogare hostsad esempio macOS, puoi utilizzare quanto segue: -
RemotePi=$(arp -n hostname.local | awk '{x = $2; gsub(/[()]/, "", x); print x }')

Se hai più Pi devi assicurarti che ogni Pi abbia un nome host univoco.

Puoi usare un cavo crossover, ma non ne hai bisogno (la maggior parte delle interfacce moderne rileva automaticamente).

Uno svantaggio della connessione diretta è che il Pi non avrà accesso a Internet e la data non verrà impostata. È possibile copiare la data dall'host eseguendo ssh pi@hostname.local sudo date -s$(date -Ins)prima della connessione.

Scopo:

Questo tutorial riguarda la configurazione di una normale installazione di Raspbian per accedere a Internet utilizzando il software incluso. Copre anche le connessioni ad altri computer sulla stessa rete.

Ha principalmente lo scopo di aiutare i nuovi utenti che lottano per far funzionare il loro Pi (specialmente WiFi).

NON copre: -

  • Altri gestori di rete.
  • Esecuzione di reti avanzate sul Pi (ad es. DHCPServer, tunneling, VPN, punto di accesso).
  • Uso di ipv6(anche se se si dispone di una ipv6rete dovrebbe funzionare).
  • Configurazioni di rete alternative. (Esistono molti modi diversi per configurare la rete.)

2
Mi sono confuso con "questo NON è qualcosa che vorresti digitare nel file". Se non sbaglio, ciò che Milliways significa qui è che non sostituiresti l'intero file con questo bit di testo. Tuttavia, va benissimo aggiungere questo bit alla fine (modificando i parametri a proprio piacimento, ovviamente). Inoltre, le linee routerse domain_name_serverssono facoltative se non si desidera impostare il routing tramite tale interfaccia.
Segna il

4
Quindi, ora, per configurare il tuo indirizzo IP, devi avere il client DHCP installato e usare la sua configurazione per impostare un IP statico ?! Non funziona se voglio un server DHCP sul mio Raspbian! Il client DHCP viene eseguito dopo l'avvio del server DHCP, quindi l'ip non è ancora impostato, facendo lamentare il server DHCP (isc-dhcpd).
Luc Stepniewski il

16
Dove è documentato ufficialmente ?
Alastair McCormack,

6
Dove è documentato? Voglio dire, WTF. Ho seguito queste indicazioni e molte altre e non riesco a collegarmi. Riesco a vedere e scansionare felicemente le reti, ma non potrà mai connettersi o associarsi. Sono così irritabile per questo.
AaronJAnderson


64

Imposta un indirizzo IP statico

Le domande sull'impostazione dell'indirizzo IP statico sono tra le più comuni in questo sito. Esistono moltissimi tutorial (molti errati, obsoleti o incompleti).

Clausola di esclusione della responsabilità

Prima di procedere mi sento obbligato a dichiarare che NON è consigliabile impostare un indirizzo statico. Gli ingegneri delle telecomunicazioni non lo fanno. Gli indirizzi IP statici possono essere la rovina della vita di un amministratore di rete. Esistono situazioni in cui sono necessari indirizzi IP statici, ad esempio se si esegue un server DHCP o si esegue una rete isolata senza server DHCP.

Se sei determinato a procedere comunque, assicurati di farlo bene. Adattato dal tutorial Network Foundation

Trova le impostazioni della tua rete locale

Ciò è più semplice con Pi stesso, tramite DHCP, ma può essere eseguito su qualsiasi computer della rete, sebbene i comandi possano differire su altri sistemi.

Correre

ip -4 addr show | grep global

che dovrebbe dare un output come:

inet 10.1.1.30/24 brd 10.1.1.255 scope global eth0
inet 10.1.1.31/24 brd 10.1.1.255 scope global wlan0

Il primo indirizzo è l'indirizzo IP del tuo Pi sulla rete e la parte dopo la barra è la dimensione della rete. È molto probabile che il tuo sia un / 24.

Il secondo indirizzo è l'indirizzo brd (broadcast) della rete.

Trova l'indirizzo del tuo router (o gateway)

ip route | grep default | awk '{print $3}'

10.1.1.1

Annota infine l'indirizzo del tuo server DNS, che è spesso lo stesso del tuo gateway.

cat /etc/resolv.conf

# Generated by resolvconf
nameserver 10.1.1.1

Quindi seguire UNO dei seguenti metodi. (Ci sono altri metodi non documentati qui. Questi sono i più comuni su Raspbian.) ( In entrambi i metodi sostituire il nome dell'interfaccia di rete appropriato per eth0, wlan0o nomi di interfaccia di rete prevedibili . )

Se si desidera trovare i nomi dell'interfaccia, anche se non connessi, eseguire il comando seguente ls /sys/class/net/

In entrambi i metodi è necessario scegliere gli indirizzi IP che non sono in uso; idealmente al di fuori dell'intervallo utilizzato dal server DHCP, all'interno della stessa sottorete.

metodo dhcpcd

Lasciare /etc/network/interfacesil valore predefinito (come sopra).

Modifica /etc/dhcpcd.confcome segue: -

 Here is an example which configures a static address, routes and dns.
       interface eth0
       static ip_address=10.1.1.30/24
       static routers=10.1.1.1
       static domain_name_servers=10.1.1.1

       interface wlan0
       static ip_address=10.1.1.31/24
       static routers=10.1.1.1
       static domain_name_servers=10.1.1.1

ip_addressè l'indirizzo e le dimensioni del comando sopra (o un altro indirizzo inutilizzato sulla stessa rete), routersè l'indirizzo del tuo router (o gateway). domain_name_serversè l'indirizzo / i DNS di /etc/resolv.conf. (vedi man dhcpcd.conf)

C'è un buon articolo su dhcpcdal https://wiki.archlinux.org/index.php/dhcpcd Il Fallback profileè un'alternativa alla IP statico


Metodo delle interfacce di rete

NOTA Questo metodo NON è raccomandato (e funziona solo se si disabilita il demone client DHCP), in particolare se si prevede di utilizzare entrambe le interfacce.

Configura un indirizzo di rete statico sul tuo Pi in /etc/network/interfaces

auto eth0
iface eth0 inet static
        address 10.1.1.30
        netmask 255.255.255.0
        gateway 10.1.1.1

allow-hotplug wlan0
iface wlan0 inet static
        address 10.1.1.31
        netmask 255.255.255.0
        gateway 10.1.1.1
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

addressè l'indirizzo dal comando sopra (o un altro indirizzo inutilizzato sulla stessa rete), netmask255.255.255.0 corrisponde alla dimensione della rete /24. gatewayè l'indirizzo del tuo router (o gateway).

Puoi anche specificare dns-nameservers, ma generalmente non è necessario. La broadcastderiva automaticamente da addresse netmaske non devono essere specificati. Per ulteriori dettagli, consultare https://wiki.debian.org/Configuration di rete

È possibile impostare uno o entrambi eth0, wlan0o uno dei nomi di interfaccia di rete prevedibili

Quindi disabilitare il demone client DHCP e passare alla rete Debian standard :

sudo systemctl disable dhcpcd
sudo systemctl enable networking

Riavvia per rendere effettive le modifiche:

sudo reboot

1
Quali sono i pro e i contro di questi due metodi che menzioni?
Elliott B,

@ElliottB leggi il Disclaimer sopra.
Milliways,

1
L'ho letto, mi chiedo solo i due metodi dhcpcd vs networking. Voglio vedere se un IP statico consente l'avvio più veloce, perché vedo un ritardo di 15 secondi per dhcpcd systemd-analyze.
Elliott B,

Nemmeno io uso - questo è solo perché molte persone provano (per qualsiasi motivo - il che mi sfugge) MA sbagliare, perché non capiscono il networking. Non esiste una risposta semplice perché dipende da cos'altro stai facendo. NOTA: è improbabile che l'impostazione di un IP statico abbia QUALSIASI impatto sul tempo di avvio, a meno che non si disponga di un server DHCP molto lento. Se hai domande dovresti fare una domanda: questo non è un forum di discussione.
Milliways,

Ho aggiunto static domain_search=example.localal metodo dhcpcd.conf. Sentiti libero di ripristinare / modificare / contattarmi.
MadMike,

35

Per un indirizzo IP statico su una connessione Ethernet:

  1. sudo nano /etc/dhcpcd.conf
  2. Digita le seguenti righe nella parte superiore del file:

    interface eth0
    static ip_address=192.168.1.XX/24
    static routers=192.168.1.1
    static domain_name_servers=192.168.1.1
    
  3. sudo reboot

Questo deve essere fatto per il recente aggiornamento di Jessie. /etc/network/interfacesdovrebbe essere lasciato solo . Apri il browser e inserisci l'indirizzo del router (192.168.1.1 per la maggior parte) e controlla la tua rete domestica per assicurarti che Raspberry Pi sia visualizzato come "Statico".


5
Se hai intenzione di copiare almeno alcune parti della risposta, dovresti farlo nel modo giusto.
Milliways,

2
Probabilmente ha funzionato nel tuo caso, ma non in generale perché ha dhcpcdinferito la maschera di rete, che non può per altri intervalli di indirizzi. Leggi le manpagine
Milliways il

1
Affermate che / etc / network / interfaces dovrebbe essere lasciato solo, ma non dite perché. In effetti, è vero il contrario. Vedi la mia risposta qui sotto.
JayEye,

2
Se si desidera riavviare i servizi di rete senza riavviare, assicurarsi di avere la riga auto eth0sopra iface eth0 inet manualnel /etc/network/interfacefile. Riavvia la rete tramite sudo service networking restartcomando
Barmaley,

3
Questa può essere una risposta copiata ma ha tutto il necessario per configurare un ip statico su raspberry, la risposta accettata è inutilmente lunga.
Pedro Lobito,

11

Metodo breve e infallibile come fare con:

Raspbian Jessie & Stretch

Questo imposterà un IP fisso e abiliterà il demone ssh:

  • Apri /boot/cmdline.txte aggiungi ip=192.168.1.20alla fine della riga.
  • Crea un file vuoto /boot/ssh
  • Avvia il tuo Raspberry Pi
  • All'inizio di Linux ssh pi@192.168.1.20la password è raspberry. Usa Putty su Windows per connetterti tramite ssh.

Sto usando questo per accedere a mia Raspbian Jessie e Stretch che si avvia senza un monitor collegato, solo con alimentazione ed ethernet. Dopo aver effettuato l'accesso con una shell ssh posso continuare la mia configurazione.

Dopo questo trattamento, Raspberry PI aveva due IP: uno dall'IP fisso specificato e uno dal client dhcp in esecuzione su Raspberry Pi.

ifconfigti mostrerà l'IP fisso. Considerando che l'icona blu della freccia in alto a destra mostra il dhcpd-IP.


1
NON suggerire di disabilitare IPv6. Non ce n'è bisogno.
Anders,

Perché dovrei avere bisogno di 2 IP?

@ SiXandSeven8ths Non sono necessari 2 IP. Ho osservato il comportamento e lo sto descrivendo qui per ridurre al minimo le sorprese. Migliorerei la mia risposta, ma non ho avuto il tempo di farlo.
MadMike,

@MadMike L'avevo osservato anch'io, e ha rovinato tutto per me, alla fine l'ho risolto ma questo è confuso.

1
@ SiXandSeven8ths Mi dispiace sentirlo. Ha funzionato bene per me. Inoltre questo era l'unico modo per fare a meno di collegare monitor e tastiera a Raspberry Pi. quindi ho pensato che potesse essere utile a qualcun altro.
MadMike,

4

La prima cosa da fare è rendere statico l'IP del tuo Raspberry pi. In modo che ogni volta che accendi il tuo Raspberry Pi, questo si colleghi al tuo punto di accesso (Hotspot).

Connettiti al tuo punto di accesso. Digita ifconfig nel terminale di raspberry pi e inserisci di seguito l'indirizzo IP, nel mio caso era 192.168.43.233

Inizia modificando il file dhcpcd.conf

sudo nano /etc/dhcpcd.conf

Scorri fino in fondo e aggiungi queste righe alla fine secondo la tua connessione (cablata o wireless).

interface eth0

static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1


interface wlan0
static ip_address=192.168.43.233/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Premi Ctrl + x per salvare e riavviare. Ora accendi il tuo Raspberry Pi e si connetterà automaticamente al tuo punto di accesso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.