Wie stelle ich eine statische IP in Ubuntu ein?

56

Ich bin neu mit Linux, habe jahrelange Erfahrung mit Windows-Servern / -Desktops und habe Probleme beim Festlegen einer statischen IP. Ich verwende eine Methode für frühere Versionen von Ubuntu, die mit 16.04 nicht zu funktionieren scheint

Ich habe den Befehl verwendet sudo nano /etc/network/interfaceund Folgendes hinzugefügt

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

Ich habe das System neu gestartet und das Ethernet ist so gut wie tot. Ping funktioniert überhaupt nicht. Ich habe versucht, /etc/NetworkManager/NetworkManager.confdie folgenden Änderungen vorzunehmen

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

Damit kann ich Ethernet sporadisch zum Laufen bringen, aber irgendwann versagt es.

Ich habe diese Konfiguration auch auf zwei anderen Maschinen und einer virtuellen Maschine ausprobiert und alle haben die gleichen Ergebnisse. Ich kann bestätigen, dass diese Einstellungen ordnungsgemäß funktionieren, wenn ich Windows auf einem dieser Computer installiere. Auch wenn ich DHCP automatisch konfigurieren lasse, funktioniert alles einwandfrei, ohne Probleme.

Ich glaube, ich vermisse hier etwas. Das Einrichten einer statischen IP sollte überhaupt nicht schwierig sein.

TeeStar
quelle
das einzige, was mir auffällt und das hier vielleicht nur ein Tippfehler war, aber ich würde das ändern, Dns-nameserversum dns-nameserverswahrscheinlich nichts zu tun, um dieses Problem zu lösen, aber möglicherweise verhindern, dass andere Probleme auftreten
John Orion
1
DNS-Nameserver sind syntaktisch akzeptabel, daher sollte dies kein Problem darstellen. ifconfigHaben Sie bei Verwendung von DHCP eine ausgeführt , um den Schnittstellennamen zu überprüfen, oder haben Sie angenommen, dass es sich um enp0s25 handelt? Hast du auch eine auto enp0s25oben in deiner Konfigurationsdatei? Wenn Sie dies nicht tun, wird die Schnittstelle beim Booten nicht gestartet.
Andrew
Bitte bearbeiten Sie Ihre Frage und veröffentlichen Sie den genauen Inhalt Ihrer /etc/network/interfacesDatei. Markieren Sie beim Bearbeiten Ihrer Nachricht den Text dieser Datei und klicken Sie dann {}oben im Nachrichteneditor auf den Code-Link, damit der Text ordnungsgemäß formatiert wird und wir den Inhalt leichter lesen können. Führen Sie auch diesen Befehl aus ip addressund führen Sie dieselben Schritte aus, um diese {}Ausgabe zu formatieren.
LD James

Antworten:

83

Ich hatte das gleiche Problem und das war meine Lösung:

sudo nano /etc/network/interfaces

und fügen Sie dies (für Ihr Netzwerk ändernd) unter # 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

Sie können den korrekten Schnittstellennamen mit dem Terminal-Befehl ifconfig -aunter Ubuntu 16.04 oder ip address18.04+ abrufen

Fahren Sie Ihre virtuelle Maschine herunter und dann !!! Gehen Sie zu den Netzwerkeinstellungen und klicken Sie einige Male auf die Schaltfläche MAC-Adresse aktualisieren :)

Bildbeschreibung hier eingeben

und starten Sie Ihre VM und Sie sollten Internet bekommen!

UPDATE 20.02.2019

Für Ubuntu 18.04+ müssen Sie diese Datei bearbeiten

/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
lewis4u
quelle
2
Vielen Dank, ich weiß es zu schätzen. Es scheint jetzt ohne Probleme zu funktionieren. Es ist im Moment sehr solide!
TeeStar
Zusätzlich zum dns-nameserversFix musste ich diesen Fix verwenden: askubuntu.com/questions/574569/… Mein ISP ist monkeybrains.net.
BSalita
56

