CentOS 7 setzt mein Gateway nicht über DHCP


8

Ich habe eine minimale Installation von CentOS 7.

Ich habe den Netzwerkmanager deaktiviert, da ich mein Netzwerk auf die "alte Schule" einrichten möchte.

systemctl stop NetworkManager 
systemctl disable NetworkManager
chkconfig network on
service network restart

Meine Netzwerkkonfiguration (/ etc / sysconfig / network-scripts / ifcfg-ens4) sieht folgendermaßen aus:

DEVICE="ens4"
TYPE="Ethernet"
NOZEROCONF="yes"
PERSISTENT_DHCLIENT="1"
BOOTPROTO="dhcp"
DEFROUTE="yes"
PEERROUTES="yes"
IPV4_FAILURE_FATAL="no"
NAME="ens4"
ONBOOT="yes"
NM_CONTROLLED="no"

Meine DHCP-Lease-Datei sieht folgendermaßen aus:

lease {
  interface "ens4";
  fixed-address 144.76.190.238;
  option subnet-mask 255.255.255.255;
  option routers 144.76.190.224;
  option dhcp-lease-time 86400;
  option dhcp-message-type 5;
  option domain-name-servers 8.8.8.8,8.8.4.4;
  option dhcp-server-identifier 144.76.190.224;
  option host-name "hello.example.com";
  option domain-name "example.com";
  renew 2 2014/10/21 05:44:47;
  rebind 2 2014/10/21 15:04:03;
  expire 2 2014/10/21 18:04:03;
}

Mein Problem ist nun, dass das Feld "Router" vom DHCP von CentOS 7 ignoriert zu werden scheint. IP, Netzmaske und Hostname werden korrekt festgelegt, aber meine Standardroute wird nicht festgelegt (leer).

Wie Sie sehen können, verwende ich die Netzmaske 255.255.255.255, sodass die Gateway-IP "außerhalb" meines Netzwerks liegt. Dafür wird eine zusätzliche Route benötigt. Wenn ich diese manuell ausführe:

route add -host 144.76.190.224 dev ens4
route add default gw 144.76.190.224

Dann funktioniert alles gut:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         144.76.190.224  0.0.0.0         UG    0      0        0 ens4
144.76.190.224  0.0.0.0         255.255.255.255 UH    0      0        0 ens4

Alle anderen von mir getesteten Linux-Distributionen, einschließlich Centos 6, funktionieren einwandfrei und legen diese beiden Routen automatisch vom DHCP aus fest.

Meine Frage lautet also: Warum wird es in CentOS 7 nicht automatisch eingestellt? Hat sich etwas geändert und ich musste dem DHCP-Client einige zusätzliche Flags hinzufügen, damit es funktioniert?

Es scheint, dass CentOS 6 dhclient Version 4.1.1-P1 und CentOS 7 4.2.5 verwendet. Vielleicht haben sie etwas zwischen diesen Versionen geändert?

UPDATE 1:

Ich habe mir die Versionshinweise von dhclient angesehen und diese für 4.0.0 gefunden:

"Das dhclient-Skript wurde aktualisiert, um eine Host-Route für das Standard-Gateway zu erstellen, wenn die angegebene Subnetzmaske für eine IPv4-Adresse a / 32 war. Dadurch kann der Client in" Captive "-Netzwerkumgebungen arbeiten, in denen der Betreiber keine Clients möchte direkt übersprechen. "

Das hätte also schon vor langer Zeit funktionieren sollen. Vielleicht hat CentOS 7 es aus dem "dhclient-script" entfernt?

UPDATE 2:

Ich habe die Datei "/ sbin / dhclient-script" von einer CentOS 6-Installation auf den CentOS 7-Server kopiert. Jetzt funktioniert alles gut. Ich werde untersuchen, welche Änderungen sie vorgenommen haben, aber es scheint, dass sie einen Fehler in CentOS 7 eingeführt haben.

UPDATE 3:

Ich habe das Problem herausgefunden. Sie haben in der neuen Version von / sbin / dhclient-script einen (dummen) Ping-Check hinzugefügt, der versucht, das Gateway vor dem Hinzufügen zu pingen. Da ich Pings in meiner Firewall auf dem DHCP-Server blockiere, hat sie nicht geantwortet und daher hat das dhclient-Skript keine Standardroute hinzugefügt.


Was ist /etc/sysconfig/networkInhalt? Hast du was drin /etc/sysconfig/network-scripts/route-ens4?
Xavier Lucas

Warum versuchen Sie, DHCP zu verwenden? Hetzner möchte, dass Sie die Adresse statisch einrichten.
Michael Hampton

Ich bin mir nicht sicher, warum Sie Hetzner erwähnen, aber dies ist ein VPS-Gast gegen den Hosts dhcpd.
Daniele Testa

Wenn es sich um ein Hetzner-System handelt, finden Sie die Antwort auf Ihr Problem möglicherweise in diesem Dokument wiki.hetzner.de/index.php/Netzkonfiguration_CentOS/en .
user9517

