Hur man använder ip-kommandot på Linux

Du kan konfigurera IP-adresser, nätverksgränssnitt och routingregler i farten med Linux ip-kommandot. Vi visar dig hur du kan använda denna moderna ersättning av den klassiska (och nu utfasade) ifconfig.

Hur ip-kommandot fungerar

Med ip-kommandot kan du justera hur en Linux-dator hanterar IP-adresser, nätverksgränssnitt styrenheter (NIC) och ruttregler. Ändringarna träder också i kraft omedelbart – du behöver inte starta om. ip-kommandot kan göra mycket mer än detta, men vi kommer att fokusera på de vanligaste användningsområdena i den här artikeln.

ip-kommandot har många underkommandon, som vart och ett fungerar på en typ av objekt, såsom IP-adresser och rutter. Det finns i sin tur många alternativ för vart och ett av dessa objekt. Det är denna rikedom av funktionalitet som ger ip-kommandot den granularitet du behöver för att utföra vad som kan vara känsliga uppgifter. Det här är inte yxarbete – det kräver en uppsättning skalpeller.

Vi ska titta på följande objekt:

Adress: IP-adresser och intervall.
Länk: Nätverksgränssnitt, som trådbundna anslutningar och Wi-Fi-adaptrar.
Rutt: Reglerna som hanterar dirigering av trafik som skickas till adresser via gränssnitt (länkar).

Använder ip med adresser

Självklart måste du först känna till inställningarna du har att göra med. För att upptäcka vilka IP-adresser din dator har använder du kommandot ip med objektadressen. Standardåtgärden är show, som listar IP-adresserna. Du kan också utelämna visa och förkorta adress som ”addr” eller till och med ”a.”

Följande kommandon är alla likvärdiga:

ip address show
ip addr show
ip addr
ip a

De

Vi ser två IP-adresser, tillsammans med mycket annan information. IP-adresser är associerade med nätverksgränssnittskontroller (NIC). ip-kommandot försöker vara till hjälp och ger en massa information om gränssnittet också.

Den första IP-adressen är den (interna) loopback-adressen som används för att kommunicera inom datorn. Den andra är den faktiska (externa) IP-adressen som datorn har på det lokala nätverket (LAN).

Låt oss dela upp all information vi fick:

lo: Nätverksgränssnittets namn som en sträng.
: Detta är ett loopback-gränssnitt. Det är UPP, vilket betyder att det är i drift. De fysiskt nätverkslager (lager ett) är också uppe.
mtu 65536: Den maximala överföringsenheten. Detta är storleken på den största datamängden som detta gränssnitt kan överföra.
qdisc noqueue: En qdisc är en kömekanism. Den schemalägger överföringen av paket. Det finns olika kötekniker som kallas discipliner. Noqueue-disciplinen betyder ”skicka direkt, ställ inte i kö.” Detta är standard qdisc-disciplin för virtuella enheter, till exempel loopback-adressen.
status OKÄNT: Detta kan vara NED (nätverksgränssnittet är inte i drift), OKÄNT (nätverksgränssnittet är i drift men ingenting är anslutet) eller UPP (nätverket är i drift och det finns en anslutning).
gruppstandard: Gränssnitt kan grupperas logiskt. Standard är att placera dem alla i en grupp som kallas ”standard”.
qlen 1000: Den maximala längden på överföringskön.
länk/loopback: The medieåtkomstkontroll (MAC)-adress för gränssnittet.
inet 127.0.0.1/8: IP version 4-adressen. Den del av adressen efter snedstrecket (/) är Klasslös Inter-Domain Routing notation (CIDR) som representerar subnätmasken. Den indikerar hur många ledande sammanhängande bitar som är satta till en i subnätmasken. Värdet på åtta betyder åtta bitar. Åtta bitar inställda på en representerar 255 i binär, så nätmasken är 255.0.0.0.
scope host: IP-adressomfånget. Denna IP-adress är endast giltig inuti datorn (”värden”).
lo: Gränssnittet som denna IP-adress är associerad med.
valid_lft: Giltig livslängd. För en IP version 4 IP-adress tilldelad av Dynamic Host Configuration Protocol (DHCP), detta är den tid som IP-adressen anses giltig och kan göra och acceptera anslutningsförfrågningar.
prefered_lft: Önskad livslängd. För en IP version 4 IP-adress tilldelad av DHCP är detta den tid som IP-adressen kan användas utan begränsningar. Detta bör aldrig vara större än värdet valid_lft.
inet6: IP-version 6-adressen, scope , valid_lft och preferent_lft.

