dur.ch/

konfiguriert

OpenWRT auf dem WRT54g

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:

  1. eth1 aus br0 entfernen
  2. Einstellungen für Interface wifi setzen
  3. 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.

Meine Werkzeuge
TOOLBOX
LANGUAGES