Seit einigen Jahren, genauer gesagt seit Linksys den legendären WRT54GL-Router herausgebracht hat, ist es möglich auf immer mehr billigen WLAN-Routern „OpenWRT“, als Linux zu installieren. – Diese Mini-Linux Distribution reicht in den meisten Anwendungsfällen um das PC-/Server basierte Gateway zu ersetzen.
Wir setzen hier eine default Konfiguration mit dem, immer noch populärsten Linksys WRT54GL auf.
Inhalt
Vergleich gegenüber eines Server-Gateways
Vorteile
- Leise
- Weniger Stromverbrauch
- Platzsparender
Nachteile
- Stark eingeschränkter Speicherplatz und RAM
- Weniger flexibel
Voraussetzungen
- PC
- Linksys WRT54GL-Router
Hinweise zur verwendeten OpenWRT-Version
Leider ändert das OpenWRT-Projekt bei fast jedem neuen release die Konfigurationsmethoden wieder radikal; d.H., was in Version 7.09 galt, gilt nicht mehr für Version 8.09, usw.
[stextbox id=“warning“ caption=“Hinweis“]Dieses Tutorial bezieht sich deshalb ausdrücklich auf die Version 8.09![/stextbox]
[stextbox id=“warning“ caption=“Achtung“]Die neueren Kamikaze-Version (8.09) scheint ein Rückschritt zur Vorherigen Version (7.09) zu sein: Nebst der komplizierteren Konfiguration (z.B. die SUSE-Typische Konfiguration: „/etc/hosts“ is autogenerated, use „/etc/hosts.local“ instead…) ist OpenWRTso aufgeblasen, dass viele Pakete, wie z.B. OpenVPN (ohne Hacks) keinen Platz mehr finden! – Ich würde deshalb einigen Leuten (die, die keine Lust am lange rumbasteln und rumgoogeln haben) empfehlen die Version: 7.09 zu installieren![/stextbox]
Ich beschreibe hier die Version 8.09, schlicht aus dem Grund weil ich schon zu viel Zeit mit Basteln investiert hatte und nicht nochmals von vorne mit einem reflash von 7.09 beginnen wollte. 😉
You have been warned…
Installation von OpenWRT
Zuerst schliessen wir den Router über einen der Ethernet-Ports direkt am PC an, dieser sollte auf DHCP eingestellt sein.
Dann wählen wir die URL: http://192.168.1.1/ an (Benutzername/Passwort: admin/admin) und klicken und durch zu -> Administration -> Firmware Upgrade
[stextbox id=“note“ caption=“Hinweis“]Es ist ganz wichtig, zuerst die Kernel 2.4 Version zu installieren, um danach die NVRAM-Variablen „boot_wait“ und „boot_time“ zu setzen (geht in den 2.6-er Versionen nicht)!
Derzeit ist die 2.4-er Kernel Version auch besser, da auf Kernel 2.6. Wireless noch immer nicht richtig läuft.[/stextbox]
Nun laden wir das folgende Firmware-Image herunter: http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/openwrt-wrt54g-squashfs.bin
Dieses installieren wir nun auf dem Router wie ein Standard Firmware-Upgrade.
Nach ca. 2 Minuten rebootet der Router und wir können uns per telnet auf: 192.168.1.1 verbinden und konfigurieren.
NVRAM-Variablen setzen
(Hinweis: Dies muss nur bei der ersten OpenWRT Installation gemacht werden)
Gleich nach dem ersten Login muss folgendes ausgeführt werden:
nvram set boot_wait=on nvram set boot_time=10 nvram commit && reboot |
Konfiguration
IP ändern
Als erstes kann man die LAN-IP nach eigenen belieben setzen, wenn der Standard 192.168.1.1 nicht gefällt.
Dies lässt sich ganz einfach in der Datei: /etc/config/network machen:
#### VLAN configuration config switch eth0 option vlan0 "0 1 2 3 5*" option vlan1 "4 5" #### Loopback configuration config interface loopback option ifname "lo" option proto static option ipaddr 127.0.0.1 option netmask 255.0.0.0 #### LAN configuration config interface lan option type bridge option ifname "eth0.0" option proto static option ipaddr 10.2.1.1 option netmask 255.255.255.0 #### WAN configuration config interface wan option ifname "eth0.1" option proto dhcp |
SSH auf dem Internet-Interface
Dies werden wohl die meisten benötigen, da man so den Router später auch remote administrieren kann:
passwd |
schaltet SSH ein- und telnet aus.
Nun geben wir unter /etc/firewall.user folgendes ein:
#========================== Rulesets ========================================== ### Open ports to WAN ## -- This allows port 22 to be answered by (dropbear on) the router iptables -t nat -A prerouting_wan -p tcp --dport 22 -j ACCEPT iptables -A input_wan -p tcp --dport 22 -j ACCEPT |
Nach einem: /etc/init.d/firewall restart sollte man sich dann auf die öffentliche IP einloggen können.
[stextbox id=“warning“ caption=“Zugriff einschränken“]Da der router quasi das „Tor zum Internet“ ist, sollte man diesen nicht einfach so per SSH login Weltweit verfügbar machen, sondern auf das interne Netzwerk einschränken; remote kann dann immer noch per VPN zugegriffen werden.
Dazu ändert man die obige Regel bei einem 10-er Netzwerk wie folgt ab (bei einer andere Netzadresse muss man das natürlich anpassen!):
### Open ports to WAN ## -- This allows port 22 to be answered by (dropbear on) the router iptables -t nat -A prerouting_wan -p tcp --dport 22 -s 10.0.0.0/8 -j ACCEPT iptables -A input_wan -p tcp --dport 22 -s 10.0.0.0/8 -j ACCEPT |
Dazu kann man intern immer darauf zugreifen, selbst wenn eine VPN-Verbindung mal ausfallen sollte und remote nur noch per VPN.[/stextbox]
Zeit- und Zeitzone einstellen
Zuerst in <I>/etc/config/system</I> den Parameter „option timezone“ auf Mitteleuropäische Zeit (CEST) einstellen:
option timezone CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00 |
Und danach mittels:
date -s YYYY-MM-DD hh:mm[:ss] |
die Zeit richtig Einstellen.
Wireless aktivieren
Unter /etc/config/wireless:
option disabled 1 |
entfernen.
Mit:
option encryption psk option key "passwort" |
Kann man nun noch die Verschlüsselung aktivieren.
Wer noch kein Passwort hat, mit:
pwgen --secret 13 1 |
kann man sich eins generieren lassen.
Firewall-Bug reparieren
Standardmässig blockt OpenWRT 8.09 ICMP- (ping) requests; dies ist unschön und führt zu nur sehr mühsam zu identifizierenden Netzwerk-Problemen.
Deshalb sollte in /etc/config/firewall folgendes eingefügt werden:
# Bugfix: Allow ICMP (<a href="https://dev.openwrt.org/ticket/4546)" target="blank">https://dev.openwrt.org/ticket/4546)</a> config rule option proto ICMP option target ACCEPT |
Paketliste aktualisieren:
opkg update |
[stextbox id=“note“ caption=“Hinweis“]Dies muss in jeder shell session _immer_ einmal gemacht werden, sonst findet opkg die Pakete nicht![/stextbox]
QoS-Scripts
Die QoS-Funktionalität wird zwar nicht unbedingt gebraucht, ist aber trotzdem ganz Nett für einen Router:
ipkg install qos-scripts /etc/init.d/qos start /etc/init.d/qos enable |
DynDNS
DynDNS ist sehr nützlich wenn sich die öffentliche IP-Adresse ab- und zu ändert, wie das bei den meisten Providern der Fall ist.
Dazu muss zuerst bei einem DynDNS-Anbieter ein Account erstellt werden (z.B. unter dyndns.org ), dann in OpenWRT die ddns-scripts installieren:
opkg install ddns-scripts |
und unter /etc/config/ddns die Daten eintragen; diese Konfiguration sollte selbsterklärend sein… 😉
Zur initialisierung muss nun einmal folgendes gemacht werden:
sh . /usr/lib/ddns/dynamic_dns_functions.sh # note the leading period start_daemon_for_all_ddns_sections exit |
Ab jetzt wird sich die IP immer mit der DynDNS-URL synchronisieren, sobald diese ändert.
ntpclient
Um automatische Zeit updates empfangen zu können, installieren wir den ntpclient:
opkg install ntpclient |
openvpn
Um den OpenWRT router als Client für eine VPN-Verbindung einzurichten ist folgendes zu tun:
opkg update opkg install openvpn mkdir /etc/openvpn/ |
[stextbox id=“note“ caption=“Hinweis“]Sollte beim client eine Meldung wegen ungenügendem Speicherplatz kommen, kann man folgendes probieren:
echo 'option force_space' >> /etc/opkg.conf |
– Aus irgendeinem Grund funktioniert das häufig sogar.[/stextbox]
Nun erstellen wir das config file des clients:
client dev tun proto udp port 1194 comp-lzo daemon remote vpnserver resolv-retry infinite #nobind persist-key persist-tun ca /etc/openvpn/ca.crt cert /etc/openvpn/client-1.crt key /etc/openvpn/client-1.key ns-cert-type server verb 3 |
Bitte den ganzen Rest in dem File vorher weg löschen, z.B. durch: „echo > /etc/config/openvpn“)
package openvpn config openvpn custom_config option enable 1 option config /etc/openvpn/client-1.conf |
Und auch hier noch die firewall unter /etc/firewall.user (nur der zusätzliche Teil, evtl. bestehende rules sollten beibehalten werden):
#========================== Rulesets ========================================== ### Open ports to WAN ## -- This allows port 22 to be answered by (dropbear on) the router iptables -t nat -A prerouting_wan -p tcp --dport 22 -j ACCEPT iptables -A input_wan -p tcp --dport 22 -j ACCEPT ### VPN ## -- VPN-Connection settings iptables -t nat -A prerouting_rule -i eth0.1 -p udp --dport 1194 -j ACCEPT iptables -A input_rule -i eth0.1 -p udp --dport 1194 -j ACCEPT iptables -A input_rule -i tun0 -j ACCEPT iptables -A forwarding_rule -i tun0 -j ACCEPT iptables -A forwarding_rule -o tun0 -j ACCEPT iptables -A output_rule -o tun0 -j ACCEPT |
Als letztes definieren wir auf dem client noch, dass der DNS-Server des 10.1.1.0-er Netzwerks verwendet werden soll durch anfügen folgender Zeilen in /etc/config/dhcp:
Unterhalb: „config dhcp lan“
option dhcp-option=6,10.1.1.10 option domain-suffix=home.lan |
und weisen den festen hosts wiederum feste IP-Adressen zu:
# pc01 00:00:00:00:00:00 10.2.1.10 # pc02 00:00:00:00:00:00 10.2.1.20 #usw. |
Nun noch den Client aktivieren und neu starten:
/etc/init.d/openvpn enable /etc/init.d/openvpn start /etc/init.d/dnsmasq restart /etc/init.d/firewall restart |
Related Links
- 8.09RC2 fix to install OpenVPN to WRT54GL: Dieser Forenbeitrag zeigt die Lösung für Speicherplatzprobleme bei neueren OpenWRT Versionen (z.B.: 8.09) auf.
- Der Offizielle OpenWRT install Guide
- dyndns.org: Populärer dynDNS Anbieter
- Howto wie man ein eigens angepasstes OpenWRT-Image erstellen kann
- Einige Tipps, wie man seinen router zusätzlich absichern kann; z.B. mit dem public/private key verfahren
One thought on “Einen OpenWRT router installieren”