Comment définir une adresse IP statique dans Ubuntu?

56

Je suis un nouvel utilisateur de Linux, avec des années d’expérience avec les serveurs / ordinateurs de bureau Windows et des problèmes pour définir une adresse IP statique. J'utilise une méthode utilisée pour les versions précédentes d'Ubuntu, qui ne semble pas fonctionner avec 16.04

J'ai utilisé la commande sudo nano /etc/network/interfaceet ajouté ce qui suit

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

J'ai redémarré le système et l'Ethernet est à peu près mort, le ping ne fonctionne pas du tout. J'ai essayé de modifier /etc/NetworkManager/NetworkManager.confet apporté les modifications suivantes

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

Avec cela, je peux faire fonctionner Ethernet de manière sporadique, mais cela finit par échouer.

J'ai essayé cette configuration sur deux autres machines ainsi qu'une machine virtuelle et tous ont les mêmes résultats. Je peux confirmer que ces paramètres fonctionnent correctement lorsque j'installe Windows sur l'une de ces machines. De plus, lorsque je laisse DHCP configurer automatiquement, tout fonctionne correctement, pas de problème.

Je suppose que quelque chose me manque ici, la mise en place d'une adresse IP statique ne devrait pas être difficile du tout.

TeeStar
la source
le seul avis I chose et peut - être une faute de frappe vient d' être ici , mais je changerais le Dns-nameserversà dns-nameserversne va probablement pas faire quelque chose pour résoudre ce problème , mais il peut empêcher d' autres problèmes de se produire
John Orion
1
Dns-nameservers est une syntaxe acceptable, donc cela ne devrait pas être un problème. Quand il fonctionnait avec DHCP, avez-vous exécuté un ifconfigpour vérifier le nom de l'interface ou avez-vous supposé qu'il s'agissait de enp0s25? Aussi avez-vous un auto enp0s25en haut de votre fichier de configuration? Si vous ne le pouvez pas, l'interface ne viendra tout simplement pas au démarrage.
Andrew
Veuillez modifier votre question et publier le contenu exact de votre /etc/network/interfacesfichier. Lorsque vous modifiez votre message, mettez en surbrillance le texte de ce fichier, puis cliquez sur le {}lien de code situé en haut de l’éditeur de message afin que le texte soit correctement formaté, ce qui facilite la lecture du contenu. Exécutez également cette commande ip addresset suivez les mêmes étapes pour {}(format de code) cette sortie.
LD James

Réponses:

83

J'ai eu le même problème et c'était ma solution:

sudo nano /etc/network/interfaces

collez (en modifiant pour votre réseau) ceci sous # 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

Vous pouvez obtenir le nom correct de l’interface à l’aide de la commande Terminal ifconfig -asur Ubuntu 16.04 ou ip address18.04+.

Arrêtez votre machine virtuelle et alors !!! Accédez aux paramètres réseau et cliquez plusieurs fois sur le bouton Actualiser l'adresse MAC :)

entrez la description de l'image ici

et démarrez votre VM et vous devriez avoir Internet!

MISE À JOUR 20.02.2019

Pour Ubuntu 18.04+ vous devez éditer ce fichier

/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
la source
2
Grand merci je l'apprécie. Cela semble fonctionner maintenant, sans aucun problème. C'est très solide en ce moment!
TeeStar
En plus du dns-nameserverscorrectif, je devais utiliser ce correctif: askubuntu.com/questions/574569/… Mon FAI est monkeybrains.net.
BSalita
56

Définir l'adresse IP statique comme ci-dessus dans la réponse acceptée fonctionne ici, mais vous devez vider l'ancien paramètre d'addresse IP puis redémarrer networking.service:

sudo ip addr flush enp0s25
sudo systemctl restart networking.service

Puis vérifiez qu'il est correct:

ip add
Subvention
la source
2
Le vidage était nécessaire pour éviter que l'ancienne adresse ne soit présente sur l'interface (basée sur ip addr). Le redémarrage de systemctl fonctionne également ifdownet ifupl'interface fonctionnera de manière plus sélective.
RichVel
2
merci @Grant. l'ajout de la couleur a fait ce travail
Paweł Madej
3
Dans Ubuntu 16.04 et plus récent flush est nécessaire!
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
la source
9
Bonjour @ lanni654321, vous devriez peut-être modifier votre réponse et ajouter quelques mots, en expliquant brièvement ce que vous faites et pourquoi? Je pense que cela rendrait votre réponse encore plus utile, qu'en pensez-vous?
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
la source
1
ifcace devrait être iface sur la ligne 5
twoleggedhorse Le
@twoleggedhorse: correction de la faute de frappe pour la réponse, mais je devais en ajouter quelques-unes #à la première ligne, car vous ne pouvez pas avoir de modification sans au moins 6 caractères modifiés qui ne sont pas des espaces
Andrei Rînea
3

J'ai eu le même problème et la solution "était" tout simplement ... pour moi, au moins.

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

Et créez un fichier vide portant le nom de l'interface réseau dans:

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

Ça marche...

Manu
la source
2

J'ai eu le même problème et c'était ma solution: Supprimez toutes les lignes vides à la fin du fichier /etc/network/interface.

AkYu
la source
0

J'avais l'habitude de définir des IP statiques sur mes machines Ubuntu, puis j'ai remarqué que je pouvais simplement attribuer l'adresse IP à l'aide de mon routeur. Cela peut être la solution la plus simple. Connectez-vous simplement à votre routeur, trouvez les périphériques connectés et attribuez-y l'adresse IP.

Ole
la source
0

Si votre serveur affiche cette ancienne adresse IP ainsi que la nouvelle adresse IP attribuée, redémarrez simplement votre serveur. Il videra automatiquement l'ancienne IP et persistera la nouvelle.
Et si vous ne voulez pas redémarrer votre serveur, utilisez cette commande:


sudo ip addr flush <your-interface-here>

Rayons de soleil
la source
0

Exécutez cette commande simple pour voir si votre ou vos interfaces réseau sont définies pour apparaître au démarrage / au redémarrage de la machine.

grep "auto" /etc/network/interfaces

Si aucune ligne n'est imprimée sur la sortie standard, ouvrez-la /etc/network/interfacesavec un éditeur de texte (vi, nano, sed) et espérons que vous verrez quelque chose de similaire à l'image ci-dessous.

Un fichier / etc / network / interfaces par défaut

Évidemment, si grepaucune ligne ne retourne dans la fenêtre du terminal, le format de vos interfaces / etc / network / ne peut pas être très similaire. :-) Cependant, suivez le format des lignes auto .

auto lo
(Loopback configuration follows)
.
.
.

auto enp0s3
(primary interface configuration follows)
.
.
.

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

Maintenant, sur votre machine .

auto yourInteraceNameHere
(your interface configuration follows)
.
.
.

Vous ne savez pas quels noms d'interface sont disponibles? Exécutez cette commande.

ifconfig -a

La commande suivante renverra uniquement les noms des interfaces réseau.

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

entrez la description de l'image ici

Anthony Rutledge
la source