Det fysiska gränssnittet är mer intressant, som vi kommer att visa nedan:

enp0s3: Nätverksgränssnittets namn som en sträng. ”en” står för ethernet, ”p0” är bussnumret för Ethernet-kortet och ”s3” är kortplatsens nummer.

: Detta gränssnitt stöder bred- och multicasting, och gränssnittet är UPP (operativt och anslutet). Hårdvarulagret i nätverket (lager ett) är också UPP.
mtu 1500: Den maximala överföringsenhet som detta gränssnitt stöder.
qdisc fq_codel: Schemaläggaren använder en disciplin som heter ”Fair Queuing, Controlled Delay.” Den är utformad för att ge en rättvis del av bandbredden till alla trafikflöden som använder kön.
status UPP: Gränssnittet är funktionellt och anslutet.
group default: Detta gränssnitt är i ”default”-gränssnittsgruppen.
qlen 1000: Den maximala längden på överföringskön.
länk/eter: MAC-adressen för gränssnittet.
inet 192.168.4.26/24: IP version 4-adressen. ”/24” talar om för oss att det finns 24 sammanhängande ledande bitar inställda på en i subnätmasken. Det är tre grupper om åtta bitar. Ett åttabitars binärt tal motsvarar 255; därför är nätmasken 255.255.255.0.
brd 192.168.4.255: Den sändningsadress för detta undernät.
scope global: IP-adressen är giltig överallt på detta nätverk.
dynamisk: IP-adressen går förlorad när gränssnittet går ner.
noprefixroute: Skapa inte en rutt i rutttabellen när denna IP-adress läggs till. Någon måste lägga till en rutt manuellt om han vill använda en med denna IP-adress. På samma sätt, om denna IP-adress raderas, leta inte efter en rutt att radera.
enp0s3: Gränssnittet som denna IP-adress är associerad med.
valid_lft: Giltig livslängd. Tiden då IP-adressen kommer att anses giltig; 86 240 sekunder är 23 timmar och 57 minuter.
prefered_lft: Önskad livslängd. Den tid IP-adressen kommer att fungera utan några begränsningar.
inet6: IP version 6-adressen, scope, valid_lft och preferent_lft.

Visa endast IPv4- eller IPv6-adresser

Om du vill begränsa utmatningen till IP-version 4-adresserna kan du använda alternativet -4 enligt följande:

ip -4 addr

De

Om du vill begränsa utmatningen till IP-version 6-adresserna kan du använda alternativet -6 enligt följande:

ip -6 addr

De

Visa information för ett enda gränssnitt

Om du vill se IP-adressinformationen för ett enskilt gränssnitt kan du använda show- och dev-alternativen och namnge gränssnittet, som visas nedan:

ip addr show dev lo
ip addr show dev enp0s3

De

Du kan också använda flaggan -4 eller -6 för att ytterligare förfina resultatet så att du bara ser det du är intresserad av.

Om du vill se IP-version 4-informationen relaterad till adresserna på gränssnittet enp0s3, skriv följande kommando:

ip -4 addr show dev enp0s3

De

Lägga till en IP-adress

Du kan använda alternativen lägg till och utveckla för att lägga till en IP-adress till ett gränssnitt. Du behöver bara tala om för ip-kommandot vilken IP-adress som ska läggas till och till vilket gränssnitt den ska läggas till.

Vi kommer att lägga till IP-adressen 192.168.4.44 till enp0s3-gränssnittet. Vi måste också tillhandahålla CIDR-notationen för subnätmasken.

