[Geloest] Hauptrechner ueber Banana-Pi ins Internet

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Hauptrechner ueber Banana-Pi ins Internet

Beitrag von heinz » 17.03.2021 23:08:13

smutbert hat geschrieben: ↑ zum Beitrag ↑
17.03.2021 22:25:38
Ok, aber dann könnte es ja eventuell genügen das WLAN abzuschalten um die Verbindung zu unterbrechen.
Naja, in gewisser Weise habe ich das ja auch so vor. Nur halt bei mir hier oben (Pi aus) und nicht am Router (2 Stockwerke tiefer).
smutbert hat geschrieben: ↑ zum Beitrag ↑
17.03.2021 22:25:38
und du willst wirklich bei den festen ip-Adressen bleiben?
(Hatte ich ja auch eine Zeit lang, aber mit mehr als zwei, drei Geräten wird das doch wirklich lästig?)
Ich hatte, bevor ich ausgezogen bin 14 Rechner in meinem Netz und ja, es wurde irgendwann schon laestig.
smutbert hat geschrieben: ↑ zum Beitrag ↑
17.03.2021 22:25:38
Auch ein Mischbetrieb wäre ja kein Problem, solange der DHCP-Server keine der festen IP-Adressen vergibt und der Betrieb mit DHCP ist finde ich schon viel einfacher und hättest du einen DHCP-Server könntest du schrittweise (Gerät für Gerät) auf dynamische IP-Adressen umstellen.
Das hoert sich super an! Koennte aber vlt. schwierig werden, da ich die Adressen nicht "der Reihe nach" sondern nach "Lust und Laune" vergeben habe.
Aber ja, wenn da intern ein DHCP mit dabei ist, nehm ich den gerne mit... :)
smutbert hat geschrieben: ↑ zum Beitrag ↑
17.03.2021 22:25:38
OpenWRT ist eine spezialisierte Linux-Distribution, die auf Router ausgerichtet ist, d.h. du könntest zB einen alten von openwrt unterstützten Router oder einen (Raspberry) Pi 3 nehmen, dort openwrt installieren und starten und das ganze über ein Webfrontend einrichten, aber das kannst du ja immer noch machen.
Danke fuer die weitere Info. Werde mal ein wenig im Netz danach suchen...
smutbert hat geschrieben: ↑ zum Beitrag ↑
17.03.2021 22:25:38
eth0 führt also in dein Heimnetz und wlan0 soll zum Router führen?
Korrekt!
smutbert hat geschrieben: ↑ zum Beitrag ↑
17.03.2021 22:25:38
Wer soll den Access Point machen, der Router oder der Banana Pi?
Ich faende es am sympathischsten wenn der Router nichts weiter tun wuerde, als dem Banana Pi das Internet (per DHCP) zur Verfuegung zu stellen.
Dann koennte ich die Konfiguration auch ohne Aenderungen wieder fuer lange Zeit nutzen... (Unabhaengig vom Anbieter/Router.)
smutbert hat geschrieben: ↑ zum Beitrag ↑
17.03.2021 22:25:38
Ich werde einmal anfangen meine Konfigurationsdateien zusammenzusuchen...
Du kannst Dir nicht vorstellen, wie froh ich bin das zu lesen, Danke... :D

Benutzeravatar
smutbert
Moderator
Beiträge: 8317
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Hauptrechner ueber Banana-Pi ins Internet

Beitrag von smutbert » 18.03.2021 17:15:11

heinz hat geschrieben: ↑ zum Beitrag ↑
17.03.2021 23:08:13
[...]
Ich faende es am sympathischsten wenn der Router nichts weiter tun wuerde, als dem Banana Pi das Internet (per DHCP) zur Verfuegung zu stellen.
Dann koennte ich die Konfiguration auch ohne Aenderungen wieder fuer lange Zeit nutzen...
[...]
Das sollte so oder so gehen (also halt bis auf WLAN-Namen und Passwort bei einem neuen Router).

