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.
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 |
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 |
#### 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:
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 |
#========================== 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 |
### 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 |
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] |
date -s YYYY-MM-DD hh:mm[:ss]
die Zeit richtig Einstellen.
Wireless aktivieren
Unter /etc/config/wireless:
entfernen.
Mit:
option encryption psk
option key "passwort" |
option encryption psk
option key "passwort"
Kann man nun noch die Verschlüsselung aktivieren.
Wer noch kein Passwort hat, mit:
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 |
# 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:
[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 |
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 |
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 |
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:
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/ |
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 |
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 |
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 |
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 |
#========================== 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 |
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. |
# 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 |
/etc/init.d/openvpn enable
/etc/init.d/openvpn start
/etc/init.d/dnsmasq restart
/etc/init.d/firewall restart
Related Links
Related Downloads