🕸️ Proxy nutzen, http_proxy, https_proxy & TinyProxy auf OpenWRT einrichten

Begonnen von Torxgewinde, 28 August 2023, 19:35:23

Vorheriges Thema - Nächstes Thema

Torxgewinde

Hallo,
FHEM kann man hinter einem Proxy nutzen. Konfiguriert man den Proxy so, dass er nur auf eine Liste mit bekannten Domains zugreift, dann verkleinert es die Angriffsfläche enorm. Ein Proxy wie Squid ist technisch zwar super, Tinyproxy reicht aber für eine Blacklist/Whitelist, bzw. Deny-/Allow-Listen. Tinyproxy hat zudem den Charme, extrem wenig Ressourcen zu benötigen und damit ist es geeignet auf einer Firewall "nebenher" zu laufen ohne großartig zu stören.

FHEM konfigurieren:

Der wichtigste und dokumentierte Weg einen Proxy (Beispiel: http://192.168.123.123, Port 1234) einzurichten, ist beim Device "global" mindestens das Attribut "proxy" zu setzen mit
attr global proxy http://192.168.123.123:1234
Jetzt ist es unnötig den Proxy für lokale Geräte im gleichen Netzwerksegment zu kontaktieren, deswegen kann/sollte man auch das Attribut "proxyExclude" setzen. Angenommen alles mit der Endung "fritz.box" soll nicht über den Proxy aufgerufen werden, so lautet die passende RegEx:
attr global proxyExclude .*\.fritz\.box$ (Diesen RegEx untersuchen und ausprobieren: https://regex101.com/r/QUPM5w/1)

Einige Module (z.B. Proplanta) nutzen scheinbar die Umgebungsvariablen "http_proxy" und "https_proxy" um den passenden Proxy zu kontaktieren. Die kann man in FHEM beim Starten definieren, indem man folgendes DOIF einbaut, dass beim Start ausgeführt wird:
defmod di_Startup DOIF (0) ## Startup Befehle\
    {Log(0, "🐞 di_Startup startet")}\
    {$ENV{TZ} = 'Europe/Berlin'}\
    {$ENV{https_proxy} = 'http://192.168.123.123:1234'}\
    {$ENV{http_proxy} = 'http://192.168.123.123:1234'}\
    {Log(0, "🐞 di_Startup beendet")}
attr di_Startup do always
attr di_Startup room Global
attr di_Startup startup set $SELF cmd_1

Viel Spaß!

Falls man TinyProxy auf OpenWRT laufen lassen will, hier die Konfiguration dazu (Installation mit: opkg update && opkg install tinyproxy):

/etc/config/tinyproxy:
config tinyproxy
        option User 'nobody'
        option Group 'nogroup'
        option Port '1234'
        option DefaultErrorFile '/usr/share/tinyproxy/default.html'
        option StatFile '/usr/share/tinyproxy/stats.html'
        option LogFile '/var/log/tinyproxy.log'
        option LogLevel 'Info'
        option MinSpareServers '20'
        option StartServers '20'
        option ViaProxyName 'tinyproxy'
        list ConnectPort '443'
        list ConnectPort '563'
        option enabled '1'
        option Filter '/etc/config/tinyproxy_whitelist.txt'
        option FilterDefaultDeny '1'
        list Allow '192.168.123.0/24'
        list Allow '127.0.0.1'
        option Timeout '3600'
        option MaxClients '200'
        option MaxSpareServers '200'
        option MaxRequestsPerChild '0'

/etc/config/tinyproxy_whitelist.txt:
# filter exactly cnn.com
# ^cnn\.com$
 
# filter all subdomains of cnn.com, but not cnn.com itself
# .*\.cnn.com$
 
# filter any domain that has cnn.com in it, like xcnn.comfy.org
# cnn\.com
 
# filter any domain that ends in cnn.com
# cnn\.com$
 
# filter any domain that starts with adserver
# ^adserver

^openwrt\.org$
.*\.openwrt\.org$

^127\.0\.0\.1$
^localhost$

^debian.org$
.*\.debian\.org$

#for Internet Radio
^.*\.ffn\.de$
^.*\.radiohost\.de$
^icecast\.ndr\.de$
^.*\.rndfnk\.com$

#for ubuntu
^.*\.archive\.ubuntu\.com$
^.*changelogs\.ubuntu\.com$

#Wikipedia
^.*\.wikimedia\.org$
^.*\.wikipedia\.org$

#IKEA für Zigbee2MQTT
^.*\.homesmart\.ikea\.net$

^debian\.fhem\.de$
^fhem\.de$
^opendata\.dwd\.de$
^api\.tibber.\com$
^api\.pushover\.net$
^192\.168\.234\.1$
^www\.proplanta\.de$
^api\.solcast\.com\.au$
^id\.worx\.com$
^api\.worxlandroid\.com$
^iot\.eu-west-1\.worxlandroid\.com$
^bis\.azure-api\.net$