Linux als Dial On Demand Internet Gateway 24.04.2000

Autor: mw

 

Zuhause habe ich einige Windows PCs miteinander vernetzt. Nun wollte ich naürlich nicht für jeden PC ein eigenes Modem einrichten, was zudem umständlich wäre, da nur immer ein einziger PC aufs Netz könnte. 

Deshalb habe ich meine Linux Box so eingerichtet, dass sie als Gateway zwischen meinem Intranet und dem Internet fungiert. Die Idee war dabei, dass meine Linux Box sich automatisch mit dem Internet verbindet, also mit dem Modem rauswählt, sobald einer der PCs aufs Internet will. Dann sollten alle TCP/IP Packete, welche für's Internet bestimmt sind, mittels IP Masquerade geroutet werden. Natürlich soll die Linux Box die Verbindung nach einer gewissen Zeit der Inaktivität auch wieder trennen, damit die Telephonkosten nicht explodieren. Zu guter Letzt habe ich noch Squid installiert, einen Proxy Server, welcher den Web Zugriff deutlich beschleunigt und die Sicherheit gegen Zugriffe von aussen erhöht. 

 

Die folgenden Schritte gelten für SuSE Linux 6.2 sollten aber auch auf andere Distributionen anwendbar sein.

 

1. Voraussetzungen
 
  • SuSE Linux 6.2 (oder eigentlich jedes Linux mit Kernel 2.2.xx
  • IP Masquerading in den Kernel einkompiliert (ist im Standard Kernel der Fall
  • dnrd 2.6, kann hier runtergeladen werden
  • pppd (sollte mit wvdial installiert worden sein)
  • wvdial 1.3 / 1.4 (1.3 befindet sich auf der SuSE CD) 
  • externes Modem oder ISDN Adapter
  • Internet Provider
  • ev. Squid 2.2

 

2. Dial on Demand einrichten
 
  1. wvdial einrichten:

    Als erstes muss wvdial eingerichtet werden, damit der Zugang zum Internet Provider funktioniert. Dies geschieht mittels YaST. Im SuSE Manual ist dies zudem schön erklärt. Hat man seinen Internetzugang eingerichtet und getestet muss man die Datei wvdial.dod ins Verzeichnis /etc/rc.d kopieren. Es müssen an dieser Datei eigentlich keine Veränderungen gemacht werden

    wvdial.dod kann als root aufgerufen werden. mit /etc/rc.d/wvdial.dod start wird Dial on Demand gestartet. Um dies zu automatisieren macht man entweder in /etc/rc.d/init.d/boot.local einen entsprechenden Eintrag, oder was eleganter ist die nötigen symbolischen Links in den entsprechenden Runleveln. Das wären

    ln /etc/rc.d/rc2.d/S20wvdial.dod /etc/rc.d/wvdial.dod
    ln /etc/rc.d/rc2.d/K20wvdial.dod /etc/rc.d/wvdial.dod
    ln /etc/rc.d/rc3.d/S20wvdial.dod /etc/rc.d/wvdial.dod
    ln /etc/rc.d/rc3.d/S20wvdial.dod /etc/rc.d/wvdial.dod

    Mit diesen Links wird wvdial.dod in den Runleveln 2 und 3 gestartet, resp. gestoppt.

  2. dnrd einrichten

    Damit nun die Verbindung zum Internet aufgebaut wird, muss man der Linux Box noch die DNS Server des Providers mitteilen. Dazu gibt es zwei möglichkeiten. Entweder trägt man diese direkt in die /etc/resolv.conf ein, was manuell oder mit YaST gemacht werden kann oder man wählt einen etwas eleganteren Weg, was einem vor allem bei Wechseln des Internet Providers das Leben vereinfacht. Man richtet dnrd ein. dnrd ist ein kleiner DNS Cache, welcher schon abgefragte IP Adressen speichert und falls nötig Anfragen zu den DNS des Providers weiterleitet.


    Zuerst installiert man das Packet dnrd. Dann macht man am Ende der Datei /etc/rc.d/init.d/boot.local den Eintrag 

    ......
    /usr/sbin/dnrd -s dns1 -s dns2

    Wobei dns1 und dns2 für die IP Adressen der DNS Server des Providers stehen. Dieser Eintrag bewirkt, dass dnrd am Ende des Bootvorganges mit den richtigen Parametern aufgerufen wird.
    Nun muss man in der /etc/resolv.conf Datei noch einen Eintrag Eintrag machen. Als einziger DNS Server (sofern kein weiterer im Intranet vorhanden ist) muss dort 127.0.0.1, was die local Adresse der Linux box ist eingetragen werden sein. Dies kann man von Hand machen oder aber mit YaST. Wenn man nun auf der Linux Box eine externe IP Adresse öffnen will, z.B. mit lynx http://www.yahoo.com sollte die Linux Box sich automatisch verbinden.

    Achtung! Je nach dem was für Dienste noch installiert sind, kann es sein, dass sich die Linux Box von nun an selbstständig mit dem Netz verbindet! Sendmail ist zum Beispiel ein solcher Kandidat. Ich empfehle aber sowieso, alle Dämonen welche nicht gebraucht werden zu deinstallieren!

 

3. Masquerading einrichten
 

Ich habe hierzu eine sehr einfache Lösung gewählt, welche wohl nicht die sicherste, aber sehr einfach zu implementieren. 

Man muss das File /etc/rc.d/firewall durch folgendes Skript ersetzen

#!/bin/sh
# 2000 Marcel Weber
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/ipchains -F
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.168.0/255.255.255.0 -j MASQ
/sbin/ipchains -A forward -s 127.0.0.1/255.255.255.255 -j MASQ


Anstelle von 192.168.168.0/255.255.255.0 sollte man natürlich den Adressbereich seines eigenen Intranets angeben. Hat man also z.B. Computer mit den IP Adressen 192.168.0.2 bis .4 dann gibt man 192.168.0.0/255.255.255.0 an!

Die beiden ersten Zeilen sorgen dafür, dass die nötigen Module für IP Masquerading sicher geladen werden! Es kann sein, dass man ein paar Fehlermeldungen kriegt. Ist aber nicht weiter schlimm solange es keine IP Masquerading Module sind, welche fehlen!

Zudem muss man in /etc/rc.config MSQ_START="yes" eintragen! Die restlichen Parameter sind wurscht, da wir dies direkt im obigen Skript gemacht haben!

Nach Aenderungen in rc.config muss man SuSEconfig aufrufen!

 

4. Squid einrichten
 

Wenns ein wenig nobler zugehen soll, kann man zusätzlich noch Squid installieren, welches mit SuSE Linux geliefert wird. Es handelt sich dabei um einen Cache Proxy Server, welcher zum einen die Sicherheit erhöht, zum anderen den Webzugriff durch Caching beschleunigt.

  1. Als erstes Squid von der CD installieren
  2. Dann in /etc/rc.config START_SQUID=yes eintragen.
  3. Dieses Skript nach /etc/squid.conf kopieren
    Dieses Skript erlaubt allen den Zugriff auf den Proxy auf dem Port 8080
  4. SuSEconfig aufrufen. Man kann Squid aber auch direkt starten mit /etc/rc.d/squid start

 

5. Die Clients einrichten
 

Damit nun die Clients Zugriff auf das Internet haben müssen folgende Dinge gemacht werden. Man muss Ihnen den Default Gateway mitteilen, den DNS Server und optional den Proxy Server. Zudem müssen die Clients selbstverständlich TCP/IP installiert haben. In Windows 2000 sieht dies folgendermassen aus:

Bild Anklicken zum Vergrössern

 

192.168.168.1 wäre in diesem Beispiel meine Linux Box!

Zudem muss unter Eweitert -> DNS "Adressen dieser Verbindung in DNS" registrieren deaktiviert sein, sonst beginnt Windows 2000 immer wieder ins Internet zu wählen.

Den Proxy Server muss man im Internet Explorer oder Netscape ebenfalls mit der folgenden Adresse angeben: proxy 192.168.168.1 port 8080, resp. die IP Adresse Deiner Linux Box.

 

6. Hinweis
 

Gerade bei Windows 98 und 2000 gibt es mittlerweile einige Programme welche sich selbstständig mit dem Internet verbinden wollen. Zum Beispiel die Automatische Windows Update Benachrichtigung oder Live Update, etc. Auch Outlook muss z.B. auf manuell gestellt werden, damit es nicht alle 10 min. ins Internet wählt. Die Aktivität auf der Linux Box kann man aber schön in der /var/log/messages Datei nachschauen. Dort werden alle ppp Verbindungen eingetragen. Man könnte diese Informationen auch brauchen um die Telephonkosten zu berechnen. Der Proxy hat auch eine Log Datei unter /var/squid/logs/access.log. Dort sieht man zudem wer, wann, welche Seite aufgerufen hat.