- Anzeige -

[Fortgeschrittene] OpenWRT hinter TC7200

In dieses Forum kommen Themen über Unitymedia hinein, die nicht in andere Foren passen.

[Fortgeschrittene] OpenWRT hinter TC7200

Beitragvon Kiependraeger » 01.12.2014, 19:11

Moin,
da es im Internetz wirklich wenig vollständige Anleitungen zum Thema "Zweiter Router hinter TC7200 gibt", hier eine kleine Anleitung wie man einen OpenWRT-Router (in meinem Fall ein TP-Link TL-WDR3600 N600) hinter einem TC zum laufen bringt. Ich setze vorraus, dass ihr OpenWRT bereits geflasht habt und im allgeimeinen Basiswissen im Umgang mit Netzwerken habt (DHCP, IPv6, NAT, DNS sollten keine Fremdworte sein). Außerdem solltet ihr wissen, wie man eine SSH-Verbindung zum Router aufbaut und mit der Shell umgeht (Ansonsten kann das ganze in die Hose gehen). Diese Anleitung beschreibt, wie ihr einen IPv6 + IPv4 Zugang mit Firewall (IPv4 mit NAT) erstellen könnt. Ja, Double-NAT ist suboptimal (das wird einem hier ja förmlich fast schon eingeprügelt) aber ich habe keine Lust, dass nach einem Werksreset meine Hostnamen (geht das überhaupt mit dem TC?) verloren gehen und damit auch statische IPs. Aber genug geschwafelt:

IPv4 Zugang
Dies sollte eigentlich schon von Beginn an funktionieren. Wenn ihr wollt, könnt ihr noch den DHCP-Range oder die IPv4 des Routers ändern. Klickt euch einfach durch die Menüs mal durch und googelt was ihr nicht versteht.

IPv6 Zugang
Jetzt wird es interessant: Wie richte ich eine funktionierende Firewall ein, ohne das der IPv6 als Router fungiert(1). Ein Problem ist, dass sich der Präfix der IPv6 Adresse (Also der Teil vor eurem /57 Präfix) dynamisch mit der Zeit ändert. Der Teil hinter dem Präfix (Also der Suffix) bleibt in der Regel gleich (Ausnahme: Privacy Extensions). Dieser wird aus der MAC der Netzwerkkarte generiert, und die ist bekanntlich statisch. IPTables kann allerdings nur Präfixe anständig verwalten. Wir müssen uns also was Einfallen lassen... Ich habe mit einen Cron-Script geschrieben, der alle 60 Sekunden die IPv6 des OpenWRTs überprüft und ggf. die Firewall mit dem neuen Präfix aktualisiert.

(1) Der TC beherrscht weder Prefix-Delegation noch DHCPv6. Ihr seid also drauf angewiesen, euch die IPs von dem Gerät geben zu lassen.

Um euren Router jetzt bereit für IPv6 zu machen, arbeitet bitte folgende Schrit-für-Schritt Anleitung durch (Bis auf den Punkt, wo ihr die /etc/firewall.user bearbeiten sollt. Dort nehmt ihr bitte meine Datei) http://wiki.openwrt.org/doc/howto/ipv6# ... ess_to_lan

Code: Alles auswählen
PREFIX=`cat /etc/ipv6prefix`

# Create IPv6 bridge between WAN and LAN
ebtables -t broute -A BROUTING -i eth0.2 -p ! ipv6 -j DROP
brctl addif br-lan eth0.2

echo "Starting IPv6 firewall..."
# Clear all rules
ip6tables -F
ip6tables -X
ip6tables -t mangle -F
ip6tables -t mangle -X

# unlimited access to loopback
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A OUTPUT -o lo -j ACCEPT

# DROP all incomming traffic
ip6tables -P INPUT DROP
ip6tables -P OUTPUT DROP
ip6tables -P FORWARD DROP

# Allow full outgoing connection but no incomming stuff
ip6tables -A INPUT -i br-lan -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A OUTPUT -o br-lan -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# allow incoming ICMP ping pong stuff
ip6tables -A INPUT -i br-lan -p ipv6-icmp -j ACCEPT
ip6tables -A OUTPUT -o br-lan -p ipv6-icmp -j ACCEPT
ip6tables -A FORWARD -i br-lan -p ipv6-icmp -j ACCEPT

