Tips en Trucs 2014

Netwerkbeheer met iproute2

Zoals reeds eerder vermeld in deze tips worden de network tools (net-tools) ifconfig, netstat en route, die in de terminal bij het beheer van het netwerk gebruikt worden, afgeschreven. Ze worden sinds enkele jaren vervangen door de iproute2 suite.

Iproute2 moet de oude set netwerkbeheer opdrachten, die sedert 2001 niet verder ontwikkeld werden, vervangen. Iproute2 staat dus in voor het configureren van netwerkverbindingen, routing tabellen, het beheer van de ARP tabel, enz.

Vandaag bekijken de nuttigste opdrachten die je met de nieuwe set kunt uitvoeren. Daarbij zetten we enkele oude opdrachten om naar de nieuwe suite.

NetworlManager en iproute2

NetworkManager is een dienst die zorgt dat het netwerk grotendeels automatisch beheert wordt en dat gebruikers zelf het netwerk kunnen beheren. Dit is vooral handig bij verbinden met een WiFi Access Point. Maar indien je het netwerk als beheerder wilt configureren, zoals je het zelf wilt, dan blijkt NetworkManager opeens een lastpost. Een manueel netwerkbeheer met iproute2 met een opgestarte NetworkManager heeft dus conflicten. Met de volgende opdracht schakel je NetworkManager uit:

dany@linux-nlfy:~> su
Wachtwoord:
linux-nlfy:/home/dany # systemctl stop NetworkManager.service

Instellen van netwerkverbindingen

De klassieke opdrachten om met ifconfig een netwerkverbinding te activeren en een IP adres te geven, waren:

linux-nlfy:/home/dany # ifconfig enp0s20u1 up
linux-nlfy:/home/dany # ifconfig enp0s20u1 192.168.1.3 netmask 255.255.255.0

Met iproute2 bedien je fysieke en logische netwerkverbindingen met de link subopdracht. De netwerkverbinding enp0s20u1 activeren, doe je met:

linux-nlfy:/home/dany # ip link set enp0s20u1 up

Om een IP adres aan een netwerkverbinding toe te kennen, gebruik je:

linux-nlfy:/home/dany # ip addr add 192.168.1.3/24 dev enp0s20u1

Om het resultaat te bekijken, kan je één van de volgende opdrachten uitvoeren:

linux-nlfy:/home/dany # ip addr ls
...
linux-nlfy:/home/dany # ip addr show
...
linux-nlfy:/home/dany # ip addr ls enp0s20u1
5: enp0s20u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 64:d1:a3:29:46:81 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global enp0s20u1
       valid_lft forever preferred_lft forever
    inet6 fe80::66d1:a3ff:fe29:4681/64 scope link 
       valid_lft forever preferred_lft forever

De eerste twee opdrachten geven dezelfde informatie, terwijl de laatste opdracht enkel informatie van netwerkverbinding enp0s20u1 weergeeft.

Een ethernet alias opzetten

Veronderstel dat de netwerkverbinding enp0s20u1 het IP adres 192.168.1.3 heeft en je de alias enp0s20u1:0 met IP adres 192.168.1.75 wilt aanmaken. Voorheen gebruikje daarvoor de opdracht:

linux-nlfy:/home/dany # ifconfig enp0s20u1:0 192.168.1.75 up

Om aan te duiden dat het een alias was, moest je :cijfer meegeven, met iproute2 gebruik je eenvoudig dezelfde opdracht:

linux-nlfy:/home/dany # ip addr add 192.168.1.75/24 dev enp0s20u1

Routing

Wat is het moderne alternatief voor de opdracht route -n? Simpelweg:

linux-nlfy:/home/dany # route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 enp0s20u1
172.16.121.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
172.16.127.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 enp0s20u1
linux-nlfy:/home/dany # ip ro
default via 192.168.1.1 dev enp0s20u1  proto static 
172.16.121.0/24 dev vmnet1  proto kernel  scope link  src 172.16.121.1 
172.16.127.0/24 dev vmnet8  proto kernel  scope link  src 172.16.127.1 
192.168.1.0/24 dev enp0s20u1  proto kernel  scope link  src 192.168.1.3  metric 1

De uitvoer wordt anders weergegeven, maar bevat dezelfde informatie.

Om routes toe te voegen of te verwijderen, gebruik je de volgende syntax: ip ro add|del doel via gateway, om een route naar het lan 10.0.0.0/16 toe te voegen, gebruik je:

linux-nlfy:/home/dany # ip ro add 10.0.0.0/16 via 192.168.1.1
linux-nlfy:/home/dany # ip ro
default via 192.168.1.1 dev enp0s20u1  proto static 
10.0.0.0/16 via 192.168.1.1 dev enp0s20u1 
172.16.121.0/24 dev vmnet1  proto kernel  scope link  src 172.16.121.1 
172.16.127.0/24 dev vmnet8  proto kernel  scope link  src 172.16.127.1 
192.168.1.0/24 dev enp0s20u1  proto kernel  scope link  src 192.168.1.3  metric 1 
linux-nlfy:/home/dany # ip ro del 10.0.0.0/16 via 192.168.1.1
linux-nlfy:/home/dany # ip ro
default via 192.168.1.1 dev enp0s20u1  proto static 
172.16.121.0/24 dev vmnet1  proto kernel  scope link  src 172.16.121.1 
172.16.127.0/24 dev vmnet8  proto kernel  scope link  src 172.16.127.1 
192.168.1.0/24 dev enp0s20u1  proto kernel  scope link  src 192.168.1.3  metric 1

De route naar een IP adres achterhalen

Als je verschillende netwerkverbindingen hebt (enp0s20u1 op het werk, wlp4s0 thuis en tun0 voor VPN) kan je om een IP adres te bereiken, nagaan welke netwerkverbinding wordt gebruikt. Om na te gaan via welke netwerkverbinding de Google DNS server (8.8.8.8) wordt bereikt, voer je de volgende opdracht uit:

linux-nlfy:/home/dany # ip route get 8.8.8.8
8.8.8.8 via 192.168.1.1 dev enp0s20u1  src 192.168.1.3 
    cache

Om 8.8.8.8 te contacteren gebruikt mijn computer de ethernet netwerkverbinding met het IP adres 192.168.1.3 via de gateway met het IP adres 192.168.1.1.

Buren

Iproute2 bevat een subopdracht om de ARP tabel op een UNIX computer te bekijken (equivalent van de traditionele arp -na opdracht). Je krijgt dezelfde informatie met de opdracht ip neigh.

linux-nlfy:/home/dany # arp -na
? (192.168.1.1) at 00:26:91:a5:12:34 [ether] on enp0s20u1
? (192.168.1.65) at 64:70:02:11:f2:5f [ether] on enp0s20u1
linux-nlfy:/home/dany # ip neigh
192.168.1.1 dev enp0s20u1 lladdr 00:26:91:a5:12:34 STALE
192.168.1.65 dev enp0s20u1 lladdr 64:70:02:11:f2:5f REACHABLE
iproute2