|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2007
Città: Legnano
Messaggi: 1036
|
Particolare configurazione per routing Iptables. Fattibile?
Ciao a tutti,
avrei bisogno di un aiutino da parte di qualcuno... Vi spiego: la mia situazione è la seguente: ![]() si tratta di due siti (il rosso ed il blu). Grazie all'aiuto del forum, in particolare grazia a questo 3ad, attualmente sono riuscito a far navigare il raspberry pi 4 del sito blu con l'indirizzo ip pubblico del sito rosso. Il client openvpn è installato sul raspberry pi 4 del blu e dialoga con il server openvpn installato su di una macchina con cui gira un debian 11. Il debian "rosso" (si dovrebbe capire dall'immagine) svolge varie funzioni tra cui quella di DHCP e di filtrare il traffico internet di tutti i dispositivi collegati alla rete tramite PiHole. Indirizzi Il raspberry pi 4 del sito blu ha l'indirizzo locale 192.168.4.106 ed un indirizzo della vpn di 10.8.0.2. Il server debian del sito rosso ha l'indirizzo locale 192.168.1.104 ed un indirizzo vpn di 10.8.0.1 I due si possono pingare a vicenda usando i due indirizzi 10.8.0.X Sul raspberry pi 4 del sito blu gira un'applicazione (home assistant) alla quale i dispositivi collegati in locale accedono digitando nel browser l'indirizzo 192.168.4.106:9000. Sulla macchina debian "rossa" posso fare il fetch dell'header della pagina web dell'applicazione in questione usando il comando: Codice:
# curl -I 10.8.0.2:9000 HTTP/1.1 405 Method Not Allowed Content-Type: text/plain; charset=utf-8 Allow: GET Content-Length: 23 Date: Mon, 28 Aug 2023 21:08:42 GMT Server: Python/3.11 aiohttp/3.8.5 Se faccio un tentativo disperato inserendo https://mioippubblicorosso.duckdns.org:9000 l'errore è ERR_CONNECTION_TIMED_OUT con http://mioippubblicorosso.duckdns.org:9000 invece ottengo una pagina bianca con un 0 in alto a sinistra... ![]() Penso che il problema sia che le impostazioni di iptables non siano quelle giuste: queste le impostazioni del debian "rosso": Codice:
*filter :INPUT ACCEPT [798367:260106620] :FORWARD DROP [0:0] :OUTPUT ACCEPT [888248:1045630139] :DOCKER - [0:0] :DOCKER-ISOLATION-STAGE-1 - [0:0] :DOCKER-ISOLATION-STAGE-2 - [0:0] :DOCKER-USER - [0:0] -A INPUT -i enp3s0 -p tcp -m tcp --dport 1194 -m comment --comment openvpn-input-rule -j ACCEPT -A INPUT -i tun0 -p udp -m udp --dport 53 -m comment --comment pihole-DNS-rule -j ACCEPT -A FORWARD -d 10.8.0.0/24 -i enp3s0 -o tun0 -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment openvpn-forward-rule -j ACCEPT -A FORWARD -s 10.8.0.0/24 -i tun0 -o enp3s0 -m comment --comment openvpn-forward-rule -j ACCEPT -A FORWARD -j DOCKER-USER -A FORWARD -j DOCKER-ISOLATION-STAGE-1 -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -o docker0 -j DOCKER -A FORWARD -i docker0 ! -o docker0 -j ACCEPT -A FORWARD -i docker0 -o docker0 -j ACCEPT -A FORWARD -o hassio -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -o hassio -j DOCKER -A FORWARD -i hassio ! -o hassio -j ACCEPT -A FORWARD -i hassio -o hassio -j ACCEPT -A DOCKER -d 172.30.32.6/32 ! -i hassio -o hassio -p tcp -m tcp --dport 80 -j ACCEPT -A DOCKER -d 172.30.33.0/32 ! -i hassio -o hassio -p tcp -m tcp --dport 8884 -j ACCEPT -A DOCKER -d 172.30.33.0/32 ! -i hassio -o hassio -p tcp -m tcp --dport 8883 -j ACCEPT -A DOCKER -d 172.30.33.0/32 ! -i hassio -o hassio -p tcp -m tcp --dport 1884 -j ACCEPT -A DOCKER -d 172.30.33.0/32 ! -i hassio -o hassio -p tcp -m tcp --dport 1883 -j ACCEPT -A DOCKER -d 172.30.33.2/32 ! -i hassio -o hassio -p tcp -m tcp --dport 1627 -j ACCEPT -A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2 -A DOCKER-ISOLATION-STAGE-1 -i hassio ! -o hassio -j DOCKER-ISOLATION-STAGE-2 -A DOCKER-ISOLATION-STAGE-1 -j RETURN -A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP -A DOCKER-ISOLATION-STAGE-2 -o hassio -j DROP -A DOCKER-ISOLATION-STAGE-2 -j RETURN -A DOCKER-USER -j RETURN COMMIT *nat :PREROUTING ACCEPT [89173:19654854] :INPUT ACCEPT [81910:19147179] :OUTPUT ACCEPT [232311:13632379] :POSTROUTING ACCEPT [233166:13680449] :DOCKER - [0:0] -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER #-A POSTROUTING -s 10.31.73.0/24 -o enp3s0 -m comment --comment openvpn-nat-rule -j MASQUERADE -A POSTROUTING -s 10.8.0.0/24 -o enp3s0 -m comment --comment openvpn-nat-rule -j MASQUERADE -A PREROUTING -i enp3s0 -p tcp -s mioippubblicorosso.duckdns.org --dport 9000 -j DNAT --to-destination 10.8.0.2:9000 -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE -A POSTROUTING -s 172.30.32.0/23 ! -o hassio -j MASQUERADE -A POSTROUTING -s 172.30.32.6/32 -d 172.30.32.6/32 -p tcp -m tcp --dport 80 -j MASQUERADE -A POSTROUTING -s 172.30.33.0/32 -d 172.30.33.0/32 -p tcp -m tcp --dport 8884 -j MASQUERADE -A POSTROUTING -s 172.30.33.0/32 -d 172.30.33.0/32 -p tcp -m tcp --dport 8883 -j MASQUERADE -A POSTROUTING -s 172.30.33.0/32 -d 172.30.33.0/32 -p tcp -m tcp --dport 1884 -j MASQUERADE -A POSTROUTING -s 172.30.33.0/32 -d 172.30.33.0/32 -p tcp -m tcp --dport 1883 -j MASQUERADE -A POSTROUTING -s 172.30.33.2/32 -d 172.30.33.2/32 -p tcp -m tcp --dport 1627 -j MASQUERADE -A DOCKER -i docker0 -j RETURN -A DOCKER -i hassio -j RETURN -A DOCKER ! -i hassio -p tcp -m tcp --dport 4357 -j DNAT --to-destination 172.30.32.6:80 -A DOCKER ! -i hassio -p tcp -m tcp --dport 8884 -j DNAT --to-destination 172.30.33.0:8884 -A DOCKER ! -i hassio -p tcp -m tcp --dport 8883 -j DNAT --to-destination 172.30.33.0:8883 -A DOCKER ! -i hassio -p tcp -m tcp --dport 1884 -j DNAT --to-destination 172.30.33.0:1884 -A DOCKER ! -i hassio -p tcp -m tcp --dport 1883 -j DNAT --to-destination 172.30.33.0:1883 -A DOCKER ! -i hassio -p tcp -m tcp --dport 1627 -j DNAT --to-destination 172.30.33.2:1627 COMMIT Queste del raspberry pi 4 "blu" dove c'è il client openvpn: Codice:
*filter *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -p icmp -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 3389 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 9000 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT COMMIT *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A PREROUTING -i tun0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.4.106 -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE -A PREROUTING -p tcp -s 10.8.0.1 --dport 9000 -j DNAT --to-destination 192.168.4.106:9000 COMMIT Grazie
__________________
Ciao a tutti ![]() |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Aug 2023
Messaggi: 1
|
cambierei la politica da "rilascia" a "rifiuta". nel caso in cui tu abbia alcune app che tentano di superare alcune porte sconosciute, potresti ritrovarti in uno stato bloccato finché non riescono a raggiungere il timeout. Internet in entrata dovrebbe essere eliminato, ma lan mi piace vivere rifiutando
Ultima modifica di Slater91 : 31-08-2023 alle 10:14. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: May 2007
Città: Legnano
Messaggi: 1036
|
ti ringrazio dei suggerimenti, ma al momento avrei bisogno di qualcosa di più specifico inerente il problema sopra indicato.
__________________
Ciao a tutti ![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 3222
|
Ho letto sommariamente (e prima domanda, perchè usi iptables puro e non ti appoggi a qualcosa di più "comodo" tipo shorewall?) ma una cosa non capisco.
Nella tua rete, chi è il gateway? il router FW o il debian? perchè se è il router è più probabile che sia un problema di mancanza di instradamento (cioè il fw non sa dove mandare i pacchetti, perchè se ho capito bene, è il debian e il rasp che hanno instaurato la vpn tra di loro) |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: May 2007
Città: Legnano
Messaggi: 1036
|
Quote:
Il gateway, in entrambi i siti è il router. Nel sito "rosso", quallo con il debian che fa da DHCP, il router manda tutti i pacchetti al DNS del debian per fare il filtraggio tramite pihole e risolve tramite, mi pare, con opendns e cloudflare. Da quello che ho capito il client vpn del raspberry parla direttamente con il vpn server del debian e poi fanno loro l'instradamento dei pacchetti tramite iptables. Ma potrebbe benissimo non essere così in quanto, come dicevo, per me è tutto nuovo... Avevo provato qualcosa di più semplice rispetto a iptables, ovver ufw, ma ho piantato su un casino e mi si bloccava tutto.... Intanto provo a vedere se ci capisco qualcosa con shorewall. Grazie mille per l'intervento ![]()
__________________
Ciao a tutti ![]() |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 3222
|
Il problema penso stiano nelle regole di routing DEI CLIENT.
Riassumo, così forse si capisce anche se ho capito la configurazione Tu hai due reti distinte, che hai messo "in comunicazione" tramite una VPN che è instaurata tra due dispositivi (un pc e un rasp per capirsi). I client però (praticamente gli altri pc a valle del roouter) hanno come gateway il router, il quale NON SA NULLA, del fatto che c'è una vpn attiva. Pertanto, quando un client dice "ehi Router Fastweb, voglio andare sul pc con ip 192.168.1.104 " il router fa quello che fa per ogni richiesta e quindi inoltra il pacchetto sulla WAN, che risponde picche. Hai due strade in questo caso. Immettere sui client la rotta statica ROUTE ADD 192.168.1.0 MASK 255.255.255.255 GW PC_DEBIAN oppure mettere di mezzo un firewall che supporti un vpn site to site con l'altra rete (pfsense tipo, o forse anche fritzbox) O almeno, così è quello che ho capito possa essere il problema, ma lo dovresti capire anche con un tracert da uno dei client verso gli ip della vpn/ altra rete |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:28.