############# add your custom rules below ############
### open IPv6  port 80
#ip6tables -A INPUT -i br-lan -p tcp --destination-port 80 -j ACCEPT
### open IPv6  port 22
#ip6tables -A INPUT -i br-lan -p tcp --destination-port 22 -j ACCEPT
### open IPv6  port 25
#ip6tables -A INPUT -i br-lan -p tcp --destination-port 25 -j ACCEPT
### open IPv6  port 444
#ip6tables -A INPUT -i br-lan -p tcp --destination-port 444 -j ACCEPT
############ End custom rules ################
#### no need to edit below ###
# Forward traffic
ip6tables -A FORWARD -i br-lan -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A FORWARD -i eth0.1 -j ACCEPT
ip6tables -A FORWARD -s fe80::/10 -j ACCEPT
ip6tables -A FORWARD -s $PREFIX:/57 -j ACCEPT

# Redirect all DNS-requests to this device
ip6tables -t nat -I PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
ip6tables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -I PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53


Der Skript sucht also bei jeder Ausführung in der Datei /etc/ipv6prefix nach dem passenden IPv6 Präfix. Damit dieser auch dorthin kommt, erstellt bitte noch folgenden Skript:
Code: Alles auswählen
$vim /etc/updateIPv6Prefix.sh

Code: Alles auswählen
#!/bin/ash
FILE="/etc/ipv6prefix"
IP=$(ifconfig br-lan | grep Global | head -n1 | sed -e's/^.*inet6 addr\: \([^ ]*\)\/.*$/\1/;t;d' | head -n 1)
ARRAYIP=${IP//:/ }
OLDPREFIX=`cat $FILE`

## Get prefix from ipv6 address
prefix=""
i=0
for j in $ARRAYIP
do
  if [ $i -lt 4 ]
  then
    prefix=$prefix$j:
  fi
  i=`expr $i + 1`
done
## Check if prefix has changed
if [ "$OLDPREFIX" != "$prefix" ]
  then
    echo Prefix has been changed!
    ## Write new prefix
    rm $FILE
    touch $FILE
    echo $prefix > $FILE
    ## Refresh firewall
    ash  /etc/init.d/firewall restart
else
    echo No need to change!
fi


Nachdem ihr den Skript gespeichert habt, macht ihn ausführbar:
Code: Alles auswählen
$chmod 755 /etc/updateIPv6Prefix.sh


Nun navigiert über das Webinterface auf folgenden Reiter: System -> Scheduled Tasks und fügt folgende Zeile ein:
Code: Alles auswählen
*/1 * * * * ash /etc/updateIPv6Prefix.sh


Kommentiert außerdem folgenden String in der "/etc/sysctl.conf" aus:
Code: Alles auswählen
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1

umändern in:
Code: Alles auswählen
#net.ipv6.conf.default.forwarding=1
#net.ipv6.conf.all.forwarding=1


Falls noch nicht geschehen, startet das ganze System neu.

Nun solltet ihr eine vernünftig zu konfigurierende Firewall haben. Um Ports freizugeben, könnt ihr jetzt in das Menü Network->Firewall und dann in den Reiter Custom Rules wechseln und dort für jeden Port eine Zeile ergänzen (Einige Beispiele sind ja schon angegeben).

Sollte euch eine bessere Lösung einfallen (außer die Fritzbox bzw Anbieterwechsel), dann schreibt es hierunter. Fehler und Verbesserungsvorschläge sind gerne gesehen.

Viel Erfolg!
Kiependraeger
Kabelneuling
 
Beiträge: 49
Registriert: 03.12.2013, 19:54

Re: [Fortgeschrittene] OpenWRT hinter TC7200

Beitragvon bommi » 04.12.2014, 13:05

Hallo,

seit dem Update meines TC7200 auf Version STD6.02.08 unterstützt das Gerät DHCPv6.

Hinter dem TC7200 betreibe ich aktuell einen Mikrotik Router, dieser erhält per DHCPv6 ein /60 Präfix.
Aus diesem /60 Präfix entnimmt der Router ein /64 Präfix und verteilt es per SLAAC an die angeschlossenen Clients.
Momentan habe ich allerdings noch Probleme mit den Clients dann auch externe IPv6 Adressen zu erreichen, da passt irgendwo etwas noch nicht.

Viele Grüße,
bommi
bommi
Kabelneuling
 
Beiträge: 1
Registriert: 30.06.2014, 11:29

Re: [Fortgeschrittene] OpenWRT hinter TC7200

Beitragvon Leseratte10 » 04.12.2014, 13:47

DHCPv6 mag es unterstützen. Aber auch Prefix Delegation - oder hat sich der Mikrotik das Präfix "selbergebastelt"? Eine 6320/6360 kann auch Prefix Delegation, aber vergisst, das Präfix in die Firewall aufzunehmen, weshalb man eingehende Verbindungen vergessen kann.
Leseratte10
Glasfaserstrecke
 
Beiträge: 1272
Registriert: 07.03.2013, 16:56

Re: [Fortgeschrittene] OpenWRT hinter TC7200

Beitragvon mdorenkamp » 11.12.2014, 22:38

Hallo zusammen,

ich konnte das ganze soweit umsetzen (auf einem RaspberryPI) in Verbindung mit einem UBEE EVW3226 (das neue TC7200 quasi).
Kann ich in OpenWRT das ganze auch so konfigurieren dass mir beim WAN Interface die IPV6 angezeigt wird und nicht beim Bridge Interface?
Wie lege ich dann Firewall-regeln an?

Zur Performance: Ich bekomme ~35mbit durch den RPi durch. Mit stärkerer Hardware (Banana Pi o.ä.) würde es vermutlich schneller gehen.
mdorenkamp
Kabelneuling
 
Beiträge: 3
Registriert: 11.12.2014, 22:34

Re: [Fortgeschrittene] OpenWRT hinter TC7200

Beitragvon Kiependraeger » 12.12.2014, 02:26

Ohne ebtables (also mit Bridge) wird es schwierig. Ich wüsste nicht wie man das mit dem Ding (Ubee was ist das überhaupt für ein Name? Das mir mal einer erklärt wieso die bei solchen Saftverkäufern einkaufen) hinbekommt. Problem ist ja, dass du kein anders Subnet als ein /64 bekommst. Um deinen eigenen Router zu betreiben, braucht der Router ein /57 Subnet. Und das gibt dir der TC/Ubee nicht. Stichwort: Prefix Delegation.
Kiependraeger
Kabelneuling
 
Beiträge: 49
Registriert: 03.12.2013, 19:54

Re: [Fortgeschrittene] OpenWRT hinter TC7200

Beitragvon mdorenkamp » 12.12.2014, 11:52

Hi,

ich habe da noch ein problem festgestellt: die firewall ist mit deinen settings so konfiguriert, dass sämtlicher ipv6 traffic von aussen durchkommt, das ist nicht so gut :) wie kann man das beheben?

