194.95.108.29 255.255.255.0 0xffffff00
+--------------------+--------------------+
IPv4: | n netbits | 32-n hostbits |
+--------------------+--------------------+
+--------------------+--------------------+
IPv6: | n netbits | 128-n hostbits |
+--------------------+--------------------+
Netmask: 11111111111111111111 00000000000000000000
Mit Hilfe der Netzmaske kann aus einer IP-Adresse sehr schnell ermittelt werden, in welchem Netz diese Adresse liegt, wie die zugehörigen Netzwerk- und Broadcast-Adressen sind, und ob eine zweite IP-Nummer ggf. im selben Netz liegt. All dies ist mit einfachen UND- und ODER-Verknüpfungen möglich, siehe Quellcode von IP-Calc.
| MSB | Klasse | #Hostbits | Adressbereich | #Mögliche Rechner |
|---|---|---|---|---|
| 0 | A | 24 | 1.0.0.0-127.0.0.0 | 16 Mio |
| 10 | B | 16 | 128.0.0.0-191.255.0.0 | 65.534 |
| 110 | C | 8 | 192.0.0.0-223.255.255.0 | 256 |
| 1110 | D | - | 224.0.0.0-255.255.255.255 | Special |
CIDR (Classless Inter Domain Routing) Schreibweise: a.b.c.d/anzahl netbits. Hier nicht weiter behandelt.
Diese Netze sind per Definition (lt. RFC 1918) intern und werden nicht in andere Netze geroutet.
Beispiel: Das Class B Netzwerk (65534 mögliche Rechner, Netzmaske bei Class B: 255.255.0.0) soll in 256 Subnetze zerlegt werden. Für diese braucht man 8 Netzwerk-Bits, um die die Netzmaske erweitert wird: 255.255.255.0. In jedem Subnetz können dann nur noch 254 Rechner betrieben werden. Die Vergabe welcher Rechner in welchem Subnetz ist geschieht üblicherweise aufgrund der Netzwerk-Infrastruktur, kann aber auch organisatorisch geschehen (oft einhergehend mit einer getrennten Infrastruktur).
...
|
188.1.230.101
ftp cisco
132.199.1.202 132.199.1.8
Subnet 132.199.1.0 \ | |
Broadcast 132.199.1.255 >-------+--+---------------+------------
Netmask 255.255.255.0 / |
132.199.1.33
rzi
132.199.15.1
| / Subnet 132.199.15.0
----+------------------+-------+---------< Broadcast 132.199.15.255
| | \ Netmask 255.255.255.0
132.199.15.100 132.199.15.99
dawn dusk
Hosts im Subnetz 132.199.15.0 können untereinander
unter Zuhilfenahme des ARP-Protokolls kommunizieren.
Mit Hilfe der Netzmaske wird geprüft, ob ein Host im selben
Subnetz liegt. Falls dies nicht der Fall ist, so wird das
Paket an einen Rechner weitergeleitet, der (hoffentlich)
weiss, wie er den Zielrechner erreicht. Dieser
Vermittlungsrechner wird als Router bezeichnet, er
ist physikalisch an mehrere Netze angeschlossen, jedes
Netzwerk-Interface hat eine IP-Nummer (und die zugehörige
Netzmaske) aus dem jeweiligen Netz. Mit Hilfe dieser Angaben
ist es einem Router möglich, Pakete passend
weiterzuleiten.
Am Netzwerk angeschlossene Rechner die ein Paket an einen Rechner ausserhalb des lokalen Subnetzes senden wollen ermitteln einen passenden Router, der die Daten in das Ziel-Netz weiterleiten kann. Bewerkstelligt wird dieser Auswahlprozess mit Hilfe der sog. Routing-Tabelle. Dabei handelt es sich um eine einfache Tabelle in der verzeichnet wird welches Netz (festgelegt durch die Netzwerk-Adresse und die dazugehörige Subnetzmaske) über welchen Router (festgelegt über dessen IP-Adresse im lokalen Netz) erreichbar ist.
Findet ein Rechner (Router) keine passende Route für ein Paket, so ist üblicherweise noch eine Defaultroute (Netzwerk-Adresse: 0.0.0.0) eingetragen, die auf einen Router verweist, der sich des Pakets annehmen soll.
Beispiel: Im o.g. Netz will der Rechner mit der IP-Nummer 132.99.15.99 den Rechner 132.199.1.202 erreichen. Mit Hilfe der Subnetzmaske stellt er zuerst fest, dass der Rechner nicht im gleichen Subnetz ist. Er sucht dann in seiner Routing-Tabelle nach einem passenden Router, in diesem Fall 132.199.15.1, und sendet das Paket an diesen. Der Rechner 132.199.15.1 empfängt das Paket, stellt anhand der Zieladresse fest dass das Ziel im lokalen Subnetz 132.199.1.0 liegt, und sendet es direkt an den angegebenen Zielrechner.
Verbindungsorientierte Dienste sind mit Hilfe des Transmission Control Protocolls (TCP) implementiert, Verbindungslose Dienste benutzen das User Datagram Protocol (UDP). Unabhängig davon welches der beiden Protokolle für einen Dienst verwendet wird wird dieser über einen eindeutigen Port adressiert, einem Dienst ist üblicherweise ein fester Port zugewiesen. Die Zuweisung erfolgt von der IANA (Internet Assigned Number Authority), sie sind u.a. in RFC 1340 festgelegt. Auf Unix-Systemen ist die Zuweisung welcher Port für welchen Dienst bestimmt ist üblicherweise in der Datei /etc/services zu finden. Beispiele:
$ more /etc/services chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp # default ftp data port ftp 21/tcp # File Transfer Protocol ssh 22/tcp # Secure Shell ssh 22/udp telnet 23/tcp # 24 - private smtp 25/tcp mail # 26 - unassigned time 37/tcp timserver time 37/udp timserver
Üblicherweise existiert für jeden Dienst ein eigener Server-Prozess (Dämon), der auf Anfragen auf dem jeweiligen Port wartet und diese dann beantwortet. Auf den meisten Unix-Systemen existiert noch ein Dämon "inetd", der auf mehreren Ports gleichzeitig lauscht und erst bei eingehenden Anfragen den jeweiligen Server-Dämon gemäß einer Konfiguratioinsdatei startet. Diese Optimierung spart Rechenzeit und v.a. Arbeitsspeicher, da so Dämonen nicht ungenutzt im System gehalten werden müssen. Die Konfiguration des inetd die festlegt, für welche Dienste er lauschen soll geschieht in der Datei /etc/inetd.conf. Beispiel:
$ more /etc/inetd.conf # Dienst Verbindungsart Pfad zum Daemon argv ftp stream tcp nowait root /usr/libexec/ftpd ftpd -ll telnet stream tcp nowait root /usr/libexec/telnetd telnetd shell stream tcp nowait root /usr/libexec/rshd rshd -L comsat dgram udp wait root /usr/libexec/comsat comsat ntalk dgram udp wait nobody.tty /usr/libexec/ntalkd ntalkd
Um einen via inetd gestarteten Dienst nicht mehr anzubieten ist lediglich der Eintrag aus der Datei /etc/inetd.conf zu entfernen (besser: auszukommentieren!) und der inetd neu zu starten. (Falsch: Firewalling)
Erwähnt werden soll hier auch noch, dass Ports Zahlen zwischen 1 und 65535 sind, und daß Dienste unterhalb Port 1000 nur vom Systemverwalter (root, UID 0) gestartet werden können. Diese Einschränkung besteht, damit nicht "normale" Benutzer (z.B.) ihren eigenen telnet-Daemon starten und damit die Systemsicherheit umgehen können (Stichwort: trojanisches Pferd).
Die tcp-basierenden Dienste sind üblicherweise Dialogorientiert, das zugehörige Protokoll ist in zugehörigen RFCs festgelegt. Ein austesten tcp-basierter Dienste ist mit Hilfe des telnet-Programms sehr einfach möglich, Beispiel (Benutzereingabe fett):
noon% telnet miyu www Trying 10.0.0.3... Connected to miyu.feyrer.net. Escape character is '^]'. GET / HTTP/1.0 HTTP/1.1 200 OK Date: Sun, 05 Dec 1999 03:11:24 GMT Server: Apache/1.3.6 (Unix) PHP/3.0.7 Connection: close Content-Type: text/html <HTML> <HEAD> <TITLE>Miyu's Home</TITLE> ... </BODY> </HTML> Connection closed by foreign host.
Ähnlich wie hier für HTTP gezeigt können auch finger, SMTP, IRC, POP, NNTP etc. mit telnet(1) manuell gesprochen werden. Dienste die binäre Daten austauschen (FTP, IMAP, ssh, ...) sind hiermit schwierig(er) zu emulieren, es empfiehlt sich, entsprechende Clients zu verwenden. ;-) Anstatt der Service-Namen (wie in /etc/services angegeben) können auch direkt Port-Nummern verwendet werden.
Diese über ICMP versandten Steuernachrichten sind für einen reibungslosen Betrieb nötig, v.a. um entfernten Rechnern diese Nachticht zukommen zu lassen. Als Netzwerk-Administrator sollte man sich deshalb über die Konsequenzen im Klaren sein, wenn man Firewalls aufsetzt, die ICMP-Nachrichten filtern.
| RFC | Beschreibung |
|---|---|
| IP over Ethernet | |
| IP over ATM | |
| IP over Avian Carrier | |
| 791 | IP (Version 4) |
| IP (Version 6) | |
| 793 | TCP |
| 768 | UDP |
| 792 | ICMP |
| telnet | |
| 765 | ftp |
| SMTP | |
| Nachrichtenformat für SMTP | |
| HTTP | |
| URL-Typen |
Beispiel:
smaug# grep -v ^# /etc/hosts | head ::1 localhost 127.0.0.1 localhost 194.95.108.11 smaug smaug.fh-regensburg.de 194.95.108.65 delphi delphi.fh-regensburg.de 2001:638:a01:2:2b0:d0ff:feee:7066 rfhpc8323.ipv6.fh-regensburg.de yui.ipv6.fh-regensburg.de
Beispiele:
rfhpc8317% ypcat hosts 194.95.108.82 rfhpc8082 rfhpc8082.fh-regensburg.de pcopel 194.95.108.75 pcschuster rfhpc8075 rfhpc8075.fh-regensburg.de 194.95.108.95 rfhsi8095 rfhsi8095.fh-regensburg.de ...
rfhpc8317% ypcat -k hosts.byname rfhpc8082.fh-regensburg.de 194.95.108.82 rfhpc8082 rfhpc8082.fh-regensburg.de pcopel rfhpc8075.fh-regensburg.de 194.95.108.75 pcschuster rfhpc8075 rfhpc8075.fh-regensburg.de rfhsi8095 194.95.108.95 rfhsi8095 rfhsi8095.fh-regensburg.de ...
rfhpc8317% ypcat -k hosts.byaddr 194.95.108.95 194.95.108.95 rfhsi8095 rfhsi8095.fh-regensburg.de 194.95.108.91 194.95.108.91 rfhsi8091 rfhsi8091.fh-regensburg.de 194.95.108.90 194.95.108.90 rfhsi8090 rfhsi8090.fh-regensburg.de ...
Aufbau: host.domain, domain kann dabei wie erwähnt hierarchisch organisiert sein und eine Top Level Domain (Beispiel: .de), Second Level (Beispiel: fh-regensburg.de) Third Level Domain (Beispiele: physik.uni-regensburg.de, ping.net.au) oder weiter verschachtelt sein.
Soll zu einem Hostnamen die zugehörige IP-Nummer ermittelt werden (Resolving), so wird zuerst der eigene Nameserver gefragt. Weiss dieser keine Antwort, dann frägt er bei einem von ca. 10 Root-Nameservern nach und ermittelt zuerst den zuständigen Nameserver für die zugehöriuge Toplevel-Domain. Dieser kann wiederum Auskunft über die Second-Level Domain geben, etc. ]
Beispiel: Es soll die IP-Nummer des Rechners www.sun.com erfragt werden. Unter der Annahme, dass der lokale DNS die Adresse nicht in seinem Cache hat wird er zuerst einen der Root-Nameserver fragen, welcher Nameserver für die Toplevel-Domain ".com" zuständig ist. Mit dieser Information wird unser DNS dann anschliessend den .com-Nameserver fragen, wer für sun.com zuständig ist. Ist auch diese Information bekannt, dann kann der Nameserver von sun.com gefragt werden, welche Adresse der Rechner www.sun.com hat.
nslookup -qt=any . # Root-Nameserver ermitteln nslookup -qt=any com. # Nameserver für .com ermitteln nslookup -qt=any sun.com # Nameserver für sun.com ermitteln nslookup -qt=any www.sun.com
Mit Hilfe der Datei /etc/nsswitch.conf kann eingestellt werden, welches Schema zur Namensauflösung benutzt wird und in welcher Reihenfolge.
Auflisten aller Netzwerk-Inferfaces:
solaris% ifconfig -a
lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
eri0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 194.95.108.29 netmask ffffff00 broadcast 194.95.108.255
ether 0:3:ba:0:ce:bb
lo0: flags=2000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6> mtu 8252 index 1
inet6 ::1/128
eri0: flags=2000841<UP,RUNNING,MULTICAST,IPv6> mtu 1500 index 2
ether 0:3:ba:0:ce:bb
inet6 fe80::203:baff:fe00:cebb/10
eri0:1: flags=2080841<UP,RUNNING,MULTICAST,ADDRCONF,IPv6> mtu 1500 index 2
inet6 2001:638:a01:2:203:baff:fe00:cebb/64
netbsd% ifconfig -a
ne0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
address: 00:50:ba:aa:a7:7f
media: Ethernet autoselect (10baseT)
inet6 fe80::250:baff:feaa:a77f%ne0 prefixlen 64 scopeid 0x1
rtk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
address: 00:a0:d2:a5:e9:f5
media: Ethernet 10baseT
status: active
inet 10.0.0.3 netmask 0xffffff00 broadcast 10.0.0.255
inet6 fe80::2a0:d2ff:fea5:e9f5%rtk0 prefixlen 64 scopeid 0x2
inet6 2002:5492:f7a5:2::1 prefixlen 64
lo0: flags=8009<UP,LOOPBACK,MULTICAST> mtu 33192
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
stf0: flags=1<UP> mtu 1280
inet6 2002:5492:f7a5:1::1 prefixlen 16
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
inet 84.146.247.165 -> 217.0.116.91 netmask 0xff000000
inet6 fe80::250:baff:feaa:a77f%ppp0 -> prefixlen 64 scopeid 0x5
netbsd% dmesg | grep ^rtk
rtk0 at pci0 dev 18 function 0: Realtek 8139 10/100BaseTX
rtk0: interrupting at irq 5
rtk0: Ethernet address 00:a0:d2:a5:e9:f5
linux% ifconfig -a
eth0 Link encap:Ethernet HWaddr 01:A0:F8:30:20:B6
inet addr:192.168.23.237 Bcast:192.168.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:186337329 errors:1 dropped:0 overruns:0 frame:0
TX packets:171021912 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:3872843504 (3.6 GiB) TX bytes:2879943129 (2.6 GiB)
Interrupt:10 Base address:0x6200
eth1 Link encap:Ethernet HWaddr 02:40:AA:13:2D:72
UP BROADCAST RUNNING NOARP PROMISC MULTICAST MTU:1500 Metric:1
RX packets:89213889 errors:4 dropped:0 overruns:0 frame:8
TX packets:110037120 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:1377012649 (1.2 GiB) TX bytes:1229129488 (1.1 GiB)
Interrupt:12 Base address:0x6400
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:332 errors:0 dropped:0 overruns:0 frame:0
TX packets:332 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:53130 (51.8 KiB) TX bytes:53130 (51.8 KiB)
ppp0 Link encap:Point-to-Point Protocol
inet addr:89.26.2.132 P-t-P:89.26.3.8 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:1009267 errors:0 dropped:0 overruns:0 frame:0
TX packets:1135921 errors:0 dropped:38 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:205562387 (196.0 MiB) TX bytes:203556052 (194.1 MiB)
solaris% netstat -ina
Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue
lo0 8232 127.0.0.0 127.0.0.1 9526985 0 9526985 0 0 0
eri0 1500 194.95.108.0 194.95.108.29 126763254 N/A 136465206 N/A N/A 0
...
Solaris: ifX:Y (z.B. elxl0:1), auch für IPv6 benutzt
rfhs8012# cat /etc/hostname.eri0 rfhs8012 rfhs8012# grep rfhs8012 /etc/hosts 194.95.108.29 rfhs8012 rfhs8012.fh-regensburg.de timehost loghostZu Testzwecken kann einem Interface auch mittels ifconfig manuell eine IP-Addresse zugewiesen werden:
bsd# ifconfig le0
le0: flags=8862<BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
address: 08:00:20:20:e2:54
media: Ethernet autoselect
inet6 fe80::a00:20ff:fe20:e254%le0 prefixlen 64 scopeid 0x1
bsd# ifconfig le0 10.0.0.1 netmask 0xffffff00
bsd# ifconfig le0
le0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
address: 08:00:20:20:e2:54
media: Ethernet autoselect (10baseT)
status: active
inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
inet6 fe80::a00:20ff:fe20:e254%le0 prefixlen 64 scopeid 0x1
bsd# ping 10.0.0.2
PING testmachine (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: icmp_seq=0 ttl=64 time=3.063 ms
...
# cat /etc/defaultrouter 10.0.0.250Manuelles konfigurieren Eintraegen der Routing-Tabelle mit Hilfe des route(8) Befehls:
# route add default 10.0.0.250
netbsd# grep -v ^# /etc/rc.conf
if [ -r /etc/defaults/rc.conf ]; then
. /etc/defaults/rc.conf
fi
rc_configured=YES
wscons=YES
domainname="im-unix"
savecore=no
dhclient=yes
dhclient_flags="ex0"
ip6mode=autohost
rtsol=yes
rtsol_flags="ex0"
rpcbind=yes
sshd=yes
...
rfhinf032% cat /etc/sysconfig/network/ifcfg-eth0 BOOTPROTO='dhcp' MTU='' REMOTE_IPADDR='' STARTMODE='onboot' UNIQUE='7EWs.m884HDoOoE9' WIRELESS='no'
?
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
# The first network card - this entry was created during the Debian
installation
# (network, broadcast and gateway are optional)
#auto eth0
iface eth0 inet dhcp
# auto eth1
# iface eth1 inet static
# address 172.18.255.135
# netmask 255.255.252.0
# network 172.18.252.0
# broadcast 172.18.255.255
# gateway 172.18.255.254
iface ath0 inet dhcp
# pre-up /sbin/iwpriv ath0 mode 2
wireless_essid xxxxxxxxxxxxxx
wireless_mode managed
wireless_key s:xxxxxxxxxxxxx
wireless_nick xxxxxxx
wireless_txpower auto
# $Header: /usrdata/bedienst/f/feh39068/work/CVSROOT/Artikel/SA/de/08-networking.html,v 1.43 2008/02/12 15:58:57 feyrer Exp $ # Global config file for net.* rc-scripts # This is basically the ifconfig argument without the ifconfig $iface # iface_eth0="xxx.xxx.xxx.xxx broadcast xxx.xxx.xxx.xxx netmask 255.255.252.0" gateway="eth0/xxx.xxx.xxx.xxx" #iface_eth1="207.170.82.202 broadcast 207.0.255.255 netmask 255.255.0.0" # For DHCP set iface_eth? to "dhcp" # For passing options to dhcpcd use dhcpcd_eth? # #iface_eth0="dhcp" #dhcpcd_eth0="..."
solaris% grep hosts: /etc/nsswitch.conf hosts: files nis dns
Andere Systeme haben ggf. andere Dateinamen und Einstellungen an dieser Stelle, traditionell bieten Unix-Systeme keine Möglichkeit, die Suchreihenfolge explizit festzulegen.
rfhpc8317% cat /etc/hosts # # Internet host table # 127.0.0.1 localhost 194.95.108.179 zeus zeus.fh-regensburg.de 194.95.108.65 rfhpc8317 # Added by DHCPDie eigene IP-Adresse(n) mit dem zugehoerigen Hostnamen sowie die Aurloesung von "localhost" in 127.0.0.1 muss auf jeden Fall in /etc/hosts stehen, da ansonsten Probleme beim Starten des Systems auftreten.
Beispiel:
$ cat /etc/resolv.conf domain fh-regensburg.de search ipv6.fh-regensburg.de fh-regensburg.de uni-regensburg.de nameserver 194.95.104.1 nameserver 132.199.1.1Die Datei /etc/resolv.conf wird bei jeder Namensauflösung neu gelesen, ein Neustart der Anwendung oder gar des Systems nach einer Änderung ist nicht nötig.
rfhpc8317% telnet tabaluga Trying 194.95.108.32... Connected to rfhpc8320.fh-regensburg.de. Escape character is '^]'. SunOS 5.8 login: feyrer Password: ***** =========================================================================== Dateien unter /usr/tmp die aelter als 14 Tage sind werden GELOESCHT! Dateien unter /tmp die aelter als 3 Tage sind werden GELOESCHT! *** /tmp bitte NICHT als Datengrab (und MP3-Archiv) missbrauchen, da *** dies unnoetig virtuellen Speicher belegt und der Rechner dadurch *** unbenutzbar wird! =========================================================================== You have new mail. ############################### Das ist NEU ############################ ################## Die Dateien befinden sich in ~news ################## ################# Aendern des Passworts mit "yppasswd" ################# You Have Mail. rfhpc8320% date Wed Jun 12 16:52:04 MEST 2002 rfhpc8320%
rfhpc8317% ftp tabaluga Connected to rfhpc8320.fh-regensburg.de. 220 rfhpc8320 FTP server (SunOS 5.8) ready. Name (tabaluga:feyrer): feyrer 331 Password required for feyrer. Password: ***** 230 User feyrer logged in. Remote system type is UNIX. Using binary mode to transfer files. ftp> dir 227 Entering Passive Mode (194,95,108,32,134,123) 150 ASCII data connection for /bin/ls (194.95.108.65,40185) (0 bytes). total 180 drwxr-xr-x 10 feyrer bedienst 1536 May 13 05:46 . drwxr-xr-x 41 root other 1024 Apr 19 11:36 .. -rw-r--r-- 1 feyrer bedienst 3665 Nov 23 1999 .Xdefaults lrwxrwxrwx 1 feyrer bedienst 10 Jan 25 2000 .Xresources -> .Xdefaults -rw-r--r-- 1 feyrer bedienst 3089 Jul 14 1999 .cshrc drwxr-xr-x 3 feyrer bedienst 512 Mar 8 1999 .dt -rw-r--r-- 1 feyrer bedienst 3572 Apr 3 1995 .emacs -rwxr-xr-x 1 feyrer bedienst 12468 Jul 12 1999 .fvwm2rc ... 226 ASCII Transfer complete. ftp> ftp> pwd 257 "/home3/bedienst/dummy" is current directory. ftp> cd /etc 250 CWD command successful. ftp> lcd /tmp Local directory now /tmp ftp> get passwd local: passwd remote: passwd 227 Entering Passive Mode (194,95,108,32,134,125) 150 Binary data connection for passwd (194.95.108.65,40186) (418 bytes). 226 Binary Transfer complete. 418 bytes received in 00:00 (4.46 KB/s) ftp> ftp> bye 221 Goodbye. rfhpc8317% rfhpc8317% pwd /net/rfhs8012/home3/bedienst/feyrer rfhpc8317% cd /tmp rfhpc8317% ls -lad passwd -rw-r--r-- 1 feyrer bedienst 418 Jun 12 16:56 passwd
Die Dateien werden in sog. NIS-Maps gehalten. Die diversen Betriebssystem-Routinen getpwnam(3), getpwuid(3), getgrgid(3), etc. sind über die Datei /etc/nsswitch.conf so konfiguriert, daß Daten aus den NIS-Maps abgefragt werden. Die NIS-Maps haben immer ein Schlüssel-Feld, und einen Satz Daten für den jeweiligen Schlüssel. Mit dem Befehl ypcat(1) kann eine NIS-Map angezeigt werden, mit der Option "-k" erhält man zusätzlich noch den Schlüssel (Key) angezeigt.
Beispiel: Im Falle der hosts-Map existieren zwei Maps, hosts.byname und hosts.byaddr. Enthält die Datei /etc/hosts auf dem NIS-Server die folgende Zeile:
10.0.0.3 tabaluga rfhpc8320so ist in der Map hosts.byaddr der folgende Eintrag zu finden:
% ypcat -k hosts.byaddr | grep tabaluga 10.0.0.3 10.0.0.3 tabaluga rfhpc8320Die erste Spalte gibt hierbei den Schlüssel an, der beim Systemaufruf gethostbyaddr(3) angegeben werden kann. In der Map hosts.byname ist der Eintrag mehrfach zu finden, einmal für jeden Schlüssel, damit gethostbyname(3) alle Namen auflösen kann:
% ypcat -k hosts.byname | grep tabaluga tabaluga 10.0.0.3 tabaluga rfhpc8320 rfhpc8320 10.0.0.3 tabaluga rfhpc8320NIS erlaubt auch noch Alias-Namen für Maps, so ist z.B. "hosts" ein Alias für "hosts.byaddr", "passwd" ein Alias für "passwd.byname", etc. Eine vollständige Liste der Aliases erhält man mit dem Befehl "ypmatch -x":
% ypmatch -x Use "passwd" for map "passwd.byname" Use "group" for map "group.byname" Use "project" for map "project.byname"
Die Zugriffsrechte werden bei NFS auf Basis der User-ID (UID) des jeweiligen Client-Rechners festgelegt, in einem NFS-Verbund sollte deshalb ein Benutzer, der auf mehreren Rechnern via NFS auf seine Dateien zugreifen will, auch die selbe UID haben (-> NIS). Als Sicherheitssperre, damit Systemverwalter (root, UID 0) der NFS-Clients nicht gleichzeitig root-Rechte auf dem NFS-Server haben werden Zugriffe mit UID 0 üblicherweise auf dem NFS-Server auf Zugriffe des Users "nobody" abgeändert. Unter Solaris kann dies mit der share-Option "root=<rechner>" für den angegebenen Rechner unterdrückt werden, unter Linux heisst die Option "norootsquash".
State: Das NFS-Protokoll ist zustandslos, das heißt der Client weiss nichts über den Zustand des Servers, und umgekehrt. Es ist möglich, einen der beiden zu booten und hinterher weiterzuarbeiten. Erfolgen NFS-Zugriffe während ein NFS-Server nicht erreichbar ist, so erfolgen Timeouts.
Beispiel: Der Benutzer "meier" auf dem Rechner "hier" will dem Benutzer "meh12345" auf dem Rechner "rfhpc8320" ein Einloggen ohne Passwort erlauben. Dazu trägt er auf "hier" folgendes in die Datei .rhosts ein:
rfhpc8320 meh12345Der Benutzer meh12345 kann dann vom Rechner "rfhpc8320" aus sagen dass er sich an den Rechner "hier" verbinden will, allerdings nicht unter seiner Kennung, sondern unter "meier": rlogin hier -l meier. Die Passwortabfrage unterbleibt dabei.
Es gibt noch eine systemweite Version der Datei .rhosts, /etc/hosts.equiv. Aus Sicherheitsgründen sollte diese Datei stets leer sein (oder garnicht existieren).
daheim:~% ssh darwin.fh-regensburg.de
The authenticity of host 'darwin.fh-regensburg.de (194.95.108.82)' can't be established.
RSA key fingerprint is 69:fd:32:d8:cf:d6:f3:8c:37:41:97:3f:54:25:90:0b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'darwin.fh-regensburg.de,194.95.108.82' (RSA) to the list of known hosts.
abc12345@darwin.fh-regensburg.de's password: passwort
Last login: Mon Feb 11 09:44:09 2008 from rfhinf111.fh-regensburg.de
===========================================================================
* * * Willkommen in der Fakultaet Informatik-Mathematik * * *
...
darwin:~%
...
darwin:~% exit
daheim:~%
Schema Dateien:
daheim:~% ls ~/.ssh /home2/student/abc12345/.ssh: No such file or directory daheim:~% ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home2/student/abc12345/.ssh/id_dsa): <return> Created directory '/home2/student/abc12345/.ssh'. Enter passphrase (empty for no passphrase): <return> Enter same passphrase again: <return> Your identification has been saved in /home2/student/abc12345/.ssh/id_dsa. Your public key has been saved in /home2/student/abc12345/.ssh/id_dsa.pub. The key fingerprint is: 98:fd:28:eb:1c:66:ef:89:e3:03:5f:95:9e:19:6a:79 abc12345@daheim daheim:~% ls ~/.ssh id_dsa id_dsa.pub prng_seed daheim:~% cat ~/.ssh/id_dsa.pub ssh-dss AAAAB3NzaC1kc3MAAACBAJIFFT4nUeyEQyG8j6FIKiBZqTwmKDUOSNlAEQBIEy9syCUH6IautCPQvz9U+ZAsOLyny3XtPhqvGMoEv+s0I7W5dv5OcKZ7nxj3/1QBYSlfvgNcSTUyNh8rpjTJPnjYntmt6dOQ/7MpFKvLM8lkVoLFcyP5Y2EXbzKwIhKlf1QTAAAAFQDQ0Bu7n+Ke3g8azaNBrUDGPsbvqwAAAIA8aZpW4MaEsJ81eeue4H3J+UFoOidcjyQ95zE5iiHzNKWTon9q+hwCg0m8xrYVmyVU9OVf4eWYeL/z76ciEatRuEoseQhw4BCUTtqMJneYKnCcwauXZ5i+g1xvsi//Fh5q0x3YwNUl94v81EExxRCfmvU4UHFdHZa31EikA4dHWwAAAIEAjTJNnKcB4YlruLChqc7htPhiOUxN2F0xpRzB4VMSXCag+j6SbSiW4bMcoSz3FF35n0Mpva++nCm4ovHuDoz+4P4j7smwkZ0VEfTj2o/rrKCnoE+tG0cdgG71NSzrMKjmNJBjsaXr3tnR+T/kMp/Wli9m85JMNlxcOA2qIf7cGME= abc12345@daheim
daheim:~% cd $HOME/.ssh
daheim:~/.ssh% ls
id_dsa id_dsa.pub known_hosts prng_seed
daheim:~/.ssh% scp id_dsa.pub darwin.fh-regensburg.de:pub
abc12345@darwin.fh-regensburg.de's password:
id_dsa.pub 100% |*****************************| 607 00:00
daheim:~/.ssh% ssh darwin.fh-regensburg.de
abc12345@darwin.fh-regensburg.de's password: passwort
Last login: Fri Jan 4 11:04:46 2002 from daheim
Sun Microsystems Inc. SunOS 5.7 Generic October 1998
...
darwin:~% cat pub
ssh-dss AAAAB3NzaC1kc3MAAACBAJIFFT4nUeyEQyG8j6FIKiBZqTwmKDUOSNlAEQBIEy9syCUH6IautCPQvz9U+ZAsOLyny3XtPhqvGMoEv+s0I7W5dv5OcKZ7nxj3/1QBYSlfvgNcSTUyNh8rpjTJPnjYntmt6dOQ/7MpFKvLM8lkVoLFcyP5Y2EXbzKwIhKlf1QTAAAAFQDQ0Bu7n+Ke3g8azaNBrUDGPsbvqwAAAIA8aZpW4MaEsJ81eeue4H3J+UFoOidcjyQ95zE5iiHzNKWTon9q+hwCg0m8xrYVmyVU9OVf4eWYeL/z76ciEatRuEoseQhw4BCUTtqMJneYKnCcwauXZ5i+g1xvsi//Fh5q0x3YwNUl94v81EExxRCfmvU4UHFdHZa31EikA4dHWwAAAIEAjTJNnKcB4YlruLChqc7htPhiOUxN2F0xpRzB4VMSXCag+j6SbSiW4bMcoSz3FF35n0Mpva++nCm4ovHuDoz+4P4j7smwkZ0VEfTj2o/rrKCnoE+tG0cdgG71NSzrMKjmNJBjsaXr3tnR+T/kMp/Wli9m85JMNlxcOA2qIf7cGME= abc12345@daheim
darwin:~% ls .ssh
id_dsa id_dsa.pub known_hosts prng_seed
darwin:~% cat pub >>.ssh/authorized_keys
darwin:~% ls -la .ssh/authorized_keys
-rw-r--r-- 1 abc12345 student 607 Jan 4 11:08 .ssh/authorized_keys
darwin:~% chmod go-rwx .ssh/authorized_keys
darwin:~% ls -la .ssh/authorized_keys
-rw------- 1 abc12345 student 607 Jan 4 11:08 .ssh/authorized_keys
darwin:~% exit
daheim:~/.ssh% ssh darwin.fh-regensburg.de
Last login: Mon Feb 11 09:45:09 2008 from rfhinf111.fh-regensburg.de
===========================================================================
* * * Willkommen in der Fakultaet Informatik-Mathematik * * *
...
darwin%
rfhpc8317% grep : /etc/vfstab rfhs8012:/usr/Mail - /var/mail nfs - yes bg,soft,actimeo=0
rfhpc8317# showmount -e rfhs8012 export list for rfhs8012: /home1 softki /home2 homeki /home3 homeki /usr/Mail mailki rfhpc8317# mount rfhs8012:/usr/Mail /mnt rfhpc8317# mount | grep ^/mnt /mnt on rfhs8012:/usr/Mail remote/read/write/setuid/dev=2e40007 on Thu Jan 3 16:41:54 2002 rfhpc8317# ls /mnt abf31265 lij39317 abg32941 lim33289 ... rfhpc8317# umount /mnt rfhpc8317#
share root=maschine1:maschine2,rw=m3:m4:m5 /dateisystemFür mehr Details siehe die Manpages dfstab(4), share(1M) und exports(5).
# echo mynisdomain >/etc/defaultdomain # domainname `cat /etc/defaultdomain`
group: files nis hosts: files nis dns passwd: files nis netgroup: files [notfound=return] nis networks: files nisAuf Systemen die kein nsswitch unterstützen sind oft Zeilen in /etc/passwd und /etc/group einzufügen, die mit einem '+' beginnen und (bis auf die ':') nur leere Felder enthalten. Durch entsprechende Positionierung der +-Zeile kann man festlegen ob NIS zuerst (-> +-Zeile erste Zeile) oder zuletzt (letzte Zeile) befragt werden soll.
rfhpc8317# ypwhich rfhs8012 rfhpc8317# ypcat passwd | head -2 wes35369:tNf1lcgZbrR/k:35369:100:Stefan Weschta:/home2/student/wes35369:/soft/bin/tcsh scm33902:Ln6s3iyreIw2U:33902:100:Margit Schifferl:/home2/student/scm33902:/soft/bin/tcsh ... rfhpc8317# finger wes35369 Login name: wes35369 In real life: Stefan Weschta Directory: /home2/student/wes35369 Shell: /soft/bin/tcsh Never logged in. No unread mail No Plan. rfhpc8317# telnet localhost Trying 10.0.0.1... Connected to vulab1. Escape character is '^]'. SunOS 5.9 login: wes35369 Password: *** No directory! Logging in with home=/ Last login: Thu May 19 01:13:27 from 10.0.0.250 No shell Connection closed by foreign host. rfhpc8317# rfhpc8317# mkdir /soft rfhpc8317# mkdir /soft/bin rfhpc8317# ln -s /bin/csh /soft/bin/tcsh rfhpc8317# telnet localhost Trying 10.0.0.1... Connected to vulab1. Escape character is '^]'. SunOS 5.9 login: wes35369 Password: *** No directory! Logging in with home=/ Last login: Thu May 19 01:14:18 from 10.0.0.250 Sun Microsystems Inc. SunOS 5.9 Generic May 2002 vulab1%
# cd /var/yp # make
... # If the passwd, shadow and/or adjunct files used by rpc.yppasswdd # live in directory other than /etc then you'll need to change the # following line. # DO NOT indent the line, however, since /etc/init.d/yp attempts # to find it with grep "^PWDIR" ... # #HF#PWDIR =/etc PWDIR =/var/yp ...Neue Benutzer sind (nur) dort einzutragen!