Befehl iproute2 zum Aktivieren einer IPv4-Adresse

7

Ich untersuche, wie iproute2- Befehle die alten ifconfigund Befehle ersetzen können ifup ifdown, und habe etwas Interessantes herausgefunden.

Mein NIC-Setup lautet:

[16:07:41 root@vm network-scripts ]# cat /etc/sysconfig/network-scripts/ifcfg-eth2

DEVICE=eth2
ONBOOT=no
BOOTPROTO=dhcp

Um eine Schnittstelle auf und ab zu bringen, lautet der alte Weg: ifup eth2 ifdown eth2

[16:25:10 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff

[16:25:14 root@vm network-scripts ]# ifup eth2

Determining IP information for eth2... done.

[16:25:22 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global eth2
    inet6 fe80::a00:27ff:feb8:13b4/64 scope link
       valid_lft forever preferred_lft forever

[16:25:26 root@vm-cention network-scripts ]# ifdown eth2

[16:27:51 root@vm-cention network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff

Um den Befehl iproute2 zu verwenden, verwenden wir normalerweise ip link set eth2 up, aber anscheinend iproute2kann der nur die Verbindungsschicht der Netzwerkkarte aufrufen, nicht aber die IP-Adresse:

[16:36:25 root@vm network-scripts ]# ip link set eth2 up

[16:37:16 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::a00:27ff:feb8:13b4/64 scope link
       valid_lft forever preferred_lft forever

[16:37:20 root@vm network-scripts ]# ping yahoo.com
ping: unknown host yahoo.com

Aber das Traditionelle ifupkann das:

[16:37:39 root@vm network-scripts ]# ifup eth2

Determining IP information for eth2... done.

[16:39:59 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global eth2
    inet6 fe80::a00:27ff:feb8:13b4/64 scope link
       valid_lft forever preferred_lft forever

[16:40:04 root@vm network-scripts ]# ping yahoo.com
PING yahoo.com (98.139.183.24) 56(84) bytes of data.
64 bytes from ir2.fp.vip.bf1.yahoo.com (98.139.183.24): icmp_seq=1 ttl=43 time=243 ms
64 bytes from ir2.fp.vip.bf1.yahoo.com (98.139.183.24): icmp_seq=2 ttl=43 time=341 ms

Ich denke, dies ist darauf zurückzuführen, ifupdass die Verbindungsschicht und auch die IPv4-Adresse zusammengeführt werden.

Meine Frage lautet also: Wie verwenden wir iproute2, um auch die IPv4-Adresse zu aktivieren ?

Randnotiz: Interessanterweise wird beim iproute2Herunterfahren der Verbindungsschicht die IPv4-Adresse nicht deaktiviert:

[16:42:50 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global eth2
    inet6 fe80::a00:27ff:feb8:13b4/64 scope link
       valid_lft forever preferred_lft forever

[16:42:58 root@vm network-scripts ]# ip link set eth2 down

[16:43:04 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global eth2

[16:43:09 root@vm network-scripts ]# ping yahoo.com
ping: unknown host yahoo.com
Sylye
quelle

Antworten:

7

ipund ifupdienen verschiedenen Zwecken und sind kostenlos. ipsollte nicht zum Ersetzen verwendet werden ifup. Eigentlich ifuparbeitet auf einer höheren Ebene.

ifconfig(traditionell, portabel) und ip(nur Linux, aber viel bessere Schnittstelle) sind zwei Befehle, die denselben Zweck erfüllen. Sie dienen zum direkten Einstellen der Schnittstellenkonfiguration. ipersetzt in der Tat vollständig ifconfig(und routeeinige davon netstat) aufgrund seiner viel schöneren Benutzeroberfläche und seiner viel breiteren Funktionen, außer dass dies ifconfigaus Kompatibilitätsgründen verbleibt.

Weder ipnoch ifconfigenthalten oder persistent Konfiguration verwalten. Sie wenden die Anforderung an, die sie in der Befehlszeile erhalten, und das war's.

ifupund ifdowndienen dazu, Schnittstellen entsprechend der Systemkonfiguration auf und ab zu bringen. Auf einigen Systemen bleibt diese Konfiguration erhalten /etc/network/interfaces, auf anderen /etc/sysconfig/something. Ihre Aufgabe ist es, die gesamte Konfiguration einschließlich IP-Adressen, Routen, DNS-Servern, benutzerdefinierten Skripten usw. zu lesen und auf das System anzuwenden. Sie tun dies (zumindest konzeptionell), indem sie ipoder anrufen ifconfig.

Sie können alle ipBefehle, ifupdie zum Aufrufen einer Schnittstelle verwendet wurden, manuell ausführen. Beachten Sie jedoch, dass die ifup/ ifdownpersistenten Statusinformationen nicht mit der Realität synchron sind. ifupIch werde weiterhin denken, dass die Benutzeroberfläche ausgefallen ist, auch nachdem Sie sie aufgerufen haben ip.

Celada
quelle
Danke Celeda! Das erklärt meine Zweifel klar und jetzt verstehe ich die unterschiedliche Rolle von ipund ifupspiele!
Sylye
3

ifup ist ein übergeordnetes Tool, das Konfigurationsdateien verwendet, um Schnittstellen zu aktualisieren und zu konfigurieren. Wenn Sie dies per IP-Befehl tun möchten, können Sie Folgendes verwenden:

ip link set eth0 up # to bring interface up
ip a a 192.168.1.4/24 dev eth0 # to add address to interface
ip route add default via 192.168.1.1 # to add default route via gateway in that interface

Wenn Sie diese Schnittstelle automatisch mit dhcp konfigurieren möchten, müssen Sie den dhcp-Client verwenden - zum Beispiel dhclient oder dhcpcd

undefinieren
quelle
Danke :) und ich denke für meinen Fall, da es sich um ein DHCP-Setup handelt, iproute2wird dies nicht möglich sein. Vielen Dank jedoch für Ihre Antwort, da dies hilfreich ist, wenn ich eine feste IP durchführen muss.
Sylye