Edit: tut er doch nicht, fehler meinerseits.


kann man die gesammte konfiguration evtl auch über das GUI lösen?
mdorenkamp
Kabelneuling
 
Beiträge: 3
Registriert: 11.12.2014, 22:34

Re: [Fortgeschrittene] OpenWRT hinter TC7200

Beitragvon Kiependraeger » 12.12.2014, 20:19

Jag mir mal hier keinen Schrecken ein :D

Also über die Weboberfläche kannst du das ja konfigurieren. Nur halt ohne GUI. Musst halt für jeden Port ne eigene Zeile einfügen. Aber das sollte ja nicht so schwer sein.
Kiependraeger
Kabelneuling
 
Beiträge: 49
Registriert: 03.12.2013, 19:54

Re: [Fortgeschrittene] OpenWRT hinter TC7200

Beitragvon adn77 » 14.01.2015, 01:55

Vielen Dank für die Anregung mit ebtables...

Allerdings suche ich immer noch jemanden, der die IPv6 Routing Variante mit Barrier Breaker oder Trunk (Chaos Calmer) zum laufen gebracht hat.
adn77
Kabelneuling
 
Beiträge: 10
Registriert: 15.05.2014, 19:17

Re: [Fortgeschrittene] OpenWRT hinter TC7200

Beitragvon adn77 » 02.02.2015, 20:37

Die Idee nur IPv6 zu bridgen, ist ziemlich genial. Alle anderen Versuche mit OpenWRT BB ohne ebtables und Bridge haben bei mir nicht zum Erfolg geführt...

Kann ja eigentlich auch nicht funktionieren, da beim Routing klar sein muss auf welchem Interface das Prefix weitergeroutet werden soll - blöd, wenn das Neighbor Discovery dann Prefixe zu kennen glaubt, die es auf dem Routing-Zweig garnicht gibt...

Also ich wollte nochmal Feedback geben, dass die verlinkte OpenWRT Anleitung sehr wohl auch noch auf Barrier Breaker läuft (obwohl der Anfang des Wiki-Eintrag sich nur auf AA bezieht).

Für alle, die grafisch konfigurieren wollen, mein WAN Interface steht auf DHCP, mein LAN Interface hat "IPv6 assignment length" = disabled, ebenso alle IPv6 DHCP Server Settings.

Die /etc/firewall.user lässt sich unter Network -> Firewall -> Custom Rules per UI editieren.
Am Anfang fehlt evtl noch ein:
Code: Alles auswählen
ebtables -F
ebtables -t broute -F

(falls das Script mehrfach aufgerufen werden sollte)

Mein Prefix habe ich vorerst fest eingetragen, da es sich sehr selten zu ändern scheint (KabelBW).

