Howto: get dns via client (on extra router-Interface on router itself) (v6 solved)

Fortsetzung der Diskussion von Batman v14 zu v15 upgrade - gluon package:

Wie bekomme ich das hin das ein neues Interface auf einem Router selbst sich als Client einloggt (das geht) und dann DNS und v6 Routen bekommt.
Irgendwo versteh ich das nicht, v4 ist alles kein Problem …

[ edit: v6 ging via echo 2 >> /proc/sys/net/ipv6/conf/update/accept_ra , wie oben schonmal erwähnt ]

https://raw.githubusercontent.com/viisauksena/gluon-v14tov15-helper/master/files/lib/gluon/v14tov15-helper/v14tov15-helper

Kernbestandteil

# check if freifunk as we know it is nearby
ffssid=$(uci get wireless.client_radio0.ssid)
: ${ffssid:=freiburg.freifunk.net} # if for whatever reason frssid is NULL
many=$(iwinfo phy0 scan |grep $ffssid | wc -l)

# connect to freifunk and get dhcp lease
if [ $many != 0 ]; then
	# generate foo mac, and alternative if failing
        foomac=42:42:$(iwinfo | grep Acc |head -n1 |grep -oE '[^ ]+$' |cut -d":" -f 3-6)
	: ${foomac:=42:42:23:$(date +%H:%M:%S)}
	# make hw if ready
	iw phy0 interface add update type managed
        ifconfig update hw ether $foomac
        ifconfig update up
	# install new if in /etc/config/wireless
	uci set wireless.update_radio0=wifi-iface
	uci set wireless.update_radio0.ifname=update
	uci set wireless.update_radio0.network=update
	uci set wireless.update_radio0.disabled=0
	uci set wireless.update_radio0.device=radio0
	uci set wireless.update_radio0.mode=sta
	uci set wireless.update_radio0.macaddr=$foomac
	uci set wireless.update_radio0.ssid=$ffssid
	uci commit
	# restart wifi and get ip 
	wifi; sleep 2;
        # nachtrag [edit]
        echo 2 >> /proc/sys/net/ipv6/conf/update/accept_ra
	udhcpc -B -b -i update
fi

if [ $(cat /etc/hosts|grep openfreiburg|wc -l) = 0 ]; then
	echo 178.254.39.111 openfreiburg.de >> /etc/hosts
fi

# here comes the funny part, regular
# also means update server MUST be reachable as client
autoupdater -f

# if autoupdater and first checks above run correct you should never reach this point
# better safe than sorry - taking new IF down and remove wireless entrys
# could be while download and/or manifest-signing or checksum check fails
# fails also if device memory is/was_ever full : i/o error
iw update del
uci delete wireless.update_radio0
uci commit

Wir haben das v14v15 update skript fertig und laufend, es hat noch einen Schönheitsfehler. Es trägt einen update server der im Internet erreichbar ist via v4 in die /etc/hosts ein. Das ist nicht schön , da weder dns, noch v6 nativ funktionieren.

Im Grunde funktioniert das aber prächtig,

Es ist NICHT korrekt das 4 IF nicht gehen, auf den 841ern funktiniert das prima.

1 Like

Ich verstehe nach wie vor nicht, was das mit Batman14/Batman15 zu tun hat.

Worauf bezieht sich das? Auf die tsc (shell) oder auf die IPv4-Interfaces?

BTW: Es wäre praktisch, wenn man es vermeiden könnte, jedes Gluon-Package zu forken, weil irgendwelche Community-Instellungen im Source stehen (hier: freifunk-ssid „non-‚Freifunk‘“) statt z.B. in der Site.conf configurierbar gemacht werden.

nun, ich hatte gestern ein paar Testläufe gemacht …
und dabei lief das Skript hervorragend durch
ibss mesh AP und Managed
(das was man bei iwinfo als wireless IF eben bekommt, siehste doch aber im Skript was ich da mach an IF)

ich habe sehr oft gehört das „ginge nicht“ - was schlicht falsch ist - was meist auch mit Verweis auf iw phy0 info belegt wurde. Dann kam sowas wie, ja das steht da das der das kann - aber es funktioniere nicht. Vielleicht hab ich das aber auch oft falsch verstanden/interpretiert - oder allesamt haben wir das nicht richtig durchblickt…

das Skript ist für uns für den v14v15 wechsel, daher heisst das so. Das es auch bei anderen Baustellen hilfreich ist - ist netter side effect.Konkret bei diesem Skript hab ich versucht das generisch zu machen, der viel „dramatischere“ Freiburg-hook is dies.

Ich sehe deinen Punkt das generischer „schöner“ wäre, ich baue FW für Freiburg und da scheint mir das untergeordnet. Aber das solltest du ja auch sehen können … es steht dir frei entweder einen eigene Fork zu machen - oder dabei zu helfen das generischer zu bekommen, das gilt z.b. auch für das gluon-banner modul - wo es dir noch mehr aufstossen müsste - die vielen schönen kleinen helper scripte mit Freiburg Freifunk /etc/profile foo verschandelt …

ich hab bei beiden je in Richtung gluon nachgefragt ob der Wunsch für voll generische Pakete besteht … und da kam eher sowas wie „maybe,but…“

2 Likes

was fehlt und das mit dem dns richten könnte wäre odhcpc (statt udhcpc für v4)
… hab aber gerade keine Zeit das nochmal zu testen …

das skript so wie es im Git ist funktioniert. Unschön ist der /etc/hosts eintrag
oder ein Eintrag in die Resolv.conf von Hand.

@adorfer : vielleicht wollt ihr euer Eulenfunk Package aktualisieren … packages/gluon-banner/files/usr/bin at master · eulenfunk/packages · GitHub
und vor allem das hier diskutierte packages/migration-helper at master · eulenfunk/packages · GitHub
(die von euch benutzte Version wird nicht funktionieren)

Nochmal erneuert Anfrage/Angebot : gerne arbeite ich zusammen um das runder und schöner zu gestalten damit das generischer würde …
vermutlich würde es ein eigenes ssh-helper package geben, dann kann das banner package durchaus lokal gestaltet sein - oder man findet einen Weg die lokalen Anteile geschickt da einzubauen.
und der migration-helper (oder v14v15helper) ist nicht weit weg von einem generischem Paket. lediglich DNS müsste geklärt werden und was passiert bei NICHT-ATH9K geräten … den kleinen Tot das Fallback auf SSID Freifunk (oder was auch immer most common ist) sterb ich dann gerne - bzw. mach dazu einen eigenen extra branch.

Wir benutzen die nicht, weil sie nicht funktioniert.
Geforkt hatten wir das, um die Settings anpassen zu können, die im Code stehen.
Derzeit komme ich nicht dazu, das zu mergen.

Macht ja nix, dann ists halt nen hinweis das es so ist. :slight_smile: