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.
/etc/sysconfig/network
Inhalt? Hast du was drin/etc/sysconfig/network-scripts/route-ens4
?