Linux biedt veel terminal hulpmiddelen om beheerders te helpen bij het beheren, configureren en het opsporen van fouten van netwerkinstellingen.
Netwerk configuratie en het opsporen van fouten zijn cruciale taken die beheerders regelmatig moeten uitvoeren. Sommige van deze taken kunnen een uitdaging zijn. Wanneer je echter te maken krijgt met netwerkproblemen, zal het gebruik van de juiste opdrachten je helpen om de resultaten sneller en consistenter te bereiken.
Maak je bij het aanpassen van netwerkinstellingen een fout, dan kan een herstart soms helpen. Om enkel het netwerk te herstarten en de originele netwerkinstellingen terug te activeren, voer je in openSUSE Leap 15.4 de volgende opdracht uit:
dany@pindabook:~> sudo service network restart
De ip opdracht is een veelzijdig hulpmiddel om netwerk objecten op je Linux systeem te tonen en te manipuleren, inclusief IP adressen, routes, en ARP tabellen. Het is een handig hulpmiddel om het netwerk te configureren, maar ook om problemen met netwerkverbindingen op te lossen.
De ip opdracht vervangt de functionaliteit van veel opdrachten uit het oude net-tools pakket, zoals ifconfig, route en arp, daarenboven voegt het veel andere mogelijkheden toe.
In zijn eenvoudigste vorm kan je gewoon ip uitvoeren en een netwerkobject opgeven om te manipuleren, zoals een adres, link, of route, en een subopdracht om een actie uit te voeren. Indien je geen subopdracht opgeeft, zullen vele objecten standaard de show subopdracht gebruiken om informatie met betrekking tot dat object weer te geven.
ip <OBJECT> [SUBOPDRACHT]
Bijvoorbeeld, om de link status op alle netwerk apparaten te zien, voer je de volgende opdracht uit:
dany@pindabook:~>ip link
1: lo:mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: wlan1: mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000 link/ether ac:7b:a1:42:e0:5f brd ff:ff:ff:ff:ff:ff
Omdat show de standaard subopdracht is, kun je hetzelfde resultaat ook krijgen door ip link
of zelfs ip l
(veel objecten herkennen een afkorting) uit te voeren.
De ip opdracht beheert vele objecten. De belangrijkste zijn:
link
of l
- controleert de status van netwerkapparatenaddress
of a
- manipuleert IP-adressen op apparatenroute
of r
- beheert routeringstabelgegevensneighbor
of n
- beheert ARP-tabelgegevensJe kunt een volledige lijst van objecten en subopdrachten zien door ip help
uit te voeren.
Toon netwerkstatistieken (-s
) in een voor mensen leesbaar formaat (-h
) voor een specifieke netwerkapparaat:
dany@pindabook:~>ip -s -h l show dev wlan1
2: wlan1:mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000 link/ether ac:7b:a1:42:e0:5f brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped missed mcast 9.86M 31.9k 0 0 0 0 TX: bytes packets errors dropped carrier collsns 5.49M 32.3k 0 0 0 0 altname wlp4s0
Toon de IP adressen van alle alle apparaten:
dany@pindabook:~>ip a
1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: wlan1: mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether ac:7b:a1:42:e0:5f brd ff:ff:ff:ff:ff:ff altname wlp4s0 inet 192.168.1.53/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan1 valid_lft 3138sec preferred_lft 3138sec inet6 fd00:e077:be82:0:7a99:4734:bf32:4abe/64 scope global temporary dynamic valid_lft 604335sec preferred_lft 85379sec inet6 fd00:e077:be82:0:21de:8cdf:1472:e5d1/64 scope global mngtmpaddr noprefixroute valid_lft forever preferred_lft forever inet6 2a02:a03f:f03e:3000:52f0:2e4e:b327:db4b/64 scope global temporary dynamic valid_lft 57503sec preferred_lft 43103sec inet6 2a02:a03f:f03e:3000:59e0:d066:22c0:2b71/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 57503sec preferred_lft 43103sec inet6 fe80::73c7:4f09:5515:770b/64 scope link noprefixroute valid_lft forever preferred_lft forever
Toon het IP adres van een bepaald apparaat b.v., wlan1:
dany@pindabook:~>ip a show dev wlan1
2: wlan1:mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether ac:7b:a1:42:e0:5f brd ff:ff:ff:ff:ff:ff altname wlp4s0 inet 192.168.1.53/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan1 valid_lft 3071sec preferred_lft 3071sec inet6 fd00:e077:be82:0:7a99:4734:bf32:4abe/64 scope global temporary dynamic valid_lft 604269sec preferred_lft 85313sec inet6 fd00:e077:be82:0:21de:8cdf:1472:e5d1/64 scope global mngtmpaddr noprefixroute valid_lft forever preferred_lft forever inet6 2a02:a03f:f03e:3000:52f0:2e4e:b327:db4b/64 scope global temporary dynamic valid_lft 57437sec preferred_lft 43037sec inet6 2a02:a03f:f03e:3000:59e0:d066:22c0:2b71/64 scope global dynamic mngtmpaddr noprefixroute valid_lft 57437sec preferred_lft 43037sec inet6 fe80::73c7:4f09:5515:770b/64 scope link noprefixroute valid_lft forever preferred_lft forever
Geef de routeringstabel weer:
dany@pindabook:~> ip route
default via 192.168.1.1 dev wlan1 proto dhcp metric 600
192.168.1.0/24 dev wlan1 proto kernel scope link src 192.168.1.53 metric 600
De ip opdracht geeft toegang op een lager niveau om netwerkopties op jouw Linux systeem te configureren. Hoewel het handig is om fouten op te sporen, kan het moeilijker zijn om er het netwerk mee in te stellen. Daarom bieden veel distributies een toegang op een hoger niveau om dezelfde taak uit te voeren. Laten we nu eens kijken naar de NetworkManager configuratie opdracht nmcli, die een geïntegreerde manier biedt om het netwerk te configureren.
NetworkManager is een netwerk configuratie toepassing die standaard beschikbaar is bij veel Linux distributies, waaronder Fedora en openSUSE. NetworkManager draait op de achtergrond (daemon), en zijn doel is om netwerkconfiguratie eenvoudiger en meer geautomatiseerd te maken.
Het is gebruikelijk voor gebruikers van grafische omgevingen (KDE, Gnome, enz.) om grafische programma's van NetworkManager (GUI clients) te gebruiken om het netwerk te configureren. In gevallen waarin je werkt met een systeem zonder toetsenbord, muis of scherm (headless servers) of als je configuratie wilt automatiseren via scripts, komt de nmcli opdracht goed van pas.
NetworkManager en nmcli zijn een veelzijdige combinatie waarmee je veel netwerkopties kunt verifiëren en configureren. De nmcli opdracht gebruik je als volgt:
nmcli <OBJECT> [SUBOPDRACHT] [OPTIES]
De meest voorkomende objecten zijn:
general
- toont NetworkManager status en rechtennetworking
- toont, activeert en deactiveert NetworkManagerradio
- toont, activeert en deactiveert WiFi en WWANdevice
- toont en manipuleert de status van netwerkapparatenconnection
- beheert Netwerk Manager verbindingsprofielenHet is onmogelijk om alle opties hier te behandelen.
Laten we enkele voorbeelden bekijken van hoe je nmcli kunt gebruiken voor veelvoorkomende netwerkconfiguratietaken.
Voor meer voorbeelden, raadpleeg de officiële nmcli-voorbeelden pagina of de man pagina's met man nmcli--examples
.
Controleer de status van netwerkapparaten:
dany@pindabook:~> nmcli device status
DEVICE TYPE STATE CONNECTION
wlan1 wifi connected WiFi-2.4-XXXX
p2p-dev-wlan1 wifi-p2p disconnected --
lo loopback unmanaged --
Toon alle verbindingsprofielen:
dany@pindabook:~> nmcli con show NAME UUID TYPE DEVICE WiFi-2.4-XXXX 8ce75e37-fdbd-4938-9722-2ea77426b5b8 wifi wlan1 eth0 7ba00b1d-8cdd-30da-91ad-bb83ed4f7474 ethernet --
Toon details over een specifieke verbinding (b.v. eth0):
dany@pindabook:~> nmcli connection show eth0
connection.id: eth0
connection.uuid: 7ba00b1d-8cdd-30da-91ad-bb83ed4f7474
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: eth0
...
ipv6.token: --
proxy.method: none
proxy.browser-only: no
proxy.pac-url: --
proxy.pac-script: --
Specifieke parameters van een verbinding opvragen (b.v. IP adres en DNS):
dany@pindabook:~> nmcli -g ip4.address,ip4.dns connection show WiFi-2.4-XXXX
192.168.1.53/24
192.168.1.1
Met nmcli kun je ook interactief een verbindingsprofiel bewerken.
Deze methode biedt hulp en auto-aanvulling via de Tab-toets, die je door de vele beschikbare opties leidt.
Activeer de editor met nmcli connection edit VERBINDINGS-NAAM
:
dany@pindabook:~>sudo nmcli connection edit WiFi-2.4-XXXX
[sudo] wachtwoord voor root: ===| nmcli interactive connection editor |=== Editing existing '802-11-wireless' connection: 'WiFi-2.4-XXXX' Type 'help' or '?' for available commands. Type 'print' to show all the connection properties. Type 'describe [. ]' for detailed property description. You may edit the following settings: connection, 802-11-wireless (wifi), 802-11-wireless-security (wifi-sec), 802-1x, ethtool, match, ipv4, ipv6, hostname, tc, proxy nmcli> ? ------------------------------------------------------------------------------ ---[ Main menu ]--- goto [ | ] :: go to a setting or property remove [. ] | :: remove setting or reset property value set [ . ] :: set property value describe [ . ] :: describe property print [all | [. ]] :: print the connection verify [all | fix] :: verify the connection save [persistent|temporary] :: save the connection activate [ ] [/ | ] :: activate the connection back :: go one level up (back) help/? [ ] :: print this help nmcli :: nmcli configuration quit :: exit nmcli ------------------------------------------------------------------------------ nmcli>
Na het aanpassen van instellingen in de nmcli editor, kan je een bepaalde waarde opvragen met de opdracht:
nmcli> print connection.interface-name
connection.interface-name: wlan1
Zonder opties krijg je alle huidige instellingen te zien. Wanneer je klaar bent met wijzigen, sla je ze op in de verbinding en sluit je af om de bewerking te voltooien:
nmcli>save
Connection 'WiFi-2.4-7F8D' (8ce75e37-fdbd-43bd-b4dc-4dc806e93a7c) successfully updated. nmcli>quit
dany@pindabook:~>
Start tenslotte de verbinding opnieuw op om de wijzigingen effectief te maken. Als voorbeeld gebruik ik deze keer de verbinding via een netwerkkabel, vanzelfsprekend na het aansluiten van een met de router verbonden netwerkkabel:
dany@pindabook:~>sudo nmcli con down eth0
Connection 'eth0' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2) dany@pindabook:~>sudo nmcli con up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
Network Manager en nmcli zijn een complete oplossing voor netwerkconfiguratie. Als je het nog nooit eerder hebt gebruikt, begin dan met enkele van de basiscommando's en ga geleidelijk over op meer complexe instellingen. Raadpleeg de man pages en voorbeelden om specifieke taken uit te voeren.
Bij het beheren van connectiviteitsproblemen is DNS-naamresolutie vaak een bron van hoofdpijn. Het hulpprogramma nslookup helpt je DNS-naamresolutie te controleren en problemen op te lossen.
Om snel de naamresolutie voor een bepaalde host te controleren, gebruik je nslookup met de hostnaam als argument. De opdracht gebruikt de standaard DNS-configuratie voor de naamresolutie:
dany@pindabook:~> nslookup pindanet.be
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
Name: pindanet.be
Address: 46.30.213.10
Name: pindanet.be
Address: 2a02:2350:5:10a:53:7474:5edc:d18f
Als de naamresolutie mislukt, kun je een alternatieve naamserver gebruiken voor de resolutie door het adres ervan op te geven als derde argument:
dany@pindabook:~> nslookup pindanet.be 208.67.222.222
Server: 208.67.222.222
Address: 208.67.222.222#53
Non-authoritative answer:
Name: pindanet.be
Address: 46.30.213.10
Name: pindanet.be
Address: 2a02:2350:5:10a:53:7474:5edc:d18f
Deze informatie is nuttig voor het oplossen van problemen, omdat het helpt om vast te stellen of het probleem lokaal te wijten is aan een specifieke server, of iets uitgebreider is. Je kunt het ook gebruiken om reverse DNS queries uit te voeren door het IP adres op te geven in plaats van een hostnaam:
dany@pindabook:~> nslookup 46.30.213.10
10.213.30.46.in-addr.arpa name = webcluster1.webpod12-cph3.one.com.
Authoritative answers can be found from:
Hieruit blijkt dat mijn website bij one.com gehost wordt.
Een andere veel voorkomende taak bij het oplossen van problemen met netwerkconnectiviteit is bepalen of een verbinding tot stand is gebracht of dat een bepaalde dienst beschikbaar is op een server.
De ss opdracht, kort voor socket statistics, is een handig hulpmiddel dat informatie over netwerksockets weergeeft. Het is de moderne vervanger van netstat dat vergelijkbare functionaliteit biedt, maar een paar extra mogelijkheden bevat.
Gebruik ss zonder opties om de volledige lijst te zien van alle aangemaakte netwerk sockets voor socket types TCP, UDP en UNIX.
dany@pindabook:~> ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
u_str ESTAB 0 0 * 31255 * 29649
u_str ESTAB 0 0 * 25864 * 25863
u_str ESTAB 0 0 /run/systemd/journal/stdout 22782 * 19062
u_str ESTAB 0 0 * 65423 * 68237
u_str ESTAB 0 0 @/tmp/.ICE-unix/3350 32341 * 29653
...
u_str ESTAB 0 0 * 31240 * 32330
u_str ESTAB 0 0 * 20750 * 20470
icmp6 UNCONN 0 0 *:ipv6-icmp *:*
tcp ESTAB 0 0 192.168.1.53:ssh 192.168.1.24:43218
tcp ESTAB 0 34 192.168.1.53:50584 218.72.58.42:51413
Aangezien de standaard opdracht alle opgezette netwerkverbindingen toont, kan deze lijst op een drukke machine zeer uitgebreid zijn, met meer dan duizend verbindingen. Om je te helpen bij het oplossen van problemen, biedt ss verschillende filteropties.
Je kan socket informatie weergeven voor specifieke socket types met de volgende opties: -t
voor TCP, -u
voor UDP en -x
voor UNIX.
Bijvoorbeeld, TCP socket informatie weergeven met:
dany@pindabook:~> ss -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 36 192.168.1.53:ssh 192.168.1.24:43218
SYN-SENT 0 1 192.168.1.53:54438 48.0.89.224:53350
ESTAB 0 34 192.168.1.53:50584 218.72.58.42:51413
SYN-SENT 0 1 192.168.1.53:39606 42.2.160.63:61502
SYN-SENT 0 1 192.168.1.53:39622 42.2.160.63:61502
Je kunt de lijst ook filteren op bron- of bestemmingshostnaam of IP-adres. Hier is bijvoorbeeld een lijst van tot stand gebrachte verbindingen voor het IP-adres met de bestemming 192.168.1.24:
dany@pindabook:~> ss dst 192.168.1.24
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp ESTAB 0 36 192.168.1.53:ssh 192.168.1.24:43218
Deze opdrachten zijn nuttig om netwerkconnectiviteit in het algemeen of tussen specifieke hosts in het netwerk op te sporen.
Een andere praktische toepassing van ss is om te controleren of netwerkdiensten luisteren op de lokale machine met het juiste adres en de juiste poort.
Om te controleren of er sockets luisteren, gebruikt je de optie -l
:
dany@pindabook:~> ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
nl UNCONN 0 0 rtnl:NetworkManager/5582 *
nl UNCONN 0 0 rtnl:avahi-daemon/778 *
nl UNCONN 0 0 rtnl:nscd/801 *
nl UNCONN 0 0 rtnl:agetty/1772 *
nl UNCONN 0 0 rtnl:wpa_supplicant/1386 *
...
tcp LISTEN 0 4096 *:6881 *:*
tcp LISTEN 0 4096 *:http *:*
tcp LISTEN 0 128 [::]:ssh [::]:*
tcp LISTEN 0 5 [::1]:ipp [::]:*
tcp LISTEN 0 100 [::1]:smtp [::]:*
Je kunt dezelfde filteropties gebruiken als hierboven beschreven om specifieke socket-types te filteren. Om bijvoorbeeld alle luisterende TCP sockets op te sommen:
dany@pindabook:~> ss -lt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 80 127.0.0.1:mysql 0.0.0.0:*
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 5 127.0.0.1:ipp 0.0.0.0:*
LISTEN 0 100 127.0.0.1:smtp 0.0.0.0:*
LISTEN 0 4096 *:6881 *:*
LISTEN 0 4096 *:http *:*
LISTEN 0 128 [::]:ssh [::]:*
LISTEN 0 5 [::1]:ipp [::]:*
LISTEN 0 100 [::1]:smtp [::]:*
In plaats van de naam van de dienst weer te geven, zoals ssh of mysql, kan ss poortnummers weergeven door de -n optie te gebruiken:
dany@pindabook:~> ss -ltn
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 80 127.0.0.1:3306 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 5 127.0.0.1:631 0.0.0.0:*
LISTEN 0 100 127.0.0.1:25 0.0.0.0:*
LISTEN 0 4096 *:6881 *:*
LISTEN 0 4096 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 5 [::1]:631 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
Ten slotte is een andere nuttige optie -p
om procesgerelateerde informatie weer te geven, zoals gebruikersnaam en proces ID (PID).
Sommige diensten kunnen verhoogde rechten vereisen via sudo
of als root om procesinformatie te tonen:
dany@pindabook:~> sudo ss -tnlp
[sudo] wachtwoord voor root:
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 80 127.0.0.1:3306 0.0.0.0:* users:(("mysqld",pid=1226,fd=20))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1183,fd=3))
LISTEN 0 5 127.0.0.1:631 0.0.0.0:* users:(("cupsd",pid=779,fd=7))
LISTEN 0 100 127.0.0.1:25 0.0.0.0:* users:(("master",pid=2220,fd=13))
LISTEN 0 4096 *:6881 *:* users:(("kioslave5",pid=7910,fd=24),("kioslave5",pid=7906,fd=24),("kioslave5",pid=7902,fd=24),("kioslave5",pid=7899,fd=24),("kioslave5",pid=7895,fd=24),("kioslave5",pid=7890,fd=24),("kioslave5",pid=7887,fd=24),("kioslave5",pid=7884,fd=24),("kioslave5",pid=7881,fd=24),("kioslave5",pid=7741,fd=24),("kioslave5",pid=7737,fd=24),("kioslave5",pid=7730,fd=24),("kioslave5",pid=7525,fd=24),("kio_http_cache_",pid=4100,fd=24),("kioslave5",pid=4073,fd=24),("ktorrent",pid=3997,fd=24))
LISTEN 0 4096 *:80 *:* users:(("httpd-prefork",pid=1578,fd=4),("httpd-prefork",pid=1576,fd=4),("httpd-prefork",pid=1573,fd=4),("httpd-prefork",pid=1572,fd=4),("httpd-prefork",pid=1570,fd=4),("httpd-prefork",pid=1193,fd=4))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1183,fd=4))
LISTEN 0 5 [::1]:631 [::]:* users:(("cupsd",pid=779,fd=6))
LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=2220,fd=14))
ss
is een essentiële opdracht in de gereedschapskist van de netwerkbeheerder voor het opsporen van problemen.
De tracepath opdracht is een hulpmiddel dat het netwerk connectiviteitspad tussen de lokale computer en een extern apparaat weergeeft, met identificatie van alle routers die gebruikt worden om het verkeer tussen hen te routeren.
In het geval dat je geen verbinding kunt maken met een netwerkdienst op een ander apparaat, helpt tracepath je te bepalen waar het probleem zit.
tracepath
is een vervanger voor traceroute en biedt vergelijkbare functionaliteit.
Het belangrijkste verschil is dat tracepath willekeurige UDP poorten gebruikt in plaats van het ICMP protocol voor het traceren, waardoor het geen verhoogde privileges nodig heeft om te draaien.
Voor het basisgebruik geef je de hostnaam of het IP-adres van de bestemming op. Je kunt ook de optie -n opgeven om IP-adressen voor de routers weer te geven in plaats van hun namen:
dany@pindabook:~> tracepath -n main.lan
1?: [LOCALHOST] pmtu 1500
1: 192.168.1.24 2.877ms !H
1: 192.168.1.24 2.920ms !H
Resume: pmtu 1500
Als tracepath geen verbinding kan maken met een netwerk hop, geeft het no reply
.
Standaard is het maximum aantal hops dat het probeert 30, wat meestal genoeg is.
Je kunt dat veranderen met de optie -m
.
Stel dat het geen antwoorden ontvangt na een bepaalde hop.
Dat is een goede indicator voor de volgende stap in het opsporen van de fout.
tracepath
informatie is niet definitief, omdat het verkeer om verschillende redenen geblokkeerd kan zijn.
Het helpt je echter het probleem te beperken en je te richten op het oplossen ervan.
Om veiligheidsredenen blokkeren veel routers op het Internet netwerkverkeer, dus tracepath is wellicht niet zo nuttig voor het traceren van connectiviteit met Internet diensten. Het is nog steeds nuttig voor het oplossen van problemen met lokale netwerken.