Privater Webserver über T-Online DSL Flat mit Cisco 1605 und Dyndns-Account




Sollte jemand eine T-Online Flatrate besitzen und einen permanenten Zugriff auf seinen privaten Webserver realisieren
wollen, habe ich hier eine Beispielanleitung in Verbindung mit einer Cisco 1605 und einer Sparc Station 20 unter Solaris 9 als Webserver.

Dies ist meine private Spielwiese und dient keinem kommerziellen Hintergrund.
Es ist nur ein privates Experiment und soll demnach auch nie kommerziell eingesetz werden - verbieten ja auch schon die Nutzungsbedingungen der diversen Telekomunikationsanbieter.
Mein privates Netz setzt sich aus dem Nummernkreis "192.168.1.0/24" zusammen, der Router als Default-Gateway
hat die "192.168.1.1", die Sun "192.168.1.70", dient auch als Logging-Server für die Cisco.

Alle eingesetzten Programme sind Freeware, Garantie kann ich aber für nichts übernehmen, da das gesamte Projekt nur im meinem
Heimbereich getestet ist - aber ausprobieren kostet nichts und Spaß macht es allemal.


Voraussetzungen

Vorhaussetzungen sind eine Cisco 1605 mit 16 MB RAM und 6 MB Flash - IOS 12.2(2)T oder Kleiner Minimum ist allerdings eine IOS 12.1.3-XG.

Des Weiteren benötigt man einen freien Account bei DynDNS ("http://www.dyndns.org/"), es gibt natürlich auch noch Anbieter für dynamische DNS-Vergabe,die Konfiguration sieht aber dann etwas anders aus.

Andere Router mit NAT sind natürlich auch möglich - möchte ich aber hier nicht weiter drauf eingehen.

Auf der Sun habe ich Solaris 2.6 bis 9 ausprobiert, hatte bisher keine Probleme.
Die Sun (Sparc Station 20 mit 112MB/4GB) mit Solaris 9 hatte eine ältere Variante abgelöst, die allerdings unter Solaris 2.6 auch wunderbar funktionierte (Sparc Station 2 mit 40MB/4GB).
Für den Client-Zugriff auf DynDNS wird noch ein Perl 5 benötigt und der eigentliche "ddclient" (siehe unten).


Router Konfiguration Cisco 1605

Beispiel Konfiguration für eine Cisco 1605 (meine ist noch etwas ausführlicher):

Building configuration...

Current configuration : 3379 bytes
!
! Last configuration change at 02:44:14 UTC Tue Oct 29 2002
! NVRAM config last updated at 08:45:15 UTC Mon Oct 21 2002
!
version 12.2
no parser cache
no service single-slot-reload-enable
no service pad
service timestamps debug uptime
service timestamps log uptime
service password-encryption
!
hostname Cisco1605
!
boot system flash c1600-sy-mz.122-2.T.bin
logging rate-limit console 10 except errors
!
ip subnet-zero
no ip source-route
ip tcp mss 1452
!
!
no ip dhcp-client network-discovery
vpdn enable
!
vpdn-group 1
request-dialin
protocol pppoe
!
!
!
!interface Ethernet0
ip address 192.168.1.1 255.255.255.0
no ip proxy-arp
ip nat inside
ip rip send version 1 2
ip rip receive version 1 2
!
interface Ethernet1
no ip address
no ip proxy-arp
pppoe enable
pppoe-client dial-pool-number 1
no cdp enable
!
interface Dialer1
mtu 1492
ip address negotiated
ip nat outside
encapsulation ppp
dialer pool 1
dialer idle-timeout 900
dialer string 0191011
dialer hold-queue 10
dialer-group 1
no cdp enable
ppp authentication pap callin
ppp pap sent-username xxxxxxxxxxxxxxxxxxxxx#0001@t-online.de password 7 yyyyyyyyyyyy
!
router rip
version 2
redistribute static
passive-interface Dialer1
network 192.168.0.0
network 192.168.1.0
no auto-summary
!
ip nat inside source list 1 interface Dialer1 overload
ip nat inside source static tcp 192.168.1.70 80 interface Dialer1 80
ip classless
ip route 0.0.0.0 0.0.0.0 Dialer1
no ip http server
!
logging trap debugging
logging 192.168.1.70
access-list 1 permit 192.168.1.0 0.0.0.255
dialer-list 1 protocol ip permit
!
!
!
end



Anmk.: Für die "xxx" bitte Benutzername (erste und zweite Zeile der T-Online Zugangsdaten) und Kennwort "yyyy" für den Zugang einsetzen.

Bitte beachten, für Windows sollte die MTU der Netzwerkkarte auf 1492 eingestellt werden, wenn es bei einigen Seiten nicht klappt, die MTU auf einen kleineren Wert stellen.
Es gibt auch ein kleines Tool zur Einstellung der MTU unter Windows, das macht die Sache etwas einfacher
("http://www.dslreports.com/front/drtcp.html").


Installationen auf der SUN
Es ist eine Standard Solaris 9 installiert inkl. Companion CD. Ich habe unter "/etc/rc2.d" ein Script eingebunden "S87route" (Inhalt:"route add default 192.168.1.1") damit die Sun auch wirklich weiß wo es lang geht, gefolgt von einem weiteren Script "S89ddclient" (Inhalt:"/usr/bin/perl /usr/local/bin/ddclient"), dieses startet ein Perl-Script zur Übermittlung der aktuellen IP an DynDns (zu beziehen unter "http://burry.ca:4141/ddclient/").
Bitte nicht vergessen die Scripte als "executable" ausführbar zu machen.
Für das Perl-Script wird Perl 5 benötigt, bitte gegebenenfalls Pfade anpassen wenn die Programme in anderen Verzeichnissen installiert werden.