Vi skriver följande:

sudo ip addr add 192.168.4.44/24 dev enp0s3

De

Vi skriver följande för att ta en ny titt på IP version 4 IP-adresserna på det här gränssnittet:

ip -4 addr show dev enp0s3

De

Den nya IP-adressen finns på detta nätverksgränssnitt. Vi hoppar på en annan dator och använder följande kommando för att se om vi kan pinga den nya IP-adressen:

ping 192.168.4.44

De

IP-adressen svarar och skickar tillbaka bekräftelser till pingarna. Vår nya IP-adress är igång efter ett enkelt ip-kommando.

Ta bort en IP-adress

För att radera en IP-adress är kommandot nästan detsamma som för att lägga till en, förutom att du ersätter add med del, som visas nedan:

sudo ip addr del 192.168.4.44/24 dev enp0s3

De

Om vi ​​skriver följande för att kontrollera ser vi att den nya IP-adressen har raderats:

ip -4 addr show dev enp0s3

De

Använder ip med nätverksgränssnitt

Du använder länkobjektet för att inspektera och arbeta med nätverksgränssnitt. Skriv följande kommando för att se gränssnitten installerade på din dator:

ip link show

De

För att se ett enda nätverksgränssnitt, lägg bara till dess namn till kommandot, som visas nedan:

ip link show enp0s3

De

Starta och stoppa länkar

Du kan använda inställningsalternativet med antingen uppåt eller nedåt för att stoppa eller starta ett nätverksgränssnittsalternativ. Du måste också använda sudo, som visas nedan:

sudo ip link set enp0s3 down

De

Vi skriver följande för att ta en titt på nätverksgränssnittet:

ip link show enp0s3

De

Tillståndet för nätverksgränssnittet är NED. Vi kan använda upp-alternativet för att starta om ett nätverksgränssnitt, som visas nedan:

sudo ip link set enp0s3 up

De

Vi skriver följande för att göra ytterligare en snabbkontroll av nätverksgränssnittets tillstånd:

ip link show enp0s3

De

Nätverksgränssnittet startades om och tillståndet visas som UPP.

Använder ip med rutter

Med ruttobjektet kan du inspektera och manipulera rutter. Rutter definierar vart nätverkstrafik till olika IP-adresser vidarebefordras och genom vilket nätverksgränssnitt.

Om måldatorn eller enheten delar ett nätverk med den sändande datorn kan den sändande datorn vidarebefordra paketet direkt till den.

Men om destinationsenheten inte är direkt ansluten, vidarebefordrar den sändande datorn paketet till standardroutern. Routern bestämmer sedan vart paketet ska skickas.

För att se rutterna definierade på din dator, skriv följande kommando:

ip route

De

Låt oss ta en titt på informationen vi fick:

default: Standardregeln. Den här rutten används om ingen av de andra reglerna matchar det som skickas.
via 192.168.4.1: Dirigerar paketen via enheten på 192.168.4.1. Detta är IP-adressen för standardroutern på detta nätverk.
dev enp0s3: Använd detta nätverksgränssnitt för att skicka paketen till routern.
proto dhcp: Routingprotokollets identifierare. DHCP betyder att rutterna kommer att bestämmas dynamiskt.
metrisk 100: En indikation på ruttens preferens jämfört med andra. Rutter med lägre mätvärden används företrädesvis framför de med högre mätvärden. Du kan använda detta för att ge företräde åt ett trådbundet nätverksgränssnitt framför ett Wi-Fi.

Den andra rutten styr trafik till IP-intervallet 169.254.0.0/16. Det här är en nollkonfigurationsnätverk, vilket innebär att den försöker självkonfigurera för intranätkommunikation. Du kan dock inte använda den för att skicka paket utanför det omedelbara nätverket.

Principen bakom nollkonfigurationsnätverk är att de inte förlitar sig på att DHCP och andra tjänster är närvarande och aktiva. De bara måste se TCP/IP för att självidentifiera var och en av de andra enheterna i nätverket.

