Internet Zugang mit Linux
Ich wollte mit meinem kleinen Linux Netzwerk ins Internet. Alle angeschlossenen Workstations, Mac wie auch Windows Maschinen, sollten Zugang zum Internet erhalten.
Heute würde man wohl eher eine Lösung über ADSL oder ein Kabelmodem wählen. Somit würde der ganze Aufwand mit dem PPP wegfallen. Einen Anleitung zu einem downloadbaren Linux Router/Firewall
Hardwarez / Softwarez
Die verwendete Software stammt mit Ausnahme von diald von der Suse 6.1 CD (diald ist auf Suse 6.1 nur in einer alten, nicht funktionierenden Version 0.16 enthalten)
PPP Konfiguration
Squid Konfiguration
Diald Konfiguration
Links
PPP Konfiguration
Meine Internet Provider (access.ch und sunrise freesurf) wenden das PAP Identifikations Verfahren an. Das PPP- PAP Skript funktioniert für beide Provider. Das folgende Einwählskript ist zum manuellen einwählen (ohne diald) gedacht.
#!/bin/sh
#
# /etc/ppp/InternetAccess-BE
#
# Aufbau einer PPP Verbindung zur Internet Access AG & sunrise freesurf
#
# Autor: Michael Baehni , 1999
#
localip=0.0.0.0
remoteip=
device=/dev/modem
pppflags="115200 user yourusername crtscts modem defaultroute noipdefault"
/usr/sbin/pppd -d lock connect \
'/usr/sbin/chat -v -f /etc/ppp/bern.pap' \
$device $pppflags $localip:$remoteip
Dazu brauchts das PAP Skript, hier genannt /etc/ppp/bern.pap. Es funktioniert mit meinem Zyxel Omninet D bestens.
ABORT 'NO CARRIER'
ABORT BUSY
ABORT 'NO DIALTONE'
ABORT ERROR
'' AT&F OK
ATDI0315573066
CONNECT ''
Die Identifikation geschiet beim PAP Verfahren über die Datei pap-secrets.
# Secrets for authentication using PAP
#
# /etc/ppp/pap-secrets
#
# Autor: Michael Baehni , 1999
#
# client server secret IP addresses
yourusername * yourpassword
Es braucht weiter die Datei /etc/ppp/options. Meine options Datei sieht folgendermassen aus
debug
asyncmap 0
user yourusername
Mit diesen Angaen funktioniert bei mir die manuelle Einwahl zum ISP. Wenn man nun die Daten allen angeschlossenen Workstations zur Verfügung stellen will braucht es einen Proxy Server. Ich benutze dafür Squid.
Proxy Server Squid
Jetzt muþ man die Datei etc/squid.conf
anpassen. Die folgenden Angaben habe ich vom Internet geklaut, weiss aber nicht mehr von wo. Merci dem Autor!
- http_port 8080
Hier trägt man den Port ein, auf dem Squid nach Anfragen lauschen soll. Typische Werte
sind 81 oder 8080.
- icp_port 3130
auf diesem Port k nnte ein weiterer Proxy arbeiten.
- cache_host:
Wenn Squid mit einem anderen Proxy-Server zusammenarbeiten soll, kann der hier eingetragen
werden. In unserem Beispiel betreibt WiNShuttle einen guten Proxy-Server auf dem Rechner muenchen.shuttle.de,
auf Port 81 und ICP-Port 3130:
cache_host muenchen.shuttle.de parent 81 3130
Anderenfalls (z.B. bei T-Online) kommentiert man diesen Eintrag
mit # aus. Wenn der Provider einen Zwangsproxy hat (wie z.B. Metronet, CityWeb,
germany.net), trägt man diesen hier ein! Wichtig dabei: Die IP-Nummer dieses Proxys muss
beim Start von Squid zu ermitteln sein. Tragt also bitte diesen Rechner mit in der Datei /etc/hosts
ein!
- inside_firewall:
Dieser Eintrag ist zu aktivieren, wenn man selbst einen Firewall betreiben oder wenn man
einen Provider nutzen, der die Benutzung des eigenen Proxys zwingend vorschreibt. (wie
z.B. Metronet, CityWeb, ...) In diesen Fällen gibt man hier den Namen dieses
Proxy-Rechners an. Squid wird dann nur über diesen Rechner seine Seiten holen.
- local_domain:
Hier tragt ihr die Domainadresse ein, auf der der Web-Server arbeitet. In unserem
Beispiel:
local_domain www.kag.fg.sn.schule.de
- source_ping off
Damit wird das überprüfen der Erreichbarkeit des Quellservers abgeschaltet. Das ist eine
Voraussetzung für den offline-Betrieb.
- hierarchy_stoplist cgi-bin ? und
cache_stoplist cgi-bin ?
CGI-Scripte werden direkt auf dem entsprechenden Web-Server ausgeführt. Diese sollten
also nicht gespeichert werden. (Sonst kommt es zu Problemen bei der Verwendung von
Suchmaschinen)
- cache_mem 8
Stellt Squid 8 MByte im RAM zur Verfügung. Weniger sollte man nicht nehmen, wenn man die
angesprochenen 16MB RAM hat. Wer mehr RAM hat, kann Squid auch mehr geben - bis zu 16MB
ist in einem Schulnetz ganz sinnvoll, bei vielen Clients auch mehr.
- cache_swap 350
Damit stellt man 350 MByte Festplattenplatz für das Speichern aufgerufener Seiten zur
Verfügung. Je nach verfügbarem Platz sollte dieser Eintrag angepasst werden.
- cache_swap_low usw.
Diese Einträge legen fest, unter welchen Bedingungen Seiten vorzeitig aus dem Cache
gel scht werden. Hier muss im Normalfall nichts verändert werden.
- ipcache_size 2048
gibt an, dass der interne IP-Nummern-Cache 2048 Einträge speichern soll.
- cache_dir /var/squid/cache
Hier wird angegeben, wo der Festplattencache eingerichtet wird. Es empfiehlt sich, den
Pfad /var/squid/cache anzulegen.
- cache_log /var/squid/logs/cache.log usw.
diese Einträge geben an, wohin die Log-Dateien geschrieben werden.
- pid_filename /var/run/squid.pid
Squid soll seine PID (ProzessIDentifikationsnummer) in diese Datei schreiben.
- debug_options ALL,1
Die Menge an Debug-Informationen zu bestimmten Bereichen kann hier genau eingestellt
werden. Details liefert die Dokumentation zu Squid (in Englisch).
- ftpget_program /usr/squid/bin/ftpget
Den Pfad zu ftpget eintragen. Hier sollte es nach make install stehen.
- ftpget_options
Die Optionen, mit denen ftpget gestartet wird. Eine genauere Information bekommt
man, wenn man ftpget ohne Parameter von Hand startet. Bei uns hat sich bewährt:
ftpget_options -t120 -R -c 2:60
- ftp_user squid@kag.fg.sn.schule.de
Für das unterstützte "anonymous FTP" muss eine Mailadresse angegeben werden,
mit der sich Squid ordnungsgemäss beim FTP-Server anmelden kann.
- cache_dns_program /usr/squid/bin/dnsserver
gibt den Pfad zu dnsserver, dem Adressen-Cache an.
- dns_children 5
legt die Anzahl der zu startenden DNS-Cache-Server fest.
- refresh_pattern . 18400 50% 43200
Der wohl wichtigste Eintrag. Hier wird festgelegt, dass alle Objekte (der ,,.`` steht für
alle) mindestens 18400 Minuten als aktuell zu halten sind (entspricht knapp 14 Tage). Nach
43200 Minuten ist die Seite nicht mehr aktuell und neu zu holen (also nach etwa 30 Tagen).
Dazwischen bestimmt der Füllstand des Plattenplatzes, ob die Seite gehalten wird. Mit den
Prozenten kann man z.B. für Bilder oder Texte unterschiedliche Wertigkeiten festlegen.
Dann werden einfach weitere Zeilen eingefügt:
refresh_pattern \.gif$ 43200 100% 43200
Man kann also mehrere Zeilen mit diesem Eintrag verwenden. Genaueres zur Cache-Strategie
steht in der Dokumentation von Squid.
- reference_age 4 months
Legt fest, dass der Festplattenspeicher für ein Objekt nach dieser Zeit wirklich
freigegeben wird. Ein Objekt, das häufig aufgerufen wird, hat damit immer einen
reservierten Platz auf der Festplatte.
- quick_abort 10 40 100
Wenn eine Seitenanforderung vom Browser mit ,,Stop`` abgebrochen wird, legt dieser Eintrag
fest, was weiter passiert: In diesem Beispiel wird auch abgebrochen und nicht gespeichert,
wenn weniger als 10 KByte erhalten wurden, wenn 40% des Objekts oder bereits
100 KByte angekommen sind, wird der Transfer vom Internet fortgesetzt und für einen
späteren Aufruf gespeichert.
- positive_dns_ttl 18400
Sagt den DNS-Cache-Server, dass eine einmal ermittelte Adresse hier 18400 Minuten gültig
ist. Es ist sinnvoll, den Wert mit dem ersten Eintrag von refresh_pattern
übereinstimmen zu lassen. Nach dieser Zeit ist ein ,,offline-surfen`` nicht mehr
m glich, weil keine IP-Adresser mehr aufgel st werden kann.
- connect_timeout 120
nach 120 Sekunden wird bei nicht erreichbaren Seiten ein Fehler gemeldet.
- read_timeout 5
Wenn eine bereits begonnene Uebertragung 5 Minuten stillsteht und keine Daten mehr kommen,
wird abgebrochen.
- acl ...
Squid kann man genaue Zugriffsbeschränkungen erteilen. Dazu muss aber jedes Recht mit
einem ,,acl ...``-Eintrag zunächst definiert werden.
- cache_mgr root
Bestimmte kritische Systemzustände, wie z.B. Festplattenfehler, veranlassen Squid zu
einer Mail, die hier also an root geht, aber auch an einen anderen User geleitet
werden kann.
- cache_effective_user squid nogroup
Squid sollte nicht mit den Rechten von root laufen, sondern mit eingeschränkten
Rechten. Hier ist es sinnvoll, einen Nutzer squid einzurichten.
- httpd_accel www.kag.fg.sn.schule.de 80
Sollen alle Webzugriffe auch der lokalen Seiten über Squid laufen, muss der lokale
Webserver mit seiner Adresse und seinem Port hier eingetragen werden. Dazu muss der
folgende Eintrag:
httpd_accel_with_proxy on sein.
- memory_pools off
Damit wird Squid verboten, nach weiteren freien Systemressourcen Ausschau zu halten und
diese zusätzlich zu nutzen. Bei Systemen mit ohnehin knappen Speicher kann das zu
Problemen und unerklärlichen Abstürzen führen.
- swap_level1_dirs 16 und
swap_level2_dirs 256
Squid legt seine Objekte in eine bestimmte Ordnung, die dem Dateiverwaltungssystem von
Linux entgegenkommt, und die hier 16 Verzeichnisse mit jeweils 256 Unterverzeichnissen
benutzt.
Es gibt noch weitere Einträge, die jedoch für unser Projekt
nicht so wichtig sind. Im Zweifelsfall konsultiert man die Dokumentation. Letzter Punkt:
Der Start von Squid. Man sollte Squid mit der Option ,,-D &`` starten. Sie
unterbindet, dass Squid beim Start den Nameserverzugriff testet und deshalb
m glicherweise mit einer Fehlermeldung abbricht. Weiterhin muss die unter cache_host
angegebene Adresse mittels der Datei /etc/hosts richtig aufgel st werden
k nnen.
Noch ein Hinweis für Nutzer von S.u.S.E.-Linux: Das Skript zum
automatischen Start von Squid enthält diese Option nicht. Bearbeitet also die Datei /sbin/init.d/squid
entsprechend.
Jetzt müssen bei allen Webbrowsern die Proxyeinstellungen angepasst werden. Bei Netscape z.B. Preferences, Proxys, Manual Proxy Configuration. Geben Sie die IP Nummer Ihres Proxy Servers und den Port (bei mir 8080) ein. Von nun an läuft der gesamte Datenverkehr über den Proxy Server. Von allen Workstations sollten Sie jetzt Zugriff auf das Internet haben.
diald Konfiguration
Mit dem dial daemon können wir das wählen nach Bedarf einrichten. Wenn jemand an seiner Workstation eine Seite vom Internet anfordert, wählt sich diald automatisch ein und lässt die Verbindung auch wieder fallen wenn kein Bedarf mehr ist. Die diald Einstellung ist recht kompliziert. Die Filter Skripts die mit diald mitgeliefert werden funktionieren für mich bestens. Die wichtigste Datei ist die /etc/diald.conf. Im weitern baut diald auf das pap Skript von ppp auf und benützt auch die options Datei. Es folgt die /etc/diald.conf Datei.
mode ppp
connect "/usr/sbin/chat -f /etc/ppp/bern.pap"
device /dev/modem
speed 115200
modem
local 192.168.3.1
remote 192.168.3.2
dynamic
defaultroute
include /usr/lib/diald/standard.filter
fifo /etc/diald.ctl
Wichtige Links
Squid
Offizielle diald Page
Ich hoffe Euch mit diesen Angaben gedient zu haben. Wenn Ihr irgendwelche Bemerkungen, Fehlermeldungen usw habt. Nur zu... linux@approx.ch oder ins Guestbook
Klaut und braucht diese Infos. Ich war beim Installieren dieser Konfiguration auch froh über solche Seiten.
approx. media
Michael Bähni
Brunnmattstrasse 67
CH-3007 Bern
Switzerland
info@approx.ch
http://www.approx.ch