Přesměrování portu

Založil radek_dr, 02. 12. 2020, 13:58:22

Předchozí téma - Další téma

radek_dr

Řeším problém:
Mám meteostanici, která funguje jen přes WiFi; posílá data na externí servery WeatherUndergroun, WeatherCloud a na další libovolnou IP. Problém je, že všude využívá port 80 a nelze to změnit. Vytvořil jsem z RaspberriPI WiFi AP, routované přes lokální LAN do internetu. Nastavil jsem stanici pro posílání dat na WU, WCl a na lokální server. A zde je ten problém: lokální Apache je přístupný přes HTTPS (port 443) a aby ev. klienti nemuseli zadávat "https://..." je původní port 80 trvale přesměrován přímo na virtuálním serveru Apache - toto chci zachovat. Problém vyvstává právě s meteostanicí, která taky komunikuje se SW WeeWX na portu 80 a tím pádem se hádá se serverem. Zatím jsem to vyřešil změnou portu Apache a přesměrováním portu 80 na routeru na nový port Apache. Toto funguje dobře, až na:
- Automatický update certifikátu pro SSL vyžaduje port 80 a tudíž nefunguje
- další SW na serveru, který také využívá ke komunikaci port 80 (PiHole) taky nefunguje, ale to by mi až tak nevadilo.
Můj dotaz: jak přesměrovat provoz z Raspi AP, určený pro IP serveru:80, ale zachovat provoz ze stejného zdroje na portu 80 pro jiné IP? Veškerý provoz na portu 80 přesměrovat nemůžu, protože bych tím zablokoval data na WU a WCl.
Acer Swift1, N4200 2.5 GHz max., 4GB RAM, 64+250GB SSD, Intel graphic, Debian 12 Cinnamon
Intel NUC,  Celeron J3455, 8GB RAM, 256GB SSD, Debian 11 server, Apache, Nginx proxy, KVM...
AS8940G, Intel i7 ..., LM19 xfce

Nikdo není dokonalý !

radek_dr

Zatím nikdo nereagoval, zkusím to upřesnit:
Dostávám toto:
Zkrácený výpis tcpdump z Raspi
11:03:40.921454 IP 192.168.1.3.62857 > 52.116.188.162.80: Flags [P.], seq 1:380, ack 1, win 5840, length 379: HTTP: GET /weatherstation/updateweatherstation.php?ID=....HTTP/1.1
11:03:41.824663 IP 192.168.1.3.62858 > 192.168.1.2.80: Flags [P.], seq 1:365, ack 1, win 5840, length 364: HTTP: GET /weatherstation/updateweatherstation.php?ID=... HTTP/1.1
a potřebuji dostat (příklad pro MQTT broker):
11:03:40.921454 IP 192.168.1.3.62857 > 52.116.188.162.80: Flags [P.], seq 1:380, ack 1, win 5840, length 379: HTTP: GET /weatherstation/updateweatherstation.php?ID=....HTTP/1.1
11:03:41.824663 IP 192.168.1.3.62858 > 192.168.1.2.1884: Flags [P.], seq 1:365, ack 1, win 5840, length 364: HTTP: GET /weatherstation/updateweatherstation.php?ID=... HTTP/1.1

tedy pro WeatherUnderground první řádek a pro local server druhý řádek. Jde to?
Acer Swift1, N4200 2.5 GHz max., 4GB RAM, 64+250GB SSD, Intel graphic, Debian 12 Cinnamon
Intel NUC,  Celeron J3455, 8GB RAM, 256GB SSD, Debian 11 server, Apache, Nginx proxy, KVM...
AS8940G, Intel i7 ..., LM19 xfce

Nikdo není dokonalý !

radek_dr

Takže vyřešeno s pomocí kolegy na UbuForu: na Raspberry AP zadat
iptables -t nat -I PREROUTING -i wlan0 -p tcp -d 192.168.1.2 --dport 80 -s 192.168.2.2 -j DNAT --to 192.168.1.2:1883

Acer Swift1, N4200 2.5 GHz max., 4GB RAM, 64+250GB SSD, Intel graphic, Debian 12 Cinnamon
Intel NUC,  Celeron J3455, 8GB RAM, 256GB SSD, Debian 11 server, Apache, Nginx proxy, KVM...
AS8940G, Intel i7 ..., LM19 xfce

Nikdo není dokonalý !