Come posso impostare un IP statico in Ubuntu?


56

Sono una novità di Linux, ho anni di esperienza con server / desktop Windows e ho problemi con l'impostazione di un IP statico. Sto usando un metodo usato per le versioni precedenti di Ubuntu, che non sembra funzionare con 16.04

Ho usato il comando sudo nano /etc/network/interfacee ho aggiunto quanto segue

iface enp0s25 inet static
address 10.10.8.2
netmask 255.255.0.0
gateway 10.10.1.1
dns-nameservers 8.8.8.8 8.8.4.4

Ho riavviato il sistema e Ethernet è praticamente morta, il ping non funziona affatto. Ho provato a modificare /etc/NetworkManager/NetworkManager.confe apportato le seguenti modifiche

#dns=dnsmasq (comment out the dnsmasq)
[ifupdown]
managed=true (changed from false)

Con questo posso far funzionare Ethernet in modo sporadico, ma alla fine fallisce.

Ho provato questa configurazione su altre due macchine più una macchina virtuale e tutti hanno gli stessi risultati. Posso confermare che queste impostazioni funzionano correttamente quando installo Windows su una di queste macchine. Inoltre, quando lascio configurare automaticamente DHCP, tutto funziona senza problemi.

Immagino che mi manchi qualcosa qui, impostare un IP statico non dovrebbe essere affatto difficile.


l'unica cosa che mi notifica e che potrebbe essere stato solo un errore di battitura qui, ma mi avrebbe cambiato il Dns-nameserversverso dns-nameserversprobabilmente non andare a fare nulla per risolvere questo problema, ma può arrestare altre questioni accada
John Orion

1
Dns-nameservers è una sintassi accettabile per quanto riguarda quindi non dovrebbe essere un problema. Quando funzionava con DHCP, hai eseguito un ifconfigcontrollo del nome dell'interfaccia o hai assunto che fosse enp0s25? Inoltre hai un auto enp0s25nella parte superiore del tuo file di configurazione? Se non è possibile, l'interfaccia non si avvia all'avvio.
Andrew,

Modifica la domanda e pubblica il contenuto esatto del /etc/network/interfacesfile. Durante la modifica del messaggio, evidenzia il testo di questo file, quindi fai clic sul {}collegamento del codice nella parte superiore dell'editor dei messaggi in modo che formatterà correttamente il testo e che ci faciliti la lettura del contenuto. Esegui anche questo comando ip addressed esegui gli stessi passaggi per {}(formato del codice) dell'output.
LD James,

Risposte:


83

Ho avuto lo stesso problema e questa era la mia soluzione:

sudo nano /etc/network/interfaces

e incolla (modificando per la tua rete) questo sotto # The primary network interface:

auto enp0s25
iface enp0s25 inet static
address 192.168.0.16
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.4.4 8.8.8.8

Puoi ottenere il nome dell'interfaccia corretto usando il comando Terminale ifconfig -asu Ubuntu 16.04 o ip address18.04+

Spegni la tua macchina virtuale e poi !!! Vai alle impostazioni di rete e fai clic alcune volte sul pulsante Aggiorna indirizzo MAC :)

inserisci qui la descrizione dell'immagine

e avvia la tua VM e dovresti avere internet!

AGGIORNAMENTO 20.02.2019

Per Ubuntu 18.04+ è necessario modificare questo file

/etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        enp0s3:
            addresses: [192.168.0.55/24]
            gateway4: 192.168.0.1
            dhcp4: no
            nameservers:
              addresses: [1.1.1.1,8.8.8.8]
            optional: true
    version: 2

2
Grazie mille lo apprezzo. Sembra funzionare ora, senza problemi. È molto solido in questo momento!
TeeStar,

Oltre alla dns-nameserverscorrezione, ho dovuto usare questa correzione: askubuntu.com/questions/574569/… Il mio ISP è monkeybrains.net.
BSalita,

56

L'impostazione dell'indirizzo IP statico come sopra nella risposta accettata qui funziona, ma è necessario svuotare la vecchia impostazione dell'indirizzo IP e quindi riavviare networking.service:

