Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Die Datei /etc/hosts wird benutzt, um Rechnernamen in IP-Adressen aufzulösen – wenn kein Nameserver im lokalen Netzwerk vorhanden ist. Nach der Installation eines Ubuntu-Rechners mit dem Rechnernamen "jupiter" sieht die Datei so aus:
127.0.0.1 localhost 127.0.1.1 jupiter # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
Der obere Teil definiert den localhost und den Rechnernamen. Ab Ubuntu 6.06 kommen noch ein paar Zeilen für IPv6 hinzu.
Wie schon beschrieben kann die /etc/hosts auch dazu benutzt werden, Rechner im Netzwerk über ihren Namen anstatt über ihre IP-Adresse anzusprechen. Besteht das lokale Netzwerk z.B. aus 3 Rechnern mit den Namen
jupiter (192.168.0.1 - dieses System)
mars (192.168.0.2)
saturn (192.168.0.3)
muss in der /etc/hosts mit Root-Rechten [1] folgendes eingetragen [2] werden:
127.0.0.1 localhost 127.0.1.1 jupiter # <IP-Adresse> <Rechnername(n)> 192.168.0.1 jupiter.homenetwork jupiter 192.168.0.2 mars.homenetwork mars 192.168.0.3 saturn.homenetwork saturn # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
Dadurch können die Rechner "mars" und "saturn" über ihren Namen vom Rechner "jupiter" aus angesprochen werden.
Darüber hinaus lässt sich durch eigene Einträge ein einfacher, aber effektiver systemweiter Blocker realisieren. Dazu werden einfach zeilenweise weitere Namen (oder IP-Adressen) mit localhost verbunden. Beispiel:
127.0.0.1 localhost 127.0.1.1 jupiter # <IP-Adresse> <geblockte/r Name/n oder IP-Adresse/n)> 127.0.0.1 www.geblockte_domain.de
Damit werden alle Anfragen an www.geblockte_domain.de auf localhost umgeleitet und die Domain ist nicht mehr erreichbar. Nachteile dieses Verfahrens sind aber zum einen die aufwendige Pflege blockierter Namen und zum anderen die Verarbeitung sehr großer hosts-Dateien. Daher ist ein Proxy-Server auf Dauer die bessere Wahl. Eine weitere Möglichkeit besteht darin, über ein Skript
mehrere im Internet erhältliche regelmäßig aktualisierte hosts-Dateien herunterzuladen, diese zu kombinieren, sie z.B. um doppelte Einträge zu bereinigen und anschließend zu /etc/hosts hinzuzufügen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #!/bin/bash # If this is our first run, save a copy of the system's original hosts file and set to read-only for safety if [ ! -f ~/hosts-system ] then echo "Saving copy of system's original hosts file..." cp /etc/hosts ~/hosts-system chmod 444 ~/hosts-system fi # Perform work in temporary files temphosts1=`mktemp` temphosts2=`mktemp` # Obtain various hosts files and merge into one echo "Downloading ad-blocking hosts files..." wget -nv -O - http://winhelp2002.mvps.org/hosts.txt >> $temphosts1 wget -nv -O - http://hosts-file.net/download/hosts.txt >> $temphosts1 wget -nv -O - http://someonewhocares.org/hosts/hosts >> $temphosts1 wget -nv -O - "http://pgl.yoyo.org/as/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext" >> $temphosts1 # Do some work on the file: # 1. Remove MS-DOS carriage returns # 2. Delete all lines that don't begin with 127.0.0.1 # 3. Delete any lines containing the word localhost because we'll obtain that from the original hosts file # 4. Delete any lines containing the word dropbox.com. # 5. Replace 127.0.0.1 with 0.0.0.0 because then we don't have to wait for the resolver to fail # 6. Scrunch extraneous spaces separating address from name into a single tab # 7. Delete any comments on lines # 8. Clean up leftover trailing blanks # Pass all this through sort with the unique flag to remove duplicates and save the result echo "Parsing, cleaning, de-duplicating, sorting..." sed -e 's/\r//' -e '/^127.0.0.1/!d' -e '/localhost/d' -e '/dropbox.com/d' -e 's/127.0.0.1/0.0.0.0/' -e 's/ \+/\t/' -e 's/#.*$//' -e 's/[ \t]*$//' < $temphosts1 | sort -u > $temphosts2 # Combine system hosts with adblocks echo Merging with original system hosts... echo -e "\n# Ad blocking hosts generated "`date` | cat ~/hosts-system - $temphosts2 > ~/hosts-block # Clean up temp files and remind user to copy new file echo "Cleaning up..." rm $temphosts1 $temphosts2 echo "Done." echo echo "Copy ad-blocking hosts file with this command:" cp ~/hosts-block /etc/hosts echo echo "You can always restore your original hosts file with this command:" echo "cp ~/hosts-system /etc/hosts" echo "so don't delete that file! (It's saved read-only for your protection.)" |
Das Skript ersetzt bei den zu blockierenden Einträgen die IP-Nummer 127.0.0.1 durch 0.0.0.0, da dadurch erhebliche Geschwindigkeitsvorteile
zu erreichen sind. Das Skript sollte unter /root/gethosts gespeichert und ausführbar gemacht werden. Über einen symbolischen Link z.B. nach /etc/cron.daily oder /etc/cron.weekly kann es dann leicht automatisch ausgeführt werden.
Diese Revision wurde am 21. April 2013 00:18 von ubot erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen:
Netzwerk
2004 – 2013 ubuntuusers.de • Einige Rechte vorbehalten