Erweiterte Konfiguration: Unterschied zwischen den Versionen
Siracs (Diskussion | Beiträge) |
Rubo77 (Diskussion | Beiträge) |
||
(18 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 4: | Zeile 4: | ||
Nun willst du wahrscheinlich wieder darauf zugreifen. Vielleicht einen Parameter ändern oder allgemein nur mal gucken. | Nun willst du wahrscheinlich wieder darauf zugreifen. Vielleicht einen Parameter ändern oder allgemein nur mal gucken. | ||
− | Aus Platzgründen hat das Standard-Image leider keine weitergehende Weboberfläche. | + | Aus Platzgründen hat das Standard-Image leider keine weitergehende Weboberfläche. Viele der kleinen Router haben nicht genügend Flash-Ram, daher ist das Image möglichst klein gehalten. Konfiguration außerhalb des [[Configmode]] ist also nur über die SSH möglich. |
== Wo ist er denn? == | == Wo ist er denn? == | ||
− | Wenn der Router das erste mal konfiguriert wurde, deaktiviert er den Einrichtungsassistenten auf 192.168.1.1 auf dem LAN-Interface und auch die IP auf dem Interface. | + | Wenn der Router das erste mal konfiguriert wurde, deaktiviert er den Einrichtungsassistenten auf 192.168.1.1 auf dem LAN-Interface (die gelben Ports bei einem TP-Link) und auch die IP auf dem Interface. |
Im normalen Betrieb ist der Freifunk-Router mit dem WAN-Interface (blau bei TP-Link Routern) am Uplink angeschlossen. | Im normalen Betrieb ist der Freifunk-Router mit dem WAN-Interface (blau bei TP-Link Routern) am Uplink angeschlossen. | ||
Zeile 16: | Zeile 16: | ||
=== WAN IPv6 === | === WAN IPv6 === | ||
− | Die IPv6 Adresse für das WAN-Interface bekommt man | + | Die IPv6 Adresse für das WAN-Interface bekommt man heraus, indem man sich per SSH auf dem Freifunk-Router anmeldet oder mit einem [[IPv6 broadcast]]. Es gibt aber auch noch weitere Möglichkeiten sich auf den Router anzumelden, als über dieses Interface. |
+ | |||
+ | Wenn man denn erstmal per SSH angemeldet ist, heißt das Interface übrigends ''br-wan''. | ||
=== WAN IPv4 === | === WAN IPv4 === | ||
− | Der Freifunkrouter bezieht seine IPv4-Adresse per DHCP. Du wirfst also einen Blick in die Liste der IP, die dein Router/DHCP-Server verteilt hat. | + | Der Freifunkrouter bezieht seine IPv4-Adresse für den Uplink per DHCP. Du wirfst also einen Blick in die Liste der IP, die dein Router/DHCP-Server verteilt hat. |
Dort solltest du dann deinen Freifunk-Router finden und hast somit seine aktuelle IP-Adressse mit der du dich auf dem Gerät per SSH anmelden kannst. | Dort solltest du dann deinen Freifunk-Router finden und hast somit seine aktuelle IP-Adressse mit der du dich auf dem Gerät per SSH anmelden kannst. | ||
Zeile 32: | Zeile 34: | ||
=== LAN === | === LAN === | ||
− | Die IPv6 Adresse bekommst du über [http://alfred.freifunk.in-kiel.de/ Alfred JSON Status Knotenliste] heraus. Oder per ssh und dann mit dem Befehl ifconfig. br-client heisst das Interface, nach dem du suchst. | + | Die IPv6 Adresse bekommst du über [http://alfred.freifunk.in-kiel.de/ Alfred JSON Status Knotenliste] heraus. Oder per ssh und dann mit dem Befehl ifconfig. ''br-client'' heisst das Interface, nach dem du suchst. |
IPv4 gibt es nur über die local-node Konfiguration. | IPv4 gibt es nur über die local-node Konfiguration. | ||
Zeile 105: | Zeile 107: | ||
Dort dann das alte Repository auskommentieren und das von OpenWRT einfügen. | Dort dann das alte Repository auskommentieren und das von OpenWRT einfügen. | ||
<pre> | <pre> | ||
− | # src/gz attitude_adjustment http://opkg.services.ffki/ | + | # src/gz attitude_adjustment http://opkg.services.ffki/chaos_calmer/15.05.1/ar71xx/generic/packages/ |
− | src/gz attitude_adjustment http://downloads.openwrt.org/ | + | src/gz attitude_adjustment http://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/packages/ |
dest root / | dest root / | ||
dest ram /tmp | dest ram /tmp | ||
Zeile 130: | Zeile 132: | ||
<b>WICHTIG: Das ist nur eine Notlösung! Sowie das Freifunk-Repository wieder online ist, sollte man dieses Setting wieder ändern.</b> | <b>WICHTIG: Das ist nur eine Notlösung! Sowie das Freifunk-Repository wieder online ist, sollte man dieses Setting wieder ändern.</b> | ||
+ | |||
+ | |||
+ | === Der Editor [http://joe-editor.sourceforge.net/ joe] === | ||
+ | Dies ist mein Lieblingseditor auf der Konsole. Er kann deutlich mehr als [http://www.nano-editor.org/ nano], ist nicht so kryptisch wie [http://en.wikipedia.org/wiki/Vi vi] (and in the middle of evil there is vi) und nicht so groß und komplex wie [https://www.gnu.org/software/emacs/ emacs] (eight megabytes and continuously swapping). | ||
+ | |||
+ | <pre> | ||
+ | opkg install joe | ||
+ | </pre> | ||
+ | |||
+ | Zur Konfiguration braucht es noch zwei Dateien, die sich aber nicht im OpenWRT-Repository befinden. | ||
+ | |||
+ | Bedauerlicherweise kann man in dieses Wiki nur Icons und PDFs hochladen und nicht diese beiden Dateien. Daher hab ich dafuer eigene Wiki-Seiten erstellt. | ||
+ | |||
+ | Entweder als [[joerc|/root/.joerc]] als [[joerc|/etc/joe/joerc]] | ||
+ | |||
+ | Entweder als [[ftyperc|/root/.ftyperc]] oder als [[ftyperc|/etc/joe/ftyperc]] | ||
+ | |||
+ | Die beiden Dateien entstammen ursprünglich aus einer Linux-Ubuntu. In der Datei joerc muß man den Ort der ftyperc anpassen, wenn man die beiden Dateien ins Verzeichnis "/etc/joe/" legt. Ich hab sie unter /root liegen. | ||
+ | |||
+ | In der ftyperc habe ich für allgemeine Dateien folgende Anpassungen vorgenommen: | ||
+ | <pre> | ||
+ | * | ||
+ | --wordwrap | ||
+ | -nobackups | ||
+ | -asis | ||
+ | </pre> | ||
+ | |||
+ | <tt>*</tt> Der Stern steht als Platzhalter, für jede Datei, deren Endung nicht weiter unten in der Datei ftyperc angegeben wird. | ||
+ | |||
+ | <tt>--wordwrap</tt> Verhindert den automatischen Wordwarp. Bei Texten hilfreich. Bei Configdateien eher nicht. | ||
+ | |||
+ | <tt>-nobackups</tt> Verhindert die automatischen Backups. Speziell in Verzeichnissen mit init-Skripten kann das sonst gruselig werden. | ||
+ | |||
+ | <tt>-asis</tt> Sorgt dafür das die Charaktercodes über 127 genauso behandelt werden, wie sie sind und nicht irgendwie interpretiert werden. Andernfalls kann man eine Menge Spass mit Backticks und anderen Sonderzeichen haben. | ||
+ | |||
+ | |||
+ | === https aktivieren === | ||
+ | Ums kurz zu machen: Funktioniert aktuell nicht! | ||
+ | |||
+ | Theoretisch kann der uhttpd das. | ||
+ | |||
+ | Hier die Schritte, die eigentlich zum Ziel führen sollten: | ||
+ | <pre> | ||
+ | opkg install uhttpd-mod-tls | ||
+ | opkg install px5g | ||
+ | </pre> | ||
+ | |||
+ | Änderungen in der: /etc/config/uhttpd | ||
+ | <pre> | ||
+ | config uhttpd 'main' | ||
+ | option rfc1918_filter '1' | ||
+ | option max_requests '3' | ||
+ | option cert '/etc/uhttpd.crt' | ||
+ | option key '/etc/uhttpd.key' | ||
+ | option cgi_prefix '/cgi-bin' | ||
+ | option script_timeout '60' | ||
+ | option network_timeout '30' | ||
+ | option tcp_keepalive '1' | ||
+ | option home '/lib/gluon/status-page/www' | ||
+ | list listen_http '0.0.0.0:80' | ||
+ | list listen_http '[::]:80' | ||
+ | list listen_https '0.0.0.0:443' | ||
+ | list listen_https '[::]:443' | ||
+ | </pre> | ||
+ | |||
+ | Einträge für die /etc/config/firewall | ||
+ | <pre> | ||
+ | config rule 'wan_https' | ||
+ | option dest_port '443' | ||
+ | option src 'wan' | ||
+ | option name 'wan_http' | ||
+ | option target 'ACCEPT' | ||
+ | option proto 'tcp' | ||
+ | </pre> | ||
+ | |||
+ | Die Freiwall neu starten: | ||
+ | <pre> | ||
+ | /etc/init.d/firewall restart | ||
+ | </pre> | ||
+ | |||
+ | Und dann noch den uhttpd neu starten: | ||
+ | <pre> | ||
+ | /etc/init.d/uhttpd restart | ||
+ | </pre> | ||
+ | |||
+ | Greift man nun per https auf den Freifunk-Router zu, bekommt man eine Fehlermeldung, das die byte-Länge des Zertifikats zu lang sei. | ||
+ | |||
+ | Testweise hatte ich die Zertifikate per openssl auf einem Linux-Server neu erzeugt und auf den Router kopiert. Das hat das Problem aber nicht gelöst. | ||
+ | |||
+ | == WAN IPv6 statt LAN IPv6 für den Link in der Alfred JSON Status Knotenliste == | ||
+ | Wenn man nicht auf seinem Node eingelogt ist, dann funktioniert der Link nicht, den man in der Alfred JSON Status Knotenliste für den Freifunk-Router hat. | ||
+ | |||
+ | Theoretisch könnte ich mein lokales Netzwerk in das Freifunk-Netzwerk einbinden. Aktuell möchte ich das aber nicht. | ||
+ | |||
+ | Statt dessen möchte ich an der Stelle der LAN IPv6-Adresse die des WAN-Interfaces haben. Da es eine globale IPv6 ist, sollte damit die Statusseite des Freifunk-Routers auch von extern erreichbar sein. Vorrausgesetzt das meine Firewall diese Adresse erreichbar macht. | ||
+ | |||
+ | Die Daten, die an [http://alfred.freifunk.in-kiel.de/ Alfred] geschickt werden, werden von einem Lua-Skript erzeugt: | ||
+ | <pre> | ||
+ | /lib/gluon/announce/announce.lua nodeinfo | ||
+ | </pre> | ||
+ | |||
+ | Für die Adressen ist folgendes Skript zuständig: | ||
+ | <pre> | ||
+ | /lib/gluon/announce/nodeinfo.d/network/addresses | ||
+ | </pre> | ||
+ | |||
+ | Um die Adresse des WAN Interfaces zu bekommen muß man lediglich das Interface ändern. Das Originale Skript ändert man "br-client" | ||
+ | <pre> | ||
+ | local ip = util.exec('ip -o -6 addr show dev br-client') | ||
+ | |||
+ | local addresses = {} | ||
+ | for _, line in ipairs(util.split(ip)) do | ||
+ | table.insert(addresses, line:match('inet6 ([%x:]+)/')) | ||
+ | end | ||
+ | |||
+ | return addresses | ||
+ | </pre> | ||
+ | |||
+ | zum Interface "br-wan": | ||
+ | <pre> | ||
+ | local ip = util.exec('ip -o -6 addr show dev br-wan') | ||
+ | |||
+ | local addresses = {} | ||
+ | for _, line in ipairs(util.split(ip)) do | ||
+ | table.insert(addresses, line:match('inet6 ([%x:]+)/')) | ||
+ | end | ||
+ | |||
+ | return addresses | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | <b>WICHTIG: Dieses Vorgehen ist nicht empfohlen und kann eventuell auch problematisch sein! Es stellt lediglich die Lösung für meine Router zu meiner Bequemlichkeit da.</b> |
Aktuelle Version vom 1. November 2016, 22:41 Uhr
Erste Schritte nach dem Flashen
Du hast also deinen Freifunkrouter grade frisch geflashed und rudimentär konfiguriert. Glückwunsch!
Nun willst du wahrscheinlich wieder darauf zugreifen. Vielleicht einen Parameter ändern oder allgemein nur mal gucken.
Aus Platzgründen hat das Standard-Image leider keine weitergehende Weboberfläche. Viele der kleinen Router haben nicht genügend Flash-Ram, daher ist das Image möglichst klein gehalten. Konfiguration außerhalb des Configmode ist also nur über die SSH möglich.
Wo ist er denn?
Wenn der Router das erste mal konfiguriert wurde, deaktiviert er den Einrichtungsassistenten auf 192.168.1.1 auf dem LAN-Interface (die gelben Ports bei einem TP-Link) und auch die IP auf dem Interface.
Im normalen Betrieb ist der Freifunk-Router mit dem WAN-Interface (blau bei TP-Link Routern) am Uplink angeschlossen.
Dein Freifunkrouter ist dann auf folgende Art und Weise zu erreichen:
WAN IPv6
Die IPv6 Adresse für das WAN-Interface bekommt man heraus, indem man sich per SSH auf dem Freifunk-Router anmeldet oder mit einem IPv6 broadcast. Es gibt aber auch noch weitere Möglichkeiten sich auf den Router anzumelden, als über dieses Interface.
Wenn man denn erstmal per SSH angemeldet ist, heißt das Interface übrigends br-wan.
WAN IPv4
Der Freifunkrouter bezieht seine IPv4-Adresse für den Uplink per DHCP. Du wirfst also einen Blick in die Liste der IP, die dein Router/DHCP-Server verteilt hat.
Dort solltest du dann deinen Freifunk-Router finden und hast somit seine aktuelle IP-Adressse mit der du dich auf dem Gerät per SSH anmelden kannst.
Mit der dort gelisteten MAC-Adresse solltest du deinen Router/DHCP-Server dazu bringen können, dem Freifunk-Router immer dieselbe IP zu geben. Wie genau das geht, ist von Router zu Router und DHCP zu DHCP-Server unterschiedlich. Hier hilft ein Blick in entsprechende Tutorials.
WLAN
Als local-node ist jeder Freifunk-Router auf diesen beiden IPs zu erreichen:
IPv4: 10.116.254.254 IPv6: fda1:384a:74de:4242::ffff
Zusätzlich hat er aber noch weitere IPs. Du bekommst sie über die Alfred JSON Status Knotenliste heraus. Schau nach deinem Node-namen, wenn du über ihn angemeldet bist. Es ist hier egal ob per WLAN oder LAN (gelbe Ports am TP-Link). Klickst du den Link des Freifunk-Routers an, bekommst du dann die Statusseite deines Routers angezeigt.
LAN
Die IPv6 Adresse bekommst du über Alfred JSON Status Knotenliste heraus. Oder per ssh und dann mit dem Befehl ifconfig. br-client heisst das Interface, nach dem du suchst.
IPv4 gibt es nur über die local-node Konfiguration.
SSH ?
Als du per Webinterface unter 192.168.1.1 deinen Freifunk-Router eingerichtet hast, konntest du unter "Erweitert" ein Passwort oder einen SSH-Key hinterlegen.
Hast du das nicht gemacht mußt du deinen Router wieder in den Configmodus versetzen.
Details findest du dazu hier: Configmode
Wie man SSH-Keys unter Linux/Unix/MacOS erstellt beschreibt etwas dieses Tutorial: - Secure SSH Tutorial Part 2: Identity/Pubkey Authentifizierung
Und hier wie man es unter Windows mit dem Putty-Paket macht: PuTTY key-basierte SSH Login
Solltest du ein Passwort verwenden, nutze keins, was du auch woanders benutzt.
Statusseite auch auf dem WAN Interface
Ich möchte die Statusseite meines Freifunk-Routers auch über dessen WAN-Interface (blau bei TP-Link) erreichen können.
Dafür muß man eigentlich nur der Firewall eine zusätzliche Regel verpassen:
cd /etc/config vi firewall
Dort dann diese weitere Regel einfügen:
config rule 'wan_http' option dest_port '80' option src 'wan' option name 'wan_http' option target 'ACCEPT' option proto 'tcp'
Wie man in der Config des uhttpd sehen kann, muß man hier nichts mehr machen:
less /etc/config/uhttpd
[...] list listen_http '0.0.0.0:80' list listen_http '[::]:80' [...]
Die Adresse 0.0.0.0 bindet den uhttpd-Daemon auf alle IPv4-Adressen. 80 steht für den Port. Die Adresse [::] ist das IPv6 Gegenstück zum 0.0.0.0 vom IPv4.
Und noch die Regeln neu laden:
/etc/init.d/firewall restart
Andere Pakete einspielen
Basis deines Freifunk-Routers ist die OpenWRT-Distribution. Diese enthält auch ein Paket-Management-Tool.
opkg
Dummerweise ist im Moment (02.01.2015) aber das Freifunk-Repository offline.
Hier kann man sich aber glücklicherweise mit dem OpenWRT-Repository behelfen.
cd /etc vi opkg.conf
Dort dann das alte Repository auskommentieren und das von OpenWRT einfügen.
# src/gz attitude_adjustment http://opkg.services.ffki/chaos_calmer/15.05.1/ar71xx/generic/packages/ src/gz attitude_adjustment http://downloads.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/packages/ dest root / dest ram /tmp lists_dir ext /var/opkg-lists option overlay_root /overlay
Nun noch das Repository aktualisieren:
opkg update
Suchen von Paketen mittels:
opkg find PacketName
Installieren von Paketen mittels:
opkg install PacketName
WICHTIG: Das ist nur eine Notlösung! Sowie das Freifunk-Repository wieder online ist, sollte man dieses Setting wieder ändern.
Der Editor joe
Dies ist mein Lieblingseditor auf der Konsole. Er kann deutlich mehr als nano, ist nicht so kryptisch wie vi (and in the middle of evil there is vi) und nicht so groß und komplex wie emacs (eight megabytes and continuously swapping).
opkg install joe
Zur Konfiguration braucht es noch zwei Dateien, die sich aber nicht im OpenWRT-Repository befinden.
Bedauerlicherweise kann man in dieses Wiki nur Icons und PDFs hochladen und nicht diese beiden Dateien. Daher hab ich dafuer eigene Wiki-Seiten erstellt.
Entweder als /root/.joerc als /etc/joe/joerc
Entweder als /root/.ftyperc oder als /etc/joe/ftyperc
Die beiden Dateien entstammen ursprünglich aus einer Linux-Ubuntu. In der Datei joerc muß man den Ort der ftyperc anpassen, wenn man die beiden Dateien ins Verzeichnis "/etc/joe/" legt. Ich hab sie unter /root liegen.
In der ftyperc habe ich für allgemeine Dateien folgende Anpassungen vorgenommen:
* --wordwrap -nobackups -asis
* Der Stern steht als Platzhalter, für jede Datei, deren Endung nicht weiter unten in der Datei ftyperc angegeben wird.
--wordwrap Verhindert den automatischen Wordwarp. Bei Texten hilfreich. Bei Configdateien eher nicht.
-nobackups Verhindert die automatischen Backups. Speziell in Verzeichnissen mit init-Skripten kann das sonst gruselig werden.
-asis Sorgt dafür das die Charaktercodes über 127 genauso behandelt werden, wie sie sind und nicht irgendwie interpretiert werden. Andernfalls kann man eine Menge Spass mit Backticks und anderen Sonderzeichen haben.
https aktivieren
Ums kurz zu machen: Funktioniert aktuell nicht!
Theoretisch kann der uhttpd das.
Hier die Schritte, die eigentlich zum Ziel führen sollten:
opkg install uhttpd-mod-tls opkg install px5g
Änderungen in der: /etc/config/uhttpd
config uhttpd 'main' option rfc1918_filter '1' option max_requests '3' option cert '/etc/uhttpd.crt' option key '/etc/uhttpd.key' option cgi_prefix '/cgi-bin' option script_timeout '60' option network_timeout '30' option tcp_keepalive '1' option home '/lib/gluon/status-page/www' list listen_http '0.0.0.0:80' list listen_http '[::]:80' list listen_https '0.0.0.0:443' list listen_https '[::]:443'
Einträge für die /etc/config/firewall
config rule 'wan_https' option dest_port '443' option src 'wan' option name 'wan_http' option target 'ACCEPT' option proto 'tcp'
Die Freiwall neu starten:
/etc/init.d/firewall restart
Und dann noch den uhttpd neu starten:
/etc/init.d/uhttpd restart
Greift man nun per https auf den Freifunk-Router zu, bekommt man eine Fehlermeldung, das die byte-Länge des Zertifikats zu lang sei.
Testweise hatte ich die Zertifikate per openssl auf einem Linux-Server neu erzeugt und auf den Router kopiert. Das hat das Problem aber nicht gelöst.
WAN IPv6 statt LAN IPv6 für den Link in der Alfred JSON Status Knotenliste
Wenn man nicht auf seinem Node eingelogt ist, dann funktioniert der Link nicht, den man in der Alfred JSON Status Knotenliste für den Freifunk-Router hat.
Theoretisch könnte ich mein lokales Netzwerk in das Freifunk-Netzwerk einbinden. Aktuell möchte ich das aber nicht.
Statt dessen möchte ich an der Stelle der LAN IPv6-Adresse die des WAN-Interfaces haben. Da es eine globale IPv6 ist, sollte damit die Statusseite des Freifunk-Routers auch von extern erreichbar sein. Vorrausgesetzt das meine Firewall diese Adresse erreichbar macht.
Die Daten, die an Alfred geschickt werden, werden von einem Lua-Skript erzeugt:
/lib/gluon/announce/announce.lua nodeinfo
Für die Adressen ist folgendes Skript zuständig:
/lib/gluon/announce/nodeinfo.d/network/addresses
Um die Adresse des WAN Interfaces zu bekommen muß man lediglich das Interface ändern. Das Originale Skript ändert man "br-client"
local ip = util.exec('ip -o -6 addr show dev br-client') local addresses = {} for _, line in ipairs(util.split(ip)) do table.insert(addresses, line:match('inet6 ([%x:]+)/')) end return addresses
zum Interface "br-wan":
local ip = util.exec('ip -o -6 addr show dev br-wan') local addresses = {} for _, line in ipairs(util.split(ip)) do table.insert(addresses, line:match('inet6 ([%x:]+)/')) end return addresses
WICHTIG: Dieses Vorgehen ist nicht empfohlen und kann eventuell auch problematisch sein! Es stellt lediglich die Lösung für meine Router zu meiner Bequemlichkeit da.