dur.ch/
konfiguriert
OpenWRT auf dem WRT54g
Inhaltsverzeichnis
Ziel
Das Ziel ist es, ein Netzwerk aufzubauen mit einem WRT54g mit OpenWRT als zentrales Netzwerkelement. Der Internetzugang erfolgt via ADSL, daher muss der WRT54g PPPoE auf dem WAN-Interface fahren. Das WLAN soll eine vom LAN getrennte DMZ darstellen und durch WPA geschützt sein. Sowohl im LAN als auch im WLAN sollen per DHCP fixe IP-Adressen und Hostnamen vergeben werden.
Vor der Installation
Vor der ersten Installation muss die NVRAM-Variable boot_wait=on gesetzt werden. Wie das geht, ist in der OpenWRT-Dokumentation für verschiedene Original-Firmwareversionen genau beschrieben. Mit der Version 4.20.7 funktioniert das Skript von Uranium235 tadellos.
Eventuell möchte man sich auch noch die Originalfirmware sichern (via Web-Frontend).
Installation
Erstmal besorgt man sich die gewünschte Version von der OpenWRT-Downloadseite. Ausserdem benötigt man einen TFTP-Server, z.B. atftp. Der PC, von dem aus das Firmware-Image installiert werden soll, muss im Netz 192.168.1.0/24 sein, unter Linux am einfachsten zu bewerkstelligen mit ifconfig eth0:1 192.168.1.2 up
. Dann bereitet man auf der Kommandozeile folgenden Befehl vor (noch nicht ausführen):
atftp --trace --option "timeout 0.3" --option "mode octet" --put --local-file openwrt-xxx-x.x-xxx.bin 192.168.1.1
Nun trennt man den Router vom Stromnetz, startet das atftp-Kommando und schaltet den Router wieder ein.
Das Image wird nun auf den Router geladen und dort ins Flash geschrieben (Power-LED blinkt). Anschliessend bootet OpenWRT, was an der leuchtenden DMZ-LED zu erkennen ist. Sobald die DMZ-LED ausgeht, sollte der Router bereit sein.
Konfiguration
Passwort setzen
Ist kein Router-Passwort gesetzt, kann man per telnet oder Web-Interface aus dem LAN zugreifen. Sobald man ein Passwort setzt (per Web-Interface oder mit passwd), wird der Telnet-Daemon ausgeschaltet und der SSHd gestartet.
PPPoE
Die Konfiguration von PPPoE beschränkt sich auf das Setzen der folgenden NVRAM-Variablen:
nvram set wan_ifname=ppp0 nvram set wan_proto=pppoe nvram set ppp_idletime=10 nvram set ppp_mtu=1492 # Nach Angabe des ISP nvram set ppp_passwd=Passwort nvram set ppp_redialperiod=15 nvram set ppp_username=PPP-Loginname nvram set pppoe_ifname=vlan1 nvram commit
System-Zeit
Um die Zeitzone für die Schweiz/Deutschland zu setzen:
echo "CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00" > /etc/TZ
Da der WRT54g keine Uhr besitzt, empfiehlt es sich, die Zeit mit Hilfe des ntpclient automatisch per NTP zu setzen. Dazu genügt ein ipkg install ntpclient
.
WPA
Falls WPA schon in der Original-Firmware konfiguriert wurde, reicht ein ipkg install nas
. Ansonsten kann WPA nach der Installation des nas-Pakets über das Web-Frontend konfiguriert werden.
Wifi-DMZ
Um das WLAN in eine eigene DMZ zu bringen, sind folgende Schritte nötig:
- eth1 aus br0 entfernen
- Einstellungen für Interface wifi setzen
- Firewallregeln für Interface wifi definieren
1. und 2. werden durch das Setzen der folgenden NVRAM-Variablen erreicht:
nvram set lan_ifname=vlan0 nvram set lan_proto=static nvram set lan_ipaddr=192.168.1.1 nvram set lan_netmask=255.255.255.0 nvram set wifi_ifname=eth1 nvram set wifi_proto=static nvram set wifi_ipaddr=192.168.2.1 nvram set wifi_netmask=255.255.255.0 nvram set wan_ifname=vlan1 nvram set wan_proto=dhcp nvram set lan_ifnames=vlan0 eth2 eth3 nvram commit
Die Firewallregeln werden in /etc/init.d/S45firewall angepasst. Eine Möglichkeit sind die folgenden Regeln:
WIFI=$(nvram get wifi_ifname) # Definition des WIFI-Interfaces iptables -A FORWARD -i $LAN -o $WIFI -j ACCEPT # Freier Zugriff vom LAN ins WIFI iptables -A FORWARD -i $WIFI -o $WAN -j ACCEPT # Freier Zugriff vom WIFI ins WAN
Damit ist der Zugriff vom WIFI ins LAN gesperrt, Internet-Zugang jedoch möglich und auch vom LAN ins WIFI ist alles erlaubt.
Statisches DHCP
Beispielkonfiguration /etc/dnsmasq.conf:
domain-needed bogus-priv filterwin2k localise-queries local=/lan/ domain=lan expand-hosts except-interface=ppp0 dhcp-authoritative dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,12h dhcp-range=wlan0,192.168.2.2,static,255.255.255.0,12h dhcp-leasefile=/tmp/dhcp.leases dhcp-host=00:B0:D0:3A:7D:E4,host1,192.168.1.5,infinite dhcp-host=00:B0:D0:3A:7D:C8,host2,192.168.1.6,infinite dhcp-host=00:11:24:9C:15:24i,net:wlan0,host3,192.168.2.4,infinite dhcp-option=wlan0,3,192.168.2.1
Webserver
Um den Webserver von aussen zugänglich zu machen, muss folgende Firewall-Regel hinzugefügt werden:
iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 80 -j ACCEPT iptables -A input_rule -i $WAN -p tcp --dport 80 -j ACCEPT
Dynamisches DNS
Um FreeDNS zu nutzen, reicht es, folgende Zeile in /etc/ppp/ip-up anzuhängen:
wget -q -O NUL http://freedns.afraid.org/dynamic/update.php?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Damit wird bei jedem Start des PPP-Interfaces die IP bei FreeDNS aktualisiert.