Konfigurera nätverk med ’ip’-kommandot i Linux
Med Linux-kommandot ’ip’ kan du dynamiskt justera IP-adresser, nätverksgränssnitt och trafikdirigeringsregler. Det här kommandot ersätter det äldre ’ifconfig’ och ger ett mer modernt sätt att hantera nätverksinställningar.
Hur ’ip’-kommandot fungerar
Genom att använda ’ip’-kommandot kan du anpassa nätverkshanteringen på din Linux-dator, inklusive nätverkskort (NIC) och dirigeringsinställningar. Ändringarna du gör med ’ip’ träder i kraft omedelbart, vilket eliminerar behovet av omstarter. ’ip’-kommandot är mycket kraftfullt, men vi kommer här att fokusera på de vanligaste funktionerna.
Kommandot ’ip’ är uppbyggt kring en rad underkommandon, där varje underkommando hanterar en specifik typ av nätverksobjekt, som IP-adresser eller rutter. Varje objekt har i sin tur en mängd olika alternativ. Den här detaljrikedomen gör att du kan utföra precisa nätverksändringar, vilket krävs i många situationer. Det är ett verktyg som kräver noggrannhet, inte grov hantering.
Vi kommer att granska följande objekt:
- Adress: Hantering av IP-adresser och intervall.
- Länk: Hantering av nätverksgränssnitt, som ethernet-anslutningar och trådlösa adaptrar.
- Rutt: Hantering av regler för hur trafik skickas via olika gränssnitt (länkar) till adresser.
Hantera IP-adresser med ’ip’
Först behöver du veta vilka inställningar som redan är på plats. För att visa din dators IP-adresser använder du ’ip’ med objektet ’address’. Standardåtgärden är ’show’, som listar alla IP-adresser. Du kan också utelämna ’show’ och använda förkortningar som ’addr’ eller ’a’.
Följande kommandon ger alla samma resultat:
ip address show
ip addr show
ip addr
ip a
Du ser information om dina IP-adresser, samt annan relaterad data. IP-adresser är kopplade till nätverksgränssnitt (NIC). ’ip’-kommandot ger dig även en del information om själva gränssnittet.
Den första IP-adressen som visas är den interna ”loopback”-adressen, som används för kommunikation inom datorn. Den andra adressen är den externa IP-adressen, som datorn har på det lokala nätverket (LAN).
Vi bryter ner informationen vi får:
- lo: Namnet på nätverksgränssnittet.
- <loopback>: Indikerar att det här är ett loopback-gränssnitt. Det är UP (i drift) och dess fysiska nätverkslager (lager 1) är också UP.
- mtu 65536: Den maximala överföringsenheten, dvs. storleken på den största datamängd som gränssnittet kan hantera.
- qdisc noqueue: qdisc (ködisciplin) är en mekanism för att schemalägga överföring av nätverkspaket. ’noqueue’ betyder att paket skickas direkt utan att köas. Det här är standard för virtuella enheter som loopback-adressen.
- status OKÄNT: Statusen kan vara NED (gränssnittet är inte aktivt), OKÄNT (gränssnittet är aktivt men inget är anslutet) eller UPP (gränssnittet är aktivt och anslutet).
- group default: Gränssnitt kan logiskt grupperas, och standard är att placera alla i gruppen ’default’.
- qlen 1000: Den maximala längden på överföringskön.
- länk/loopback: MAC-adressen för gränssnittet.
- inet 127.0.0.1/8: IP-version 4-adressen. Efter snedstrecket (/) ser vi CIDR-notation som anger nätmasken. Värdet 8 betyder att de åtta första bitarna i masken är satta till 1, vilket ger nätmasken 255.0.0.0.
- scope host: IP-adressens räckvidd, i det här fallet endast giltig inom datorn (host).
- lo: Gränssnittet som IP-adressen är kopplad till.
- valid_lft: Tiden IP-adressen är giltig. För en IP-adress tilldelad med DHCP är det tiden som adressen anses giltig och kan användas för anslutningar.
- prefered_lft: Tiden IP-adressen kan användas utan restriktioner (bör aldrig vara längre än ’valid_lft’).
- inet6: IP-version 6-adressen samt scope, valid_lft och preferent_lft.
Det fysiska gränssnittet har mer intressant information:
- enp0s3: Namnet på nätverksgränssnittet. ”en” står för ethernet, ”p0” är bussnumret för ethernet-kortet och ”s3” är kortplatsnumret.
- <BROADCAST,MULTICAST,UP,LOWER_UP>: Gränssnittet stöder broadcast och multicast och gränssnittet är UPP (aktivt och anslutet). Hårdvarulagret i nätverket (lager 1) är också UPP.
- mtu 1500: Den maximala överföringsenheten för detta gränssnitt.
- qdisc fq_codel: Schemaläggaren använder ’Fair Queuing, Controlled Delay’, som är utformad för att ge rättvis bandbredd till trafikflöden som använder kön.
- status UPP: Gränssnittet är funktionellt och anslutet.
- group default: Det här gränssnittet tillhör gruppen ”default”.
- 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” betyder att 24 ledande bitar i nätmasken är satta till 1, vilket ger 255.255.255.0.
- brd 192.168.4.255: Broadcast-adressen för detta nätverk.
- scope global: IP-adressen är giltig i hela det lokala nätverket.
- dynamic: IP-adressen försvinner när gränssnittet stängs av.
- noprefixroute: Skapa inte en rutt i ruttabellen när denna IP-adress läggs till. En rutt måste läggas till manuellt. Omvänt, om adressen tas bort ska ingen rutt tas bort automatiskt.
- enp0s3: Gränssnittet som IP-adressen är kopplad till.
- valid_lft: Giltig livslängd för IP-adressen, i det här fallet cirka 24 timmar.
- prefered_lft: Tiden IP-adressen fungerar utan begränsningar.
- inet6: IP-version 6-adressen samt scope, valid_lft och preferent_lft.
Visa IPv4- eller IPv6-adresser
För att bara visa IPv4-adresser, använd alternativet ’-4’:
ip -4 addr
För att bara visa IPv6-adresser, använd ’-6’:
ip -6 addr
Visa information för ett specifikt gränssnitt
För att se information om ett visst gränssnitt, använd ’show’ med ’dev’ och gränssnittets namn:
ip addr show dev lo
ip addr show dev enp0s3
Du kan kombinera detta med ’-4’ eller ’-6’ för att finjustera resultatet.
För att se IPv4-information för ’enp0s3’, använd följande kommando:
ip -4 addr show dev enp0s3
Lägga till en IP-adress
Använd ’add’ och ’dev’ för att lägga till en IP-adress till ett gränssnitt. Du måste ange IP-adressen och gränssnittet.
Här lägger vi till 192.168.4.44 till ’enp0s3’. Vi måste också ange CIDR-notation för nätmasken.
Kommandot är:
sudo ip addr add 192.168.4.44/24 dev enp0s3
För att se IPv4-adresserna för detta gränssnitt använder vi:
ip -4 addr show dev enp0s3
Den nya IP-adressen finns nu på gränssnittet. Vi kan testa den genom att pinga den från en annan dator:
ping 192.168.4.44
IP-adressen svarar på ping-förfrågningar, så den fungerar som den ska.
Ta bort en IP-adress
För att ta bort en IP-adress, ersätt ’add’ med ’del’:
sudo ip addr del 192.168.4.44/24 dev enp0s3
För att verifiera tar vi en titt igen:
ip -4 addr show dev enp0s3
Den nya IP-adressen är nu borttagen.
Hantera nätverksgränssnitt med ’ip’
Med ’link’-objektet kan du granska och ändra nätverksgränssnitt. För att visa alla gränssnitt på datorn, kör:
ip link show
För att se ett enskilt gränssnitt, ange dess namn:
ip link show enp0s3
Starta och stoppa gränssnitt
Använd ’set’ med ’up’ eller ’down’ för att aktivera eller inaktivera gränssnitt. Kom ihåg att använda ’sudo’:
sudo ip link set enp0s3 down
För att kontrollera gränssnittets status, kör:
ip link show enp0s3
Gränssnittet är nu NED. Använd ’up’ för att aktivera det igen:
sudo ip link set enp0s3 up
En sista kontroll visar att gränssnittet är UPP igen:
ip link show enp0s3
Hantera rutter med ’ip’
Med ’route’-objektet kan du granska och ändra rutter. Rutter avgör vart nätverkstrafik skickas baserat på IP-adressen och via vilket gränssnitt.
Om måldatorn finns på samma nätverk som den avsändande datorn kan den skicka paket direkt. Men om målet inte finns på samma nätverk måste paketet skickas till en standardrouter, som i sin tur dirigerar det vidare.
För att se dina aktuella rutter, kör:
ip route
Låt oss gå igenom informationen:
- default: Standardrutten, som används om ingen annan matchar.
- via 192.168.4.1: Paketen dirigeras via routern med IP-adressen 192.168.4.1.
- dev enp0s3: Använd nätverksgränssnittet ’enp0s3’ för att skicka paket till routern.
- proto dhcp: Routingprotokollet är DHCP, vilket innebär att rutterna tilldelas dynamiskt.
- metric 100: Mätvärdet anger preferensen, där lägre värden prioriteras. Du kan använda detta för att till exempel prioritera en kabelanslutning framför en trådlös anslutning.
Den andra rutten hanterar trafik till IP-intervallet 169.254.0.0/16, som är ett nollkonfigurationsnätverk som försöker ställa in sig automatiskt för intranätkommunikation. Det kan dock inte användas för kommunikation utanför det omedelbara nätverket.
Nollkonfigurationsnätverk behöver inte DHCP eller andra tjänster; de använder TCP/IP för att identifiera enheter på nätverket.
Låt oss kolla detaljerna:
- 169.254.0.0/16: IP-adressintervallet som denna rutt styr.
- dev enp0s3: Gränssnittet som används.
- scope link: Omfattningen är begränsad till det nätverk som datorn är ansluten till.
- metric 1000: Högt mätvärde, vilket indikerar en icke-prioriterad rutt.
Den tredje rutten styr trafik till IP-intervallet 192.168.4.0/24, vilket är intervallet för det lokala nätverket. Detta är för kommunikation inom nätverket.
Detaljer:
- 192.168.4.1/24: IP-adressintervallet som denna rutt styr.
- dev enp0s3: Gränssnittet.
- proto kernel: Rutten skapades automatiskt av kärnan.
- scope link: Omfattningen är begränsad till det lokala nätverket.
- src 192.168.4.26: IP-adressen som används för paket som skickas via den här rutten.
- metric 100: Lågt mätvärde, vilket indikerar en prioriterad rutt.
Visa detaljer för en specifik rutt
För att se detaljerna för en specifik rutt, lägg till ’list’ och IP-adressintervallet:
ip route list 192.168.4.0/24
Lägga till en rutt
Vi har precis lagt till ett nytt nätverkskort. För att se det använder vi:
ip link show
Det nya gränssnittet är ’enp0s8’. För att använda det behöver vi lägga till en ny rutt. Börja med att tilldela en IP-adress:
sudo ip addr add 192.168.121.1/24 dev enp0s8
En standardrutt skapades automatiskt. Vi tar bort den genom att ange detaljerna:
sudo ip route delete default via 192.168.4.1 dev enp0s8
Nu lägger vi till vår nya rutt. Det nya gränssnittet kommer att hantera trafik till IP-intervallet 192.168.121.0/24. Vi ger det mätvärdet 100, vilket inte har någon praktisk betydelse här eftersom det är enda rutten för det intervallet.
Kommandot är:
sudo ip route add 192.168.121.0/24 dev enp0s8 metric 100
För att se rutterna använder vi:
ip route
Den nya rutten är på plats. Vi har dock fortfarande en rutt för 192.168.4.0/24 som pekar på enp0s8, så vi tar bort den:
sudo ip route delete 192.168.4.0/24 dev enp0s8
Nu har vi en rutt som dirigerar trafik till IP-intervallet 192.168.121.0/24 via gränssnittet ’enp0s8’. Det bör vara den enda rutten som använder gränssnittet.
Vi kan verifiera genom att köra:
ip route
Tillfälliga inställningar
Det fina med dessa kommandon är att de inte är permanenta. Startar du om systemet återställs alla ändringar. Det innebär att du kan experimentera utan att oroa dig för att göra permanenta misstag. En omstart åtgärdar eventuella fel.
Men om du vill att ändringarna ska bestå behöver du redigera konfigurationsfilerna. Processen varierar mellan olika Linux-distributioner, men principen är densamma.
Oavsett hur du gör så ger ’ip’ dig ett bra sätt att testa kommandon innan du gör permanenta ändringar.