Låt oss ta en titt:

169.254.0.0/16: Räckvidden av IP-adresser som denna routingregel styr. Om datorn kommunicerar på detta IP-intervall, träder denna regel in.
dev enp0s3: Nätverksgränssnittet som trafiken som styrs av denna rutt kommer att använda.
scope link: Omfattningen är länk, vilket innebär att omfattningen är begränsad till det nätverk som den här datorn är direkt ansluten till.
metrisk 1000: Detta är ett högt mått och är inte en föredragen rutt.

Den tredje vägen styr trafik till IP-adressintervallet 192.168.4.0/24. Detta är IP-adressintervallet för det lokala nätverk som den här datorn är ansluten till. Det är för kommunikation över, men inom, det nätverket.

Låt oss dela upp det:

192.168.4.1/24: Räckvidden av IP-adresser som denna routingregel styr. Om datorn kommunicerar inom detta IP-intervall utlöser och styr denna regel paketdirigeringen.
dev enp0s3: Gränssnittet genom vilket denna väg kommer att skicka paket.
proto kärna: Den rutt som skapas av kärnan under automatisk konfiguration.
scope link: Omfattningen är länk, vilket innebär att omfattningen är begränsad till det omedelbara nätverk som den här datorn är ansluten till.
src 192.168.4.26: IP-adressen från vilken paket som skickas via denna rutt kommer.
mått 100: Detta låga mått indikerar en föredragen rutt.

Visa information för en enskild rutt

Om du vill fokusera på detaljerna för en viss rutt kan du lägga till listalternativet och IP-adressintervallet för rutten till kommandot enligt följande:

ip route list 192.168.4.0/24

De

Lägga till en rutt

Vi har precis lagt till ett nytt nätverkskort till den här datorn. Vi skriver följande och ser att det visas som enp0s8:

ip link show

De

Vi lägger till en ny rutt till datorn för att använda detta nya gränssnitt. Först skriver vi följande för att associera en IP-adress till gränssnittet:

sudo ip addr add 192.168.121.1/24 dev enp0s8

De

En standardrutt som använder den befintliga IP-adressen läggs till i det nya gränssnittet. Vi använder raderingsalternativet, som visas nedan, för att ta bort rutten och ge dess detaljer:

sudo ip route delete default via 192.168.4.1 dev enp0s8

De

Vi kommer nu att använda lägg till för att lägga till vår nya rutt. Det nya gränssnittet kommer att hantera nätverkstrafik inom IP-adressintervallet 192.168.121.0/24. Vi ger det ett mått på 100; eftersom det kommer att vara den enda rutten som hanterar den här trafiken är måttet ganska mycket akademiskt.

Vi skriver följande:

sudo ip route add 192.168.121.0/24 dev enp0s8 metric 100

De

Nu skriver vi följande för att se vad det ger oss:

ip route

De

Vår nya rutt är nu på plats. Men vi har fortfarande rutten 192.168.4.0/24 som pekar på gränssnittet enp0s8 – vi skriver följande för att ta bort det:

sudo ip route delete 192.168.4.0/24 dev enp0s8

De

Vi bör nu ha en ny rutt som pekar all trafik som är avsedd för IP-intervall 192.168.121.0/24 genom gränssnittet enp0s8. Det borde också vara den enda vägen som använder vårt nya gränssnitt.

Vi skriver följande för att bekräfta:

ip route

De

Tagen rutt, inte tagit rot

Det fina med dessa kommandon är att de inte är permanenta. Om du vill rensa dem, starta bara om ditt system. Det betyder att du kan experimentera med dem tills de fungerar som du vill. Och det är en mycket bra sak om du gör en fruktansvärd röra av ditt system—en enkel omstart kommer att återställa ordningen.

Å andra sidan, om du vill att förändringarna ska vara permanenta måste du göra lite mer arbete. Exakt vad som varierar beroende på distributionsfamiljen, men de involverar alla att ändra konfigurationsfiler.

På så sätt kan du dock provköra kommandon innan du gör något permanent.