Blockieren Sie den ICMP-Verkehr nur, wenn Sie wirklich wissen, was Sie tun. Die Dinge werden ohne offensichtlichen Grund kaputt gehen, und mit IPv6 wird es noch schlimmer.
Michael Hampton

Antworten:


4

Stellen Sie sicher, dass der DHCP-Server auf Ping reagiert. Andernfalls setzt das Skript / sbin / dhclient die Standardroute nicht korrekt.

Diese zusätzliche "Prüfung" scheint späteren Versionen von dhclient hinzugefügt oder speziell in CentOS 7 hinzugefügt worden zu sein. Die Ping-Prüfung ist in CentOS-Versionen vor 7 nicht vorhanden.


1

Vielleicht haben Sie bereits ein Standard-Gateway eingerichtet /etc/sysconfig/network/routes?

Wenn nicht, können Sie zumindest konfigurieren, dass das, was Sie manuell weiterleiten, automatisch in dieser Datei ausgeführt wird:

144.76.190.224 - 255.255.255.255 ens4
default 144.76.190.224 - ens4

Es gibt keinen solchen Weg. "/ etc / sysconfig / network" ist eine Datei. Ich befürchte, dass das manuelle Einstellen der Routen für mich keine Option ist. Es muss vom DHCP aus eingestellt werden, genau wie in CentOS 6.x
Daniele Testa

Entschuldigung, es sollte in sein /etc/sysconfig/network-scripts(ich verwirre diese immer)
Christian

1

Ich hatte dieses Problem gerade bei einer Neuinstallation eines CentOS 7 VMWare-Gasts und es war darauf zurückzuführen, dass ich zuvor eine DHCP-Reservierung für diesen Gast in VMWare Workstation eingerichtet hatte unter:

C: \ ProgramData \ VMware \ vmnetdhcp.conf

Das Update besteht also darin, die beiden Zeilen in der conf-Datei, die sich auf den CentOS-Server beziehen, zu kommentieren oder zu entfernen:

host VMnet8 {
    hardware ethernet 00:40:56:C0:00:08;
    fixed-address 192.168.80.1;
    #hardware ethernet 00:0C:29:19:C7:7A; <--Comment or remove this CentOS line
    #fixed-address 192.168.80.111;        <--Comment or remove this CentOS line
    option domain-name-servers 0.0.0.0;
    option domain-name "";
    option routers 0.0.0.0;
}

Speichern Sie die Datei (als Administrator), starten Sie den VMWare-DHCP-Dienst auf dem Host neu und führen Sie dann einen network service restartVorgang unter CentOS durch. Sie haben jetzt ein Gateway, um ins Internet zu gelangen. Sie müssen jedoch auch yum updatedas Problem mit der DHCP-Reservierung ohne Gateway beheben. Wenn Sie die Reservierung zuvor wieder hinzufügen, hat sie beim nächsten Neustart kein Gateway. Sobald die Aktualisierungen abgeschlossen sind, sollte das Problem behoben sein. Fügen Sie daher die obigen Zeilen wieder zur conf-Datei hinzu und starten Sie den VMWare-DHCP-Dienst erneut, damit Ihre Reservierung wieder hergestellt und Sie festgelegt sind.

Dies ist nur bei der Ersteinrichtung von CentOS der Fall. Es ist also nur schmerzhaft, dass einmal nach einer Neuinstallation. Trotzdem mache ich VMWare-Schnappschüsse.

Für die Aufzeichnung ist mein NetworkManager aktiviert. Wenn jemand einen dauerhaften Weg kennt, um dies nach einer Neuinstallation zu vermeiden, teilen Sie dies bitte mit. Es wird möglicherweise in einem späteren Update von CentOS behoben, da yum updatees behoben ist.

Es ist eine spezifische Situation, aber keine ungewöhnliche Situation. Ich habe diese Antwort meistens gepostet, weil ich wahrscheinlich in Zukunft wieder hier sein werde, um mich daran zu erinnern, was ich getan habe. Aber ich habe einige Stunden damit verbracht, also hilft es hoffentlich auch jemand anderem.


0

Ich hatte dieses Problem. Ich habe eine CentOS 7-VM aus einer VMware-Vorlage bereitgestellt

Die Antwort bezüglich '/ etc / sysconfig / network / route' hat mir geholfen, indem sie einen großen Hinweis gegeben hat!

Der 'Option Router', obwohl in /var/lib/dhclient/dhclient--eth0.lease festgelegt, wurde nicht wirksam, als ich die Ausgabe des Routenbefehls betrachtete und nur Knoten in meinem Subnetz erreichen konnte

Ich konnte manuell ein Gateway in meinem /etc/sysconfig/network-scripts/ifcfg-eth0.cfg einrichten, und das würde gut funktionieren

Letztendlich fand ich eine Datei namens / etc / sysconfig / network, die ein Standard-Gateway enthielt

Als ich dieses Gateway auskommentierte und meinen Netzwerkdienst neu startete, war alles in Ordnung

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.