Ich habe jetzt einmal so ziemlich alles zusammengeschrieben – allerdings mit dem Banana Pi als WLAN-Client, auch weil ich gar nicht so zuversichtlich bin, dass ein/der/dein Router sich überhaupt im Webfrontend als WLAN-Client konfigurieren lässt – bei meinem wäre das nicht möglich gewesen bzw. ist nur möglich, weil ich dort OpenWRT installiert habe.

Willst du den ganzen Text auf einmal oder lieber häppchenweise :mrgreen: oder wartest du lieber bis wir beide einmal online sind?

Wenn du noch irgendwelche Überbleibsel von Konfigurationsversuchen im System hast. wäre das auch noch recht interessant. speziell ob da bei dir jetzt irgendein Nameserver, DHCP-Server oder irgendein Dienst zum Konfigurieren der Firewallregeln läuft.

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Hauptrechner ueber Banana-Pi ins Internet

Beitrag von heinz » 18.03.2021 17:52:01

smutbert hat geschrieben: ↑ zum Beitrag ↑
18.03.2021 17:15:11
Willst du den ganzen Text auf einmal oder lieber häppchenweise :mrgreen: oder wartest du lieber bis wir beide einmal online sind?
Wow, das ging aber schnell!
Was Dir am liebsten ist. Du kannst es mir ja mal "am Stueck" schicken und ich schaue wie weit ich komme.

Wobei ich erst Sonntag oder Anfang naechster Woche dazu komme. (Habe nicht so schnell damit gerechnet...)
Heute und uebermorgen haben zwei Freunde von mir Geburtstag und ich weiss nicht wie lange wir feiern. (Und wie aufnahmefaehig ich danach noch bin... ;-) )

Auf jeden Fall schon mal vielen Dank fuer Deine Muehe und Deine Zeit!
smutbert hat geschrieben: ↑ zum Beitrag ↑
18.03.2021 17:15:11
Wenn du noch irgendwelche Überbleibsel von Konfigurationsversuchen im System hast. wäre das auch noch recht interessant. speziell ob da bei dir jetzt irgendein Nameserver, DHCP-Server oder irgendein Dienst zum Konfigurieren der Firewallregeln läuft.
Hmm, also einen DHCP habe ich installiert (isc-dhcp-server) und habe auch in der dhcpd.conf "herumgefuhrwerkt".
Zum Funktionieren habe ich sie aber nicht bekommen.
Ich habe auch "einige" Konfigurations-Dateien angelegt aus zum Teil verschiedenen Anleitungen...
Einen Nameserver habe ich noch nicht Installiert, wollte erstmal das eine zum Funktionieren bringen...
Ob auf dem System eine Firewall laeuft weiss ich leider gerade nicht genau.
(Kann auf die schnelle auch nicht nachsehen, muss in 15min. weg. Werde aber morgen nachmittag berichten.)

Meinst Du nicht, dass es das Beste waere mit einem "sauberen" System zu beginnen?
Nicht das noch irgendeiner meiner "stuempereien" nachher den Erfolg verhindert...

Nochmals Danke.
Gruss,
heinz

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Hauptrechner ueber Banana-Pi ins Internet

Beitrag von heinz » 21.03.2021 18:09:24

Hallo nochmals,

nachdem smutbert mir per PM gezeigt hat wie ich meinem Banana-Pi auf die Spruenge helfen kann, melde ich mich hier nochmals mit der fertigen Loesung, die mich an das "Ziel meiner Traeume" brachte.

Ich Danke hier nochmal ausdruecklich smutbert fuer seine Zeit, seine Geduld und seine professionelle Hilfe.

Und auch an habakug nochmal Danke fuer den Link zu diesem sehr "schicken" und schlanken Armbian-Image.

Ziel der ganzen "Sache" war/ist, einen Rechner (bei mir ein Banana-Pi) zwischen dem eigenen Netz (mehrere Rechner ueber Kabel (eth0)) und dem Internet (ueber Wlan (wlan0)) zu haben.
Banana-Pi aus == Internet weg aber alles andere geht noch.
Netterweise ist durch diese Konfiguration auch noch ein interner DHCP-Service in meinem Netz "gelandet" der mir bei meinem kleinen "Rechnerzoo" sicher gute Dienste leisten wird.
---------------------------------------------------
Loesung: (von smutbert)

