Nach Langer Pause mal wieder ein Blogbeitrag von mir. Es geht um meinen Router über den ich hier schon ein paar Mal geschrieben habe. Was ich heute hier schreibe soll eine Anleitung sein wie man den SMT-3210 in einen Webserver konfiguiert. Zuerst wird das Adminpanel auf einen anderen Port gelegt, ein 2.ter Webserver liefer die Daten von einem USB-Stick aus und das ganze soll von Außen erreichbar sein.
Vorraussetzung :
- Einen Samsung SMT-3210 (3200 und 3220 sollten auch gehn, aber ich konnte das nicht testen)
- Eine modifizierte Firmware (google). Ich habe Version 3.02 getestet.
- Einen Telnet-Client und später optimal SSH-Client
- USB-Stick (kommt in den USB-Port auf dem Router)
Vorbemerkung:
Falls etwas schief geht lässt sich der Router über ein angeschlossenes Telefon resetten. Dazu wählt man am Telefon “#8312345”.
1. Schritt: Das Adminpanel
Ich will das Adminpanel das normalerweise auf dem Router läuft auch weiterhin benutzten, aber auf einem anderen Port. Dazu gehn wir zunächst per Telnet auf den Router. Wir connecten zu “samsung.router” auf dem Port 30023 mit den Logindaten “root” und “banana”.
Als erstes ändern wir das Passwort. Dazu “passwd” starten und das neue Passwort eingeben. Nun sichern wir das Passwort indem wir “cp /configs/etc/passwd /configs/etc/newpass” ausführen. Nun ist nach einem Reboot des Routers auch das neue Passwort erhalten. Als nächstes aktivieren wir den SSH Zugang. “/usr/sbin/dropbearkey -t rsa -f /configs/rsakey” ausführen und dann mit “reboot” den Router neustarten.
Nun können wir uns per SSH auf samsung.router mit dem neuen Passwort anmelden. Jetzt sichern wir die Config des Webservers bevor wir was verändern. Dazu führen wir “cp /configs/etc/thttpd.conf /configs/etc/thttp.conf.backup” aus. Nun öffnen wir die Datei “/configs/etc/thttpd.conf” (vi ist auf dem router, ansonsten per SSH downloaden und auf dem normalen Rechner editieren und wieder hochladen). Was uns interessiert ist die erste Zeile “port=80”. Die änderen wir ind “port=8080”. Nach dem nächsten Reboot läuft der Standartwebserver nun auf http://samsung.router:8080/.
2. Schritt: Der neue Webserver
Ich möchte alle Veränderungen auf einem USB Stick haben und von da Ausführen. Der interne Speicher ist sehr beschränkt und den sollten man nicht voll machen. Der USB-Stick wird in “/ramdisk/mnt/usb-storage” gemountet (in meinem Fall /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0). Ich habe meinen USB-Stick folgende Ordnerstruktur gegeben :
- /bin/ für Shellscripts und Programme
- /config/ für Configuarationsdateien
- /www/ für die Daten des Webservers
Wir erstellen zunächst die Config. Dazu erstellen wir in /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/config/thttpd.conf mit dem Inhalt:
1
2
3
4
5
6
7
8
|
port=80
nochroot
user=root
dir=/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/www/
cgipat=cgi-bin/*.cgi
charset=iso-8859-1
nosymlink
max_upload=12582912 |
Danach machen wir “cp /usr/sbin/thttpd /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/bin/” und erstellen /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/bin/thttp_wrapper mit dem Inhalt:
1
2
3
4
5
6
7
8
|
#!/bin/sh
basedir=/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0
thttpd=$basedir/bin/thttpd
while true; do
$thttpd -D -C /mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/config/thttpd.conf -i /var/run/thttpd_alt.pid > /dev/null
sleep 1
rm -f /var/run/thttpd_alt.pid
done |
Dieses Script startet den Server und startet ihn auch neu falls er mal abstürzen sollte (was ich bisher nicht erlebt habe).
Nun erstellen wir die Datei /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/bin//www/index.php mit dem Inhalt:
Nun könnten wir den Webserver starten mit der thttp_wrapper. Allerdings müssten wir das nach jedem Reboot manuel starten. Also müssen wir noch was tun.
3. Schritt: Den Webserver starten
Wir erstellen die Datei /configs/rc.local :
1
2
3
4
5
6
7
8
9
10
|
#!/bin/sh
if [ -d /ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0 ]
then
echo "staring webserver on port 80"
/ramdisk/mnt/usb-storage/UNTITLED_SanDisk-Cruzer-0/bin/thttpd_wrapper &
else
echo "usb-drive not found, retry in 10 seconds"
sleep 10
/configs/rc.local
fi |
Das Sorgt dafür das unser Webserver gestartet wird sobald der USB-Drive im Router gemountet wurde. Nach einem Reboot sollte nun alles laufen. Also “reboot” eingeben und dannach auf “http://samsung.router” gehn. Die Seite erscheint. Nun sind wir erstmal fertig. Aber die Seite ist von außen nicht erreichbar, noch nicht.
4. Schritt: DynDns
Wir gehn in das Adminpanel auf http://samsung.router:8080/. Unter Firewall → Fernzugriff seten wir Modus auf “erlauben”. Nun kann man von außen auch auf den Server zugreiffen, sofern man die IP weiß. Um das zu vereinfachen benutzten wir Dynamisches DNS. Dazu auf dem Router zu “Internet→Dynamisches DNS” gehn. Hier kann man einige Anbieter aussuchen. Ich habe aber nur dyndns ausprobiert. Hier die Accountdaten eingeben. Nun ist euere Router von außen auch als Webserver erreichbar.
Was wir haben :
- Einen Webserver mit PHP (leider ohne Datenbank) und leider in der Version 4.3 (scheiß class-system und xml ist auch nicht besser) der Zuhause steht, leise und stromsparen ist. Dazu unlimited Traffig (wenn auch nur mit geringem Upload). Webspace hängt vom USB-Stick ab (ich benutzte derzeit 4GB)
- Leider ist das AdminPanel des Routers auch von außen erreichbar. Dazu schriebe ich noch was. Derzeit einfach ein gutes Passwort einstellen

0 comments