Muss mich nun erstmal an die schöne neue Welt der öffentlichen IP(v6) Adressen gewöhnen... Port 80 generell aufzumachen wäre wohl mit Party-Garantie mit meiner Homeautomation-Beleuchtung :D
Hat jemand da schon 'was praktikables, außer alle internen IPv6 Adressen bei Dyndns zu registrieren? OpenWRT kennt die Geräte ja nun leider nicht mehr...

Nochmals vielen Dank für die Anregung! Evtl. sollte ma den Thread in die "Internet und Telefon" Abteilung verschieben - ich such mir immer einen Wolf... :zwinker:
adn77
Kabelneuling
 
Beiträge: 10
Registriert: 15.05.2014, 19:17

Re: [Fortgeschrittene] OpenWRT hinter TC7200

Beitragvon adn77 » 07.02.2015, 00:08

Da ich natürlich auch alles gern per GUI mache, hier noch ein paar Tips für OpenWRT Barrier Breaker. (Nur die sysctl.conf muss auf der Kommandozeile angepasst werden):

    luci-proto-ipv6 installieren
    odhcp* deinstallieren
    LAN-Interface: "IPv6 assignment length" = disabled

Die Firewall-Chains Default Targets ( Network -> Firewall -> General Settings )sollten auf "Input - reject", "Output - accept", "Forward - reject" stehen.
Die Firewall-Zonen ( Network -> Firewall -> Zones ) müssen auf "IPv4 only" umgestellt werden ( Edit -> Advanced Settings ).

Unter Network -> Firewall -> Traffic Rules gibt es schon einige Beschränkungen für IPv6-ICMP Nachrichten. Da IPv6 maßgeblich von ICMP Gebrauch macht, ist es wichtig, die Standard-Regeln etwas zu erweitern. Folgende ICMP-Nachrichten sollten weitergeleitet werden ("Any Zone - Any Zone(Forward)" und "Any Zone - Device(Input)"):
http://www.ietf.org/rfc/rfc4890.txt
    echo-reply
    echo-request
    destination-unreachable
    packet-too-big
    time-exceeded
    bad-header
    parameter-problem
    neighbour-solicitation
    neighbour-advertisement
    router-solicitation
    router-advertisement

Damit die Autoconfiguration funktioniert habe ich noch eine zusätzliche Regel, die alle ICMP Nachrichten-Typen
    130/0
    131/0
    132/0
    143/0
von den LocalLink Adressen fe80::/10 zu den MultiCast Adressen ff00::/8 erlauben.

Nun kann man unter Network -> Firewall -> Custom Rules das spezielle Bridge/Firewall Setup vornehmen:

Code: Alles auswählen
if [ -f /tmp/ipv6prefix ] ; then
   PREFIX=`cat /tmp/ipv6prefix`
else
   PREFIX=`ifconfig br-lan | awk '/Global/ { print $3; }' | sed 's/[a-z0-9]*:[a-z0-9]*:[a-z0-9]*:[a-z0-9]*\/.*$//g'`
fi

ebtables -F
ebtables -t broute -F
ebtables -t broute -A BROUTING -i eth0.2 -p ! ipv6 -j DROP
brctl addif br-lan eth0.2

ip6tables -I FORWARD -s $PREFIX:/57 -j ACCEPT

# DNS6 Portumleitung auf den OpenWRT - braucht noch ein IPv6 faehigen DNS-Responder...
ip6tables -t nat -I PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
ip6tables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53

### open IPv6  port 80/22 on NAS
ip6tables -I FORWARD -i br-lan -p tcp -d nas-ipv6adresse.dyndns.org --destination-port 80 -j ACCEPT
ip6tables -I FORWARD -i br-lan -p tcp -d nas-ipv6adresse.dyndns.org --destination-port 22 -j ACCEPT


Als letzten Schritt fügt man unter System -> Scheduled Tasks noch eine Zeile zur IP-Prefix Überprüfung ein:
Code: Alles auswählen
SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin
#Minuten #Stunden #Tag #Monat #Wochentag #Befehl
*/5 *  * * * PREF=`ifconfig br-lan | awk '/Global/ { print $3; }' | sed 's/[a-z0-9]*:[a-z0-9]*:[a-z0-9]*:[a-z0-9]*\/.*$//g'` ; if [ "$PREF" != "`cat /tmp/ipv6prefix`" ] ; then echo $PREFIX > /tmp/ipv6prefix ; /etc/init.d/firewall restart ; fi


Vor dem Neustart noch auf der Kommandozeile die /etc/sysctl.conf anpassen:
Code: Alles auswählen
net.ipv6.conf.default.forwarding=0
net.ipv6.conf.all.forwarding=0

net.bridge.bridge-nf-call-arptables=0
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=0
adn77
Kabelneuling
 
Beiträge: 10
Registriert: 15.05.2014, 19:17


Zurück zu Unitymedia allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 38 Gäste