Vorneweg:

Für das lokale Netzwerk wurde einfach 192.168.0.0/255.255.255.0 (also mit den IP-Adressen 192.168.0.1 bis 192.168.0.254) genommen.
Zwischen Banana Pi und Router existiert ja allerdings gewissermaßen am Ende ein eigenes Netzwerk und wenn das ebenfalls 192.168.0.0 wäre, wird es mit der beschriebenen Konfiguration kaum laufen.
Wenn man nach dieser Beschreibung vorgeht, stellt man also am besten vorher sicher, dass der Internetrouter stattdessen zB. 192.168.1.0 verwendet.


Vorbereitung:

Pakete (de)installieren:

Als erstes sorgen wir dafür, dass alle notwendigen Pakete installiert sind und damit einige Pakete, die wir nicht verwenden wollen, keine unerwünschten Nebeneffekte verursachen und auch nicht sinnlos den Systemstart verlangsamen.
Installiert und/oder als manuell installiert markiert wird wpasupplicant für die WLAN-Verbindung, nftables, das für die Paket-/Firewallregeln zuständig sein wird und dnsmasq als DHCP- und DNS-Server.
Deinstalliert werden dagegen Dienste zur Netzwerkkonfiguration, die wir nicht wollten.

Code: Alles auswählen

# apt install wpasupplicant nftables dnsmasq
# apt purge resolvconf ifupdown network-manager hostapd avahi-autoipd isc-dhcp-client bridge-utils isc-dhcp-server networkd-dispatcher
Dienste (de)aktivieren:

Hier ganz ähnlich – systemd-resolved können wir ganz und gar nicht brauchen und müssen dafür
systemd-network aktivieren:

Code: Alles auswählen

# systemctl disable systemd-resolved
# systemctl enable systemd-networkd
Netzwerkverbindung zum Router:

Zuerst einmal werden die Daten des vom Router aufgespannten WLAN in einer Konfigurationsdatei für wpasupplicant (Name und Passphrase des WLAN) in der Form:

Code: Alles auswählen

network={
    ssid="Name"
    psk="Passphrase"
}
in der >/etc/wpa_supplicant/wpa_supplicant-wlan0.conf< verewigt.
Aktiviert wird wpasupplicant dann mit:

Code: Alles auswählen

# systemctl enable wpa_supplicant@wlan0.service
Für die eigentliche Netzwerkkonfiguration mit systemd-network legen wir eine
>/etc/systemd/network/wlan0.network< an mit dem Inhalt:

Code: Alles auswählen

[Match]
Name=wlan0

[Network]
DHCP=yes
LinkLocalAddressing=no
Netzwerkverbindung in das lokale Netzwerk:

Hier brauchen wir eine statische IP-Adresse – ich habe weil es wohl durchaus üblich ist 192.168.0.1 verwendet.
Hier müssen wir dann auch das IP Forwarding aktivieren.
Das ganze sieht dann zB. so aus;

>/etc/systemd/network/eth0.network<

Code: Alles auswählen

[Match]
Name=eth0

[Network]
Address=192.168.0.1/24
LinkLocalAddressing=no
IPForward=ipv4
Firewall-/Paketregeln:

Damit das ganze mit NAT läuft brauchen wir ohnehin ein paar Regeln und sorgen auch gleich dafür, dass aus Richtung des Internet keine Verbindungen hergestellt werden können, sondern nur in der anderen Richtung.
Dazu legen wir eine >/etc/nftables.conf< an, wenn sie noch nicht existiert, mit dem Inhalt:

Code: Alles auswählen

#!/usr/sbin/nft -f

flush ruleset

define internal_nic = eth0
define external_nic = wlan0

table inet filter {
    chain input {
    type filter hook input priority 0;

    # allow established/related connections
    ct state { established, related } accept

    # early drop of invalid connections
    ct state invalid drop

    # allow from loopback and internal nic
    iifname { lo, $internal_nic } accept

    reject with icmp type port-unreachable
    }
    
    chain forward {
    type filter hook forward priority 0;

    # allow from loopback and internal nic
    iifname { lo, $internal_nic } accept

    # allow established/related connections
    oifname $internal_nic ct state { established, related } accept

    # Drop everything else
    drop
    }
    
    chain output {
    type filter hook output priority 0;
    }
}

