home
erste Version am 20.07.2014
letzte Änderung am 18.11.2014

Router-Konfiguration für Gateway-VM (v2)


Ziel ist eine Router-Konfiguration, bei der sowohl die WLAN-Clients als auch die an den LAN-Ports angeschlossenen Systeme ihre IP von einem externen DHCP-Server erhalten und sämtlichen Verkehr darüber in einen VPN-Tunnel leiten - also wird der Router sozusagen in eine Ethernet-WLAN-Bridge umfunktioniert.

Eine Erweiterung ist hier dokumentiert.
Allerdings wird dort primär die Datei /etc/config/network verändert - der Rest steht auf dieser Seite.


Inhalt
  1. Anmerkung zum WDR4300
  2. Failsafe
  3. Änderung der Router-Konfiguration
  4. Sicherung des Routers
  5. Screenshots Barrier Breaker


Anmerkung zum WDR4300

Meine beiden "TP-Link TL-WDR4300 Ver 1.6" funktionieren zwar irgendwie mit "OpenWrt Attitude Adjustment 12.09 r36088", liefern damit aber zuverlässig Authentifizierungs-Fehler, wenn sich mehr als eine Wand zwischen Router und WLAN-Client befindet. Das war so störend, dass ich deswegen sogar -schweren Herzens- meinen "produktiven" WDR4300 wieder zurück auf die Original-Firmware geflashed hatte.
Der Wechsel auf "OpenWrt Barrier Breaker r41584" (RC1) hat die Authentifizierungs-Probleme beseitigt. Nun kann man sich auch dann noch mit dem WDR4300 via WLAN verbinden bzw. bleibt verbunden, wenn der Empfang nicht mehr ganz so toll ist.


Failsafe

Die geplanten Änderungen an der Router-Konfiguration können bei falscher Ausführung durchaus dazu führen, dass der Router nicht mehr erreichbar ist.
Mich hat es zwei Tage und drei Failsafe-Wiederherstellungen samt "firstboot" gekostet, die Prozedur für einen WDR4300 mit Attitude Adjustment herauszufinden.
Der anschließende Wechsel auf Barrier Breaker war zwar schnell erledigt, trotzdem hat es dann doch noch gut zwei Stunden mit drei weiteren Failsafe-Wiederherstellungen samt "firstboot" gekostet, bis der WDR4300 wieder stumpfe Ethernet-Bridge war. Letztendlich musste nur zusätzlich noch odhcpd disabled werden.

Beim unter http://wiki.openwrt.org/de/doc/howto/generic.failsafe dokumentierten Failsafe via Hardware Taster ist das Keyword telnet wichtig!
Es ist ja nicht so, dass es da nicht stehen würde. Man muss es nur auch so machen.
Nimmt man im Tran wie sonst immer ssh, dann wird das nix...es klappt nur mit telnet.
Diese ssh-Gewohnheit hat mich alleine einen halben Tag gekostet.
Deshalb für Failsafe telnet nehmen! 
telnet !
telnet !
telnet !


Änderung der Router-Konfiguration


Die notwendigen Änderungen sind eigentlich sehr trivial.
Vielleicht könnte man sie sogar via WebGUI vornehmen - die Gefahr dabei ist nur, dass an mehreren Stellen geändert werden muß, die Aktivierung der Änderungen aber erst dann erfolgen darf, wenn alle Änderungen eingetragen sind.
Daher lieber alles in einer ssh-Session machen.

Es müssen nur ein paar Dienste abgeschaltet, der Router-interne Switch flach gemacht und das WAN-Interface gelöscht werden.

Aber erstmal ein paar Referenzen:

Folgende Dienste sind abzuschalten:
der DCHP und DNS-Server dnsmasq:
/etc/init.d/dnsmasq disable
/etc/init.d/dnsmasq stop


die Firewall firewall:
/etc/init.d/firewall disable
/etc/init.d/firewall stop


und bei Barrier Breaker RC1 auch noch der IPv6-DHCP-Server odhcpd:
/etc/init.d/odhcpd disable
/etc/init.d/odhcpd stop


und mittels:
nano /etc/config/network
in /etc/config/network das LAN-Interface auf DHCP umstellen sowie alle Switch-Ports dem VLAN1 zuweisen:
config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

#config globals 'globals'
#    option ula_prefix 'fde9:6866:786a::/48'

config interface 'lan'
    option ifname 'eth0.1'
#    option force_link '1'
    option type 'bridge'
    option proto 'dhcp'
#    option proto 'static'
#    option ipaddr '192.168.1.1'
#    option netmask '255.255.255.0'
#    option ip6assign '60'

#config interface 'wan'
#    option ifname 'eth0.2'
#    option proto 'dhcp'

#config interface 'wan6'
#    option ifname '@wan'
#    option proto 'dhcpv6'

config switch
    option name 'switch0'
    option reset '1'
    option enable_vlan '1'

config switch_vlan
    option device 'switch0'
    option vlan '1'
    option ports '0t 1 2 3 4 5'

#config switch_vlan
#    option device 'switch0'
#    option vlan '2'
#    option ports '0t 1'
Bei Attitude Adjustment heißt der Switch "eth0" und dort es sähe dann so aus (wenn gelöscht wird, statt auszukommentieren):
config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config interface 'lan'
    option ifname 'eth0.1'
    option type 'bridge'
    option proto 'dhcp'