sudo ip addr flush enp0s25
sudo systemctl restart networking.service

Quindi verificare che sia corretto:

ip add

2
Il flush era necessario per evitare che il vecchio indirizzo fosse presente sull'interfaccia (basato su ip addr). Anche il riavvio di systemctl funziona, tuttavia ifdowne ifupsull'interfaccia funzionerà in modo più selettivo.
RichVel,

2
grazie @Grant. l'aggiunta di flush ha reso questo lavoro
Paweł Madej

3
In Ubuntu 16.04 e più recenti flush è necessario!
Diego Duarte,

5

sudo vim /etc/network/interfaces

    auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet static
    address 192.168.1.10
    gateway 192.168.1.1
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8

sudo ifdown eth0 && sudo ifup eth0


9
Ciao @ lanni654321, forse dovresti modificare la tua risposta e aggiungere qualche parola, spiegando brevemente cosa stai facendo e perché? penso che renderebbe la tua risposta ancora più utile, che ne pensi?
Tshilidzi Mudau,

5
# interfaces(5) file used by ifup(8) and ifdown(8)
# auto lo
# iface lo inet loopback
auto enp2s0 
iface enp2s0 inet static
    address 172.16.9.124
    netmask 255.255.240.0
    gateway 172.16.0.9
dns-nameservers 8.8.8.8

1
ifcace dovrebbe essere iface sulla linea 5
twoleggedhorse,

@twoleggedhorse: corretto l'errore di battitura per la risposta, ma ho dovuto aggiungerne alcuni #nella prima riga perché non è possibile
apportare

3

Ho avuto lo stesso problema e la soluzione "era" semplicemente ... per me, almeno.

auto ens160
iface ens160 inet static
address 172.31.0.164/22
netmask 255.255.252.0
gateway 172.31.0.2
network 172.31.0.0
broadcast 172.31.3.255
dns-nameservers 172.31.0.21 172.31.0.18

#Add internal route
up route add -net 172.16.168.0/21 gw 172.31.0.20 dev ens160

E crea un file vuoto con il nome dell'interfaccia di rete in:

~$ touch /etc/network/interfaces.d/ens160

Funziona...


2

Ho avuto lo stesso problema e questa era la mia soluzione: rimuovere tutte le righe vuote alla fine del file /etc/network/interface.


0

Ho usato per impostare IP statici sui miei computer Ubuntu e poi ho notato che posso semplicemente assegnare l'indirizzo IP usando il mio router. Questa potrebbe essere la soluzione più semplice. Accedi al tuo router, trova i dispositivi collegati e assegna qui l'indirizzo IP.


0

Se il tuo server mostra quel vecchio IP così come il nuovo IP assegnato, riavvia semplicemente il tuo server. Svuota automaticamente il vecchio IP e persiste quello nuovo.
E se non vuoi riavviare il tuo server, usa questo comando:


sudo ip addr flush <your-interface-here>


0

Esegui questi semplici comandi per vedere se le tue interfacce di rete sono impostate per avviarsi all'avvio / riavvio della macchina.

grep "auto" /etc/network/interfaces

Se non vengono stampate righe sull'output standard, aprite /etc/network/interfacescon un editor di testo (vi, nano, sed) e speriamo che vedrete qualcosa di simile all'immagine qui sotto.

Un file / etc / network / interfaces predefinito

Ovviamente, se grepnon viene restituita alcuna riga alla finestra del terminale, il formato delle interfacce / etc / network / non può essere molto simile. :-) Tuttavia, segui il formato delle linee automatiche .

auto lo
(Loopback configuration follows)
.
.
.

auto enp0s3
(primary interface configuration follows)
.
.
.

====================

Ora, sulla tua macchina .

auto yourInteraceNameHere
(your interface configuration follows)
.
.
.

Non sai quali nomi di interfaccia sono disponibili? Esegui questo comando.

ifconfig -a

Il seguente comando restituirà solo i nomi delle interfacce di rete.

ifconfig -a | grep encap | awk {'print $1'}

inserisci qui la descrizione dell'immagine

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.