table ip nat {
    chain prerouting {
    type nat hook prerouting priority 0
    }
    
    chain postrouting {
    type nat hook postrouting priority 0

    oifname $external_nic masquerade
    }
}
Ausführbar muss diese Datei ebenfalls sein, also

Code: Alles auswählen

# chmod +x /etc/nftables.conf

DHCP- und DNS-Server:

Wie angekündigt verwenden wir dnsmasq, das mit der >/etc/dnsmasq.conf< konfiguriert wird.

Code: Alles auswählen

domain-needed
bogus-priv
no-resolv
no-negcache
interface=eth0

address=/banana.pi/192.168.0.1

domain=pi
server=/pi/
local=/pi/

server=8.8.8.8

dhcp-range=set:pi,192.168.0.100,192.168.0.249,255.255.255.0,12h

dhcp-host=XX:XX:XX:XX:XX:XX,drucker,192.168.0.105
Die Optionen zu Beginn besagen:

domain-needed:
DNS-Anfragen zu hostnamen ohne domain werden nicht weitergeleitet (an den/die DNS-Server, der/die im folgenden noch eingetragen werden)

bogus-priv:
Anfragen zu IP-Adressen aus dem lokalen Netzwerk werden nicht an weitere DNS-Server weitergeleitet.

no-resolv:
Die >/etc/resolv.conf< wird nicht herangezogen um weitere DNS-Server auszumachen.

no-negcache:
Negative Ergebnisse von DNS-Abfragen werden nicht zwischengespeichert (es wird noch einmal nachgefragt).

Das interface dürfte klar sein, wir wollen, dass dnsmasq nur auf dem Interface zum lokalen Netzwerk lauscht.

Die nächste Zeile zeigt wie man Namen und IP-Adresse des Banana Pi (bzw. eines beliebigen Systems)
selbst dnsmasq bekannt macht. banana.pi sollte man durch Host- und Domainnamen des Banana Pi ersetzen.

So kann man auch beliebige andere Systeme, die ihre IP-Adresse nicht über DHCP bekommen, dnsmasq mitteilen,
damit der die Namen auflösen kann.
dnsmasq löst in der Konfiguration übrigens auch in >/etc/hosts< eingetragene Namen auf.

Auch in den folgenden Zeilen sollte man das pi durch die lokale Domain (zB. lan) ersetzen.

Als externen DNS-Server habe ich einmal 8.8.8.8, also den DNS-Server von Googleeingetragen
– hier könnte man zB. die IP-Adresse des Routers eintragen.

Bei dhcp-range wird eingetragen welche IP-Adressen dnsmasq vergeben darf.
Hier könnte man statt von 192.168.0.100 bis 192.168.0.249 vielleicht zB. der Einfachheit halber den größten
zusammenhängen und momentan nicht vergebenen IP-Adressbereich in seinem Netzwerk angeben.
Man kann mit mehreren solchen Zeilen aber auch mehrere Bereiche angeben.

Zuletzt noch ein Beispiel wie man Systeme eintragen kann, die immer dieselbe IP-Adresse bekommen sollen.
Statt drucker trägt man einfach den Hostnamen ein und statt den XX die Mac-Adresse des Systems.


Namensauflösung auf dem Banana Pi selbst:

Für den Banana Pi selbst fehlt noch eine brauchbare >/etc/resolv.conf< und damit er sowohl Namen aus dem lokalen Netzwerk wie auch Internet auflösen kann, wird einfach er selbst als Nameserver eingetragen:

Code: Alles auswählen

search pi
nameserver 192.168.0.1
(pi wäre wieder durch den Domainnamen zu ersetzen)


Nach einem reboot des Banana-Pi sollte dann alles wie gewünscht laufen.
--------------------------------------------------------------

Viele Gruesse,
heinz

Antworten