config switch
    option name 'eth0'
    option reset '1'
    option enable_vlan '1'

config switch_vlan
    option device 'eth0'
    option vlan '1'
    option ports '0t 1 2 3 4 5'
Und auf einem TP-Link TL-WR1043ND mit Attitude Adjustment sieht /etc/config/network folgendermaßen aus:
config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'lan'
        option ifname 'eth0.1'
        option type 'bridge'
        option proto 'dhcp'

config switch
        option name 'rtl8366rb'
        option reset '1'
        option enable_vlan '1'
        option enable_vlan4k '1'

config switch_vlan
        option device 'rtl8366rb'
        option vlan '1'
        option ports '0 1 2 3 4 5t'


Aus kosmetischen Gründen kann man noch in /etc/config/firewall alles außer:
config defaults
        option syn_flood        1
        option input            ACCEPT
        option output           ACCEPT
        option forward          ACCEPT

löschen oder auskommentieren. Dadurch werden dann im WebGUI keine Firewall-Regeln für die abgeschaltete Firewall angezeigt.


Wenn alle Änderungen vorgenommen wurden:
reboot


Sicherung des Routers

Damit das WebGUI-Passwort für den OpenWrt-Router nicht unverschlüsselt durch die Luft fliegt, falls man sich mal via Tablet am Router anmelden möchte, ist das OpenWrt-WebGUI auf https-only umzustellen.

Referenzen:

Bei Attitude Adjustment muß die https-Unterstützung erstmal installiert werden.
Dazu in /etc/config/uhttpd in der Zeile
option commonname       OpenWrt
ggf. das "OpenWrt" ändern (z.B. auf FreifunkWees01a).
Danach:
opkg install uhttpd-mod-tls
opkg install luci-ssl

reboot

Wenn der Router wieder erreichbar ist, direkt den https-Zugang testen.
Bei Barrier Breaker kann man direkt bei diesem Schritt einsteigen.
Erst wenn das geklappt hat, sollten in der Datei /etc/config/uhttpd die Zeilen für http bzw. Port 80 auskommentiert (und ggf. 443 aktiviert) werden:
#       list listen_http        0.0.0.0:80
#       list listen_http        [::]:80
        list listen_https       0.0.0.0:443
        list listen_https       [::]:443
oder auch als:
#       list listen_http        '0.0.0.0:80'
#       list listen_http        '[::]:80'
        list listen_https       '0.0.0.0:443'
        list listen_https       '[::]:443'

Aktivieren mit:
/etc/init.d/uhttpd stop
/etc/init.d/uhttpd start


Und nun nochmal testen, ob der Zugang via http auch wie gewünscht auf einen Fehler läuft.



Als nächsten Schritt kann man noch den Zugang via ssh insofern abschotten, dass der Logon mittels Passwort verboten wird.
Dazu wird im WebGUI unter System/Administration mindestens ein SSH-Key unter SSH-Keys eingefügt und mittels "Save & Apply" aktiviert.

Nach Test des ssh-Zugangs ohne Passwort ist im WebGUI unter System/Administration "Allow SSH password authentification" abzuschalten.
Ebenfalls kann (eigentlich unnötig, aber doppelt hält besser) auch noch "Allow the root user to login with password" abgeschaltet werden.



Vorsichtshalber kann man auf dem Router mit
netstat -nlp
noch prüfen, welche Ports offen sind.

Auf meinem WDR4300 mit Barrier Breaker siehts so aus:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      804/dropbear
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      840/uhttpd
tcp        0      0 :::22                   :::*                    LISTEN      804/dropbear
tcp        0      0 :::443                  :::*                    LISTEN      840/uhttpd
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node PID/Program name    Path
unix  2      [ ACC ]     STREAM     LISTENING        302 457/ubusd           /var/run/ubus.sock

Also sind ssh (22) und https (443) für IPv4 und IPv6 offen.

Der WR1043ND mit Attitude Adjustment hat kein IPv6:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      998/dropbear
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      1012/uhttpd
netstat: /proc/net/tcp6: No such file or directory
netstat: /proc/net/udp6: No such file or directory
netstat: /proc/net/raw6: No such file or directory
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node PID/Program name    Path
unix  2      [ ACC ]     STREAM     LISTENING        707 595/ubusd           /var/run/ubus.sock

Wenn ein hinreichend langes Passwort für das WebGUI eingestellt wurde, dürfte es ziemlich schwer werden, sich unberechtigt Zugang zu verschaffen.


Screenshots Barrier Breaker

Anbei noch ein paar Screenshots des Router-WebGUIs nach den Änderungen.

Es sind nicht mehr alle Dienste aktiviert bzw. auf Autostart unter System / Startup:
Autostart

Die Default-Route läuft zur IP der Gateway-VM unter Status / Routes:
Routes

Unter Network / Switch gibt es nur noch ein VLAN:
flacher Switch

Und unter Network / Interfaces nur noch ein Interface:
Interfaces

Der ssh-Zugang mit Passwort ist abgeschaltet unter System / Administration:
ssh

Wurde /etc/config/firewall bereinigt, siehts auch unter Status / Firewall sauber aus:
Firewall 1

und unter Network / Firewall / General Settings bzw. Traffic Rules ebenso:
Firewall 2


Firewall 3