|
Standard-ToolsViele der gebräuchlichen Internet-Protokolle sind einfache Wechselgespräche,die man fast schon mit Shell-Skripten implementieren kann. Dieser Teil beschreibt einige kleine Tools, die man zum Zuschauen und Mitmachen braucht, und zeigt,wie einfach FTP, HTTP und andere Protokolle tatsächlich aufgebaut sind.pingOb man ein anderes System erreichen kann, untersucht man in der Regel mitping. Das Programm ping erzeugt ICMP-Echo-Request-Pakete, die mit ICMP-Echo-Response-Paketen beantwortet werden, wenn sie das angegebene System erreichen. $ ping www.e-technik.fh-muenchen.dePING www.e-technik.fh-muenchen.de (129.187.206.140): 56 data bytes64 bytes from 129.187.206.140: icmp_seq=0 ttl=242 time=48.9 ms64 bytes from 129.187.206.140: icmp_seq=1 ttl=242 time=41.9 ms64 bytes from 129.187.206.140: icmp_seq=2 ttl=242 time=41.3 ms64 bytes from 129.187.206.140: icmp_seq=3 ttl=242 time=39.9 ms64 bytes from 129.187.206.140: icmp_seq=4 ttl=242 time=44.9 ms64 bytes from 129.187.206.140: icmp_seq=5 ttl=242 time=42.9 ms64 bytes from 129.187.206.140: icmp_seq=6 ttl=242 time=45.4 ms64 bytes from 129.187.206.140: icmp_seq=7 ttl=242 time=40.5 ms64 bytes from 129.187.206.140: icmp_seq=8 ttl=242 time=41.4 ms64 bytes from 129.187.206.140: icmp_seq=9 ttl=242 time=42.3 ms--- www.e-technik.fh-muenchen.de ping statistics ---10 packets transmitted, 10 packets received, 0% packet loss
round-trip min/avg/max = 39.9/42.9/48.9 ms
arp
Das "Address Resolution Protocol" dient der Zuordnung von Internet-Adressen zu
Ethernet-Adressen. Zu diesern Zwecke existiert eine Adreßumwandlungstabelle
(adress-translation table), die normalerweise vom ARP selbständig aktualisiert
wird. Mit der Option "-a" wird der aktuelle Inhalt der Tabelle ausgegeben, z.B.:
$ arp -a
Net to Media Table
Device IP Address ------- Mask Flags Phys Addr
------ --------------------------- --------------- ----- -----------------
le0 brokrz.lrz-muenchen.de 255.255.255.255 00:00:a2:0f:76:97
le0 infoserv.rz.fh-muenchen.de 255.255.255.255 00:e0:29:06:18:d3
le0 flynt.rz.fh-muenchen.de 255.255.255.255 00:e0:29:08:49:f1
le0 kobra.rz.fh-muenchen.de 255.255.255.255 00:08:c7:a9:6c:cc
le0 netmon.rz.fh-muenchen.de 255.255.255.255 00:e0:29:0e:83:92
le0 linux4.rz.fh-muenchen.de 255.255.255.255 00:00:c0:93:19:d3
le0 linux5.rz.fh-muenchen.de 255.255.255.255 00:00:c0:37:19:d3
le0 door2.rz.fh-muenchen.de 255.255.255.255 00:00:c0:3f:fb:a7
le0 wapserv 255.255.255.255 SP 08:00:20:23:02:88
le0 sun10.rz.fh-muenchen.de 255.255.255.255 08:00:20:86:ce:5e
le0 kiosk1.rz.fh-muenchen.de 255.255.255.255 00:00:c0:60:af:d7
le0 satellit.rz.fh-muenchen.de 255.255.255.255 08:00:20:71:77:b4
le0 kaputt.rz.fh-muenchen.de 255.255.255.255 00:50:56:82:f0:f0
Mit Hilfe der Option "-d" können Einträge aus dieser Tabelle gelöscht werden.
Die Einträge sind jedoch nicht nicht permanent, sondem nach einer gewissen Zeit verschwinden
sie wieder. Daher ist es meistens nicht notwendig einen Eintrag manuell zu entfernen.
netstat
Mit Hilfe des Programms netstat können Status-Information über TCP/IP ausgegeben
werden. Bei der Fehlersuche kann sich dieses Programm ebenfalls als durchaus
nützlich erweisen. So wird mit der Option "-i" eine Statistik über die Benutzung der
Schnittstellen ausgegeben. Die Statistik zeigt die Namen der installierten Schnittstellen,
die "Maximal transmission unit" als die maximale Paketgröße des Netzwerks, das Netzwerk,
zu dem die Schnittstelle führt und die Adresse der Schnittstelle.
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags
lo 3584 0 220 0 0 0 220 0 0 0 BLRU
eth0 1500 0 0 0 0 0 0 0 0 0 BRU
Möchte man die Angaben numerisch, so verwendet man netstat -in. Von besonderem
Interesse sind die letzten fünf Spalten. Hier werden die Anzahl von empfangenen und
gesendeten Paketen, die Anzahl der dabei auftretenden Fehler, sowie die Anzahl der
Kollisionen ausgegeben, in die das System verwickelt waren. Sind die Zahlen
lpkts und Opkts gleich Null oder ist Opkts gleich Oerrs, so liegt ein
mehr oder weniger gravierendes Hardware-Problem vor. Die Anzahl der
Kollisionen sollte bei jedem System im Netz unter 5% von Opkts liegen. In die
sem Fall arbeiten die Netzwerkschnittstellen effizient. Eine weitere interessante
Option des netstat-Kommandos ist die Möglichkeit, sich die aktuellen Verbindungen
und aktiven Server mittels der Option "-a" anzeigen zu lassen. Bei diesem Aufruf
werden zunächst die zur Zeit benutzten Verbindungen ausgegeben. Dies ist dadurch
gekennzeichnet, daß in der Spalte (state) der Zustand ESTABLISHED anaeaeben wird. An
.schließend werden alle aktiven Server Prozesse ance-eben, d.h. alle Server, die
zur Zeit erreichbar sind. Ein Auszug aus der Ausgabe von netstat -a könnte
beispielsweise so aussehen:
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (State) User
tcp 0 0 *:netbios-ssn *:* LISTEN root
tcp 0 0 *:nntp *:* LISTEN root
tcp 0 0 *:auth *:* LISTEN root
tcp 0 0 *:sunrpc *:* LISTEN root
tcp 0 0 *:pop3 *:* LISTEN root
tcp 0 0 *:www *:* LISTEN root
tcp 0 0 *:finger *:* LISTEN root
tcp 0 0 *:midinet *:* LISTEN root
tcp 0 0 *:http-rman *:* LISTEN root
tcp 0 0 *:btx *:* LISTEN root
tcp 0 0 *:smtp *:* LISTEN root
tcp 0 0 *:telnet *:* LISTEN root
tcp 0 0 *:ftp *:* LISTEN root
tcp 0 0 *:netstat *:* LISTEN root
tcp 0 0 *:systat *:* LISTEN root
tcp 0 0 *:printer *:* LISTEN root
tcp 0 0 *:shell *:* LISTEN root
tcp 0 0 *:login *:* LISTEN root
tcp 0 0 *:exec *:* LISTEN root
udp 0 0 *:rplay *:*
udp 0 0 *:netbios-ns *:*
udp 0 0 *:sunrpc *:*
udp 0 0 *:ntalk *:*
udp 0 0 *:talk *:*
udp 0 0 *:syslog *:*
raw 0 0 *:1 *:*
Active UNIX domain sockets
Proto RefCnt Flags Type State Inode Path
unix 1 [ ACC ] SOCK_STREAM LISTENING 417 /dev/log
unix 2 [ ] SOCK_STREAM CONNECTED 440
unix 2 [ ] SOCK_STREAM UNCONNECTED 441 /dev/log
unix 2 [ ] SOCK_STREAM CONNECTED 499
unix 2 [ ] SOCK_STREAM UNCONNECTED 500 /dev/log
unix 2 [ ] SOCK_STREAM CONNECTED 517
unix 2 [ ] SOCK_STREAM UNCONNECTED 518 /dev/log
Die erste Spalte enthält das Transportprotokoll. Die zweite und dritte Spalte sagen
etwas über die Anzahl der Bytes in der Empfangs- bzw. Sende-Warteschlange aus. Die
nächsten beiden Spalten geben lokale und ferne Adressen einer Verbindung an. Diese
Adressen bestehen aus der Internet-Adresse und der Portnummer der Kommunikationspartner.
Ist der Rechner in der /etc/hosts bzw. der Dienst in der /etc/services eingetragen, so
werden statt der Adressen Rechnername bzw. der Name des Services aus gegeben. Dies
läßt sich durch den Aufruf von netstat -in verhindern. Handelt es sich
4611 um einen Eintrag für einen aktiven Server, so wird die lokale Adresse in der Form
"*.<portnummer>" und ferne Adressen in der Form "*.*" angegeben. Diese Art der
Ausgabe zeigt an, daß der entsprechende Dienst bereit ist. Bei TCP-Diensten zeigt
zusätzlich die letzte Spalte an, daß der Server auf LISTEN aesetzt ist. Kommt
für einen speziellen Dienst keine Verbindung zustande, obwohl andere Programme
(z.B. ping) funktionieren. so kann man mittels netstat -a auf dem
Zielsystem überprüfen, ob der Server dort aktiv ist. Nur dann kann eine entsprechende Verbindung überhaupt aufgebaut werden.
traceroute
Um festzustellen, welchen Weg die Datenpakete zu einem fernen Rechner
nehmen und wie "gut" die Verbindung dorthin ist, kann man 'traceroute'
einsetzen. Das Programm schickt UDP-Pakete mit unterschiedlicher "Lebensdauer"
an einen unbenutzten Port und wertet so die Fehlermeldungen der einzelnen
Router und Gateways aus. Dem Kommando wird wie bei Ping nur der Rechnername
oder eine IP-Nummer als Parameter übergeben. Für jeden Gateway wird
dann auf dem Bildschirm eine Zeile ausgegeben:
Zähler Gateway-Name Gateway-IP-Nummer "round-trip"-Zeit (3 Werte)
Traceroute sendet jeweils drei Datenpakete. Wenn auf ein Paket keine
Antwort erfolgt, wird ein Sternchen (*) ausgegeben. Ist ein Gateway
nicht erreichbar, wird statt einer Zeitangabe '!N' (network unreachable)
oder '!H' (host unreachable) ausgegeben. Man kann so feststellen, wo
eine Verbindung unterbrochen ist, und auch, welchen Weg die Daten nehmen
- wo also der Zielrechner in etwa steht. Bei grafischen Benutzerschnittstellen
erfolgt die Parameterangabe über Dialogfelder und nicht in der Kommandozeile.
$ traceroute www.linux.org
traceroute to www.linux.org (198.182.196.56), 30 hops max, 40 byte packets
1 space-gw2m (194.97.64.8) 2.758 ms 3.637 ms 2.491 ms
2 Cisco-M-IV.Space.Net (195.30.0.123) 6.413 ms 4.118 ms 4.107 ms
3 Cisco-M-Fe0-0.Space.Net (195.30.0.126) 4.826 ms 4.508 ms 5.53 ms
4 Cisco-ECRC-H1-0.Space.Net (193.149.44.2) 5.977 ms 6.273 ms 20.832 ms
5 munich-ebs2-s0-0-0.ebone.net (192.121.158.189) 14.415 ms 17.018 ms 8.575 ms
6 newyork-ebs1-s5-0-0.ebone.net (195.158.224.21) 137.35 ms 139.103 ms 138.14 ms
7 serial0-0-1.br1.nyc4.ALTER.NET (137.39.23.81) 137.132 ms 141.742 ms 141.207 ms
8 134.ATM2-0.XR1.NYC4.ALTER.NET (146.188.177.178) 135.375 ms 128.12 ms 165.913 ms
9 189.ATM3-0.TR1.EWR1.ALTER.NET (146.188.179.54) 141.83 ms 144.798 ms 362.469 ms
10 105.ATM4-0.TR1.DCA1.ALTER.NET (146.188.136.185) 145.321 ms 147.889 ms 152.43 ms
11 299.ATM6-0.XR1.TCO1.ALTER.NET (146.188.161.169) 354.577 ms 133.535 ms 348.647 ms
12 193.ATM8-0-0.GW2.TCO1.ALTER.NET (146.188.160.49) 152.444 ms 369.313 ms 150.106 ms
13 uu-peer.oc12-core.ai.net (205.134.160.2) 365.008 ms 509.81 ms 144.898 ms
14 border-ai.invlogic.com (205.134.175.254) 270.065 ms 341.586 ms 153.441 ms
15 router.invlogic.com (198.182.196.1) 356.496 ms 506.371 ms 532.983 ms
16 www.linux.org (198.182.196.56) 584.957 ms 300.612 ms 380.004 ms
Netcat
Netcat ist das "Schweizer Taschenmesser" für Netzwerker. Es handelt sich um
ein einfaches Werkzeug, das Daten von einer Netzverbindung liest und auf die
Standardausgabe ausgibt oder Daten von der Standardeingabe auf eine Netzverbindung
schreibt. Es ist also ein "Back-End"-Tool für andere Software. Das Programm
hat folgende Optionen:
- -g gateway: Source-Routing hop points (bis zu 8)
- -G num: Source-Routing-Pointer: 4, 8, 12, ...
- -h: Hilfe
- -i secs: Delay-Intervall für gesendete Zeilen und gescannte Ports
- -l: "Listen"-Modus
- -n: Nur numerische IP-Adressen (kein DNS)
- -o file: Hexdump des Netzverkehrs
- -p port: lokale Portnummer (Einzelport oder Bereich (lo-hi))
- -q secs: Wartezeit bis zum Programmende nach einen EOF
- -b: UDP-Broadcasts erlauben
- -r: Zufällige lokale und ferne Ports
- -s addr: lokale Quelladresse
- -t: Telnet-Negotiation freigeben
- -u: UDP-Modus
- -v: Geschwätzig (-vv, wenn das immer noch nicht reicht)
- -w secs: Timeout für Verbindungsende
- -z: Zero-I/O-Mode (für Scanning)
Wget
Wget ist ein Download-Tool, das gleichermaß:en mit WWW- wie FTP-Servern umgehen
kann und dank zahlreicher Optionen genau die Dateien holt, die Sie brauchen.
Zugleich ist es aber auch ein nützliches Kommandozeilentool für
den Servermanager, um den Zugriff zu testen.
Auf HTTP und FTP aufsetzend kann man beispielsweise ganze Archive oder Homepages
spiegeln. Auch mit einer schlechten Anbindung ans Internet
eignet sich das Programm hervorragend zum Download im Hintergrund: Nicht
nur ein "Anknüpfen" an eine abgebrochene Übertragung, sondern auch ein
Update ist möglich -- Wget kann aufgrund von Timestamps erkennen, ob es
eine aktuelle Version einer Datei schon heruntergeladen hat. Zu finden ist es unter
http://www.gnu.org/software/wget/wget.html.
Der Standardaufruf von Wget ist wget [options] URL.
Wget ist ein GNU-Tool, d. h. alle Parameter haben eine
lange (wget --version) und eine kurze Form (wget -V). Mit
wget -h (oder --help) bekommen Sie eine ausführliche
Kommandoübersicht. Ein erstes Beispiel:
wget https://www.netzmafia.de/
--16:15:16-- https://www.netzmafia.de:80/
=> `index.html'
Connecting to www.netzmafia.de:80... connected!
HTTP request sent, awaiting response... 200 OK
Length: 8,208 [text/html]
0K -> ........ [100%]
12:15:18 (9.01 KB/s) - `index.html' saved [8208/8208]
Auf den lokalen Computer wird die Datei index.html heruntergeladen.
Bilder und Unterverzeichnisse sind nicht mit eingeschlossen. Möchten Sie eine
Stufe tiefer gehen, probieren Sie die Option -r (für
--recursive). Jetzt folgt Wget den Links und der
Verzeichnisstruktur der zu spiegelnden Seiten. Wichtig ist in diesem
Zusammenhang der Parameter -l num (--level=num), bei dem
num die Anzahl der Level festlegt.
Ein Aufruf der Form wget -r --level=1 https://www.netzmafia.de/
bewirkt etwa, daß die Unterverzeichnisse der ersten Ebene einbezogen werden.
Es wird dabei ein Verzeichnis www.netzmafia.de angelegt, in dem die
geladenen Unterverzeichnisse eingerichtet werden.
Als Standard-Level für die Rekursion ist 5 vorgegeben.
Ist ein Download unterbrochen worden, kann mit Hilfe des Parameters
-c (--continue) der Ladevorgang wieder aufgenommen werden.
Um bestimmte Seiten in regelmäß:igen Abständen immer wieder zu sichern, gibt es
die Option -N (--timestamping):
Es wird bei jeder Datei der Zeitstempel mit dem der lokalen Datei verglichen und
nur geladen, wenn die ferne Datei neuer ist als die lokale.
Mit dem Aufruf wget -nd (--no-directories) wird die
Verzeichnisstruktur der fernen Site nicht übernommen. Vorsicht ist hier
jedoch geboten bei Dateien mit gleichen Namen: sie werden einfach
überschrieben. Umgekehrt wird mit der Option -x
(--force-directories) die Verzeichnisstruktur der fernen Site auf jeden
Fall komplett übernommen. Die Option -nH (--no-host-directories)
übernimmt die Verzeichnisstruktur vom Server, aber der Hostname wird nicht
mit berücksichtigt, es wird ins aktuelle Verzeichnis gespiegelt.
Wildcards sind unter Wget nicht möglich. Die Option -A "liste"
(--accept) schafft Abhilfe. In der "liste" definieren Sie die
zu ladenden Dateitypen, zum Beispiel:
wget -r -l1 -A jpg,gif,png https://www.netzmafia.de
Danach finden sich im Verzeichnis nur noch diese Bilddateien und eine Datei
index.html, die Wget braucht, um die Bilder zu finden. Hinter den
Kulissen saugt Wget eigentlich alle Dateien, entfernt dann aber nicht benötigte.
...
13:03:19 (8.73 KB/s) - `bla.html' saved [8584/8584]
Removing bla.html since it should be rejected.
...
Mit -R liste (--reject) können Sie Dateierweiterungen
ausschließ:en. Der Aufruf wget -r -l1 -R doc,avi,mpg,mp3 https://www.netzmafia.de würde die angegebenen Dateitypen aussparen. Ein Download-Limit können Sie darüber
hinaus mit dem Parameter -Q (--quota) setzen. Die Begrenzung
bezieht sich auf die Gesamtmenge der Daten und wird standardmäß:ig in Bytes
angegeben. Eine Begrenzung in Kilobytes oder Megabytes ist auch
möglich - dazu wird k oder m an die Zahl angehängt.
Fast alle Parameter, die Sie wget beim Start mitgegeben haben,
können Sie in eine Konfigurationsdatei mit dem Namen .wgetrc
im Heimatverzeichnis eintragen. Zum Beispiel:
tries = 20
reclevel = 8
timestamping = on
dirstruct = on
|
|
|