Ins Verzeichnis "/etc" sollte die "ddclient.conf" Datei des "ddclient" gelegt und editiert werden,
wichtige Zeilen sind:

login=DynDns-AccountName # default login
password=DynDns-Password # default password

##
## dyndns.org dynamic addresses
##
## (supports variables: wildcard,mx,backupmx)
##
server=members.dyndns.org, \
protocol=dyndns2 \
xxxxx.dyndns.org # DynDns-Name



Das Script läuft permanent im Hintergrund und bei der Zwangstrennung liefert es die aktuelle IP wieder an DynDns - ich hatte bisher nur eine maximale Downtime von 1-2 Minuten in den Nachtstunden, sollte man im privaten Bereich verschmerzen können.

Damit die ganze Sache auch noch mehr Formen annimmt läuft noch ein kleiner DNS-Server und ein Zeit-Server, die Konfiguration möchte ich aber hier nicht weiter beschreiben, ist auch nicht sonderlich kompliziert.


Apache für den kleinen Geldbeutel

Jetzt nur noch den Apache compilieren mit den gewünschten Optionen und fertig ist der eigene Webserver mit "permanenter" Internet-Erreichbarkeit.

Noch ein kleines Beispiel für das Komilieren des Apache mit PHP4 für ganz Eilige:

Download eines Apache 1.3.27 ("http://www.apache.org/dist/httpd/") und einer PHP4 ("http://www.php3.de/downloads.php") in ein Verzeichnis.
Beides entpacken und die erzeugten Verzeichnisse in "apache" und "php" umbenennen, danach folgendes Script starten
(installiert den Apache in "/usr/local/apache"):

#!/bin/sh
cd apache
./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a
cd ../php
./configure --with-apache=../apache --enable-sigchild --with-config-file-path=/usr/local/apache/conf
make
make install
cd ../apache
./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a
make

#NOTE: Falls der "make" etwas ausgibt wie "No rule tomake" dann noch einmal das erste "apache configure"
#von oben gefolgt von einem "make" ausführen
make install
cd ../php
cp php.ini-dist /usr/local/apache/conf/php.ini


Danach ins Verzeichnis "/usr/local/apache/conf" wechseln und die Datei "httpd.conf" editieren.
Folgende beiden Zeilen im "AddType"-Bereich nachpflegen:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps


Die Datei speichern und den Apache mit "/usr/local/apache/bin/apachectl start" starten.

Den eigenen Wünschen und Vorstellungen sind kaum Grenzen gesetzt, ich habe beispielsweise noch MRTG ("http://people.ee.ethz.ch/~oetiker/webtools/mrtg/") für Statistiken meiner Router und Rechner installiert, Webalizer ("http://www.mrunix.net/webalizer/") für Statistiken der Web-Zugriffe.
Weiterhin laufen noch einige MySQL-Datenbanken ("http://www.mysql.com/") mit PHP-Anbindung an einige Tools:
Tutos ("http://www.tutos.org" - kleine Groupware-Lösung), SquirrelMail ("http://www.squirrelmail.org/" - geniales WebMail-Interface) und ein kleines Test-Forum ("http://www.phpbb.com/" - klasse Forum-Software, wir alle wissen wovon ich spreche ;-), Dank an 'Jerry' unseren Admin ).



Alle GNU-Tools die man an der ein oder anderen Stelle für erweiterte Funktionalitäten benötigen könnte, kann man beispielsweise von "http://www.sunfreeware.com/" downloaden, bei Solaris 9 gibt's diese schon auf einer zusäzlichen CD (Companion CD) dabei.
Wer einen schnellen Download hat kann für Solaris 8 auch eine Companion CD über SUN downloaden
("http://wwws.sun.com/software/solaris/freeware/download.html" - vorher aber leider erst bei SUN registrieren).

Die dynamisch übermittelte IP kann also immer einem bestimmten Adresse zugeordnet werden, je nach NAT-Adressierung des Routers kann man also verschiedene Dienste "sharen".


Hinweis zum kompilieren verschiedener Sourcen:

Standardmäßig nimmt die Sun ihren eigenen "make" und "cc", beim kompilieren ist es hilfreicher einen GNU-make (gmake) und einen GNU C Compiler (gcc) zu installieren und diese zu "linken", man spart sich so viel Kopfzerbrechen und herumprobieren.


Noch ein Hinweis zur Sicherheit des Servers:

Da unser Rechner nun allgemein bekannt ist, sollten wird darauf achten was wir nach "außen" freigeben, um uns vor möglichen Angriffen zu schützen.
Also ein Blick auf die "/etc/inetd.conf" lohnt sich, wenn diese aktiv ist, unnötiges bitte auskommentieren - was man nicht anbietet, kann man nicht angreifen.

Auch den Router sollte man so konfigurieren das wirklich nur Ports weitergeleitet werden, die wir auch wirklich benötigen - ich denke da beispielsweise an einen total offen "anonymous FTP-Zugang", über den unser Rechner zugeschüttet wird, wer will das schon.

Auch sollte man aktuelle Patches und neue Programmversionen bei festgestellten Sicherheitslücken einspielen, soll hier und da helfen.
Remote-Zugriffe bitte dann auch nur über "ssh" zulassen, ich glaube alles andere wäre fataler Leichtsinn.



So, das wars erst mal - viel Spaß beim ausprobieren!


Olli


Oliver Bollwerk 29.10.2002