Das Festlegen der statischen IP-Adresse wie oben in der akzeptierten Antwort funktioniert hier, aber man muss die alte IP-Adr-Einstellung löschen und anschließend den Netzwerkdienst neu starten.

sudo ip addr flush enp0s25
sudo systemctl restart networking.service

Vergewissern Sie sich dann, dass es korrekt ist:

ip add
Gewähren
quelle
2
Die Leerung war notwendig, um zu vermeiden, dass die alte Adresse auf der Schnittstelle vorhanden ist (basierend auf ip addr). Der System-Neustart funktioniert jedoch auch ifdownund ifupauf der Schnittstelle wird selektiver arbeiten.
RichVel
2
thx @Grant. Hinzufügen von Flush machte diese Arbeit
Paweł Madej
3
In Ubuntu 16.04 und neuer ist Flush notwendig!
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

lanni654321
quelle
9
Hi @ lanni654321, vielleicht solltest du deine Antwort editieren und ein paar Worte hinzufügen, um kurz zu erklären, was du tust und warum? Ich denke, das würde deine Antwort noch hilfreicher machen. Was denkst du?
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
Rajan
quelle
1
ifcace sollte iface in der Zeile 5 sein
twoleggedhorse
@twoleggedhorse: Der Tippfehler für die Antwort wurde behoben, aber ich musste ein paar #in die erste Zeile einfügen , da Sie keine Bearbeitung ohne mindestens 6 geänderte Zeichen
vornehmen können
3

Ich hatte das gleiche Problem und die Lösung "war" einfach ... zumindest für mich.

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

Erstellen Sie eine leere Datei mit dem Namen der Netzwerkschnittstelle in:

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

Es klappt...

Manu
quelle
2

Ich hatte das gleiche Problem und dies war meine Lösung: Entfernen Sie alle leeren Zeilen am Ende der Datei /etc/network/interface.

AkYu
quelle
0

Ich habe auf meinen Ubuntu-Rechnern statische IP-Adressen festgelegt und dann festgestellt, dass ich die IP-Adresse einfach mit meinem Router zuweisen kann. Dies ist möglicherweise die einfachste Lösung. Melden Sie sich einfach bei Ihrem Router an, suchen Sie die angeschlossenen Geräte und weisen Sie dort die IP-Adresse zu.

Ole
quelle
0

Wenn Ihr Server diese alte IP-Adresse sowie die neu zugewiesene IP-Adresse anzeigt, starten Sie Ihren Server einfach neu. Die alte IP wird automatisch gelöscht und die neue beibehalten.
Und wenn Sie Ihren Server nicht neu starten möchten, verwenden Sie diesen Befehl:


sudo ip addr flush <your-interface-here>

Sonnenstrahlen
quelle
0

Führen Sie diese einfachen Befehle aus, um festzustellen, ob Ihre Netzwerkschnittstellen so eingestellt sind, dass sie beim Starten / Neustarten des Computers angezeigt werden.

grep "auto" /etc/network/interfaces

Wenn für die Standardausgabe keine Zeilen gedruckt werden, öffnen Sie sie /etc/network/interfacesmit einem Texteditor (vi, nano, sed), und Sie sehen hoffentlich etwas Ähnliches wie das folgende Bild.

Eine Standarddatei / etc / network / interfaces

Wenn Sie grepkeine Zeilen in das Terminalfenster zurückgegeben haben, kann das Format Ihrer / etc / network / interfaces natürlich nicht sehr ähnlich sein. :-) Befolgen Sie jedoch das Format der Auto- Zeilen.

auto lo
(Loopback configuration follows)
.
.
.

auto enp0s3
(primary interface configuration follows)
.
.
.

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

Jetzt auf Ihrer Maschine .

auto yourInteraceNameHere
(your interface configuration follows)
.
.
.

Sie wissen nicht, welche Schnittstellennamen verfügbar sind? Führen Sie diesen Befehl aus.

ifconfig -a

Der folgende Befehl gibt nur die Namen der Netzwerkschnittstellen zurück.

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

Bildbeschreibung hier eingeben

Anthony Rutledge
quelle