Newsgroup: it.comp.reti.locali
Titolo: nat e port forwarding

É tutto il giorno che provo, seguendo varie guide, ma non ne vengo a capo!
 
Situazione attuale:
modem router adsl, mi fa port forwarding dalla porta 8080 (http) alla porta 81
su (rete locale) x.x.x.3 che é una cam con serverino web incorporato.
 
Dalla spiaggia se scrivo nel browser l'indirizzo ip del modem router (usando la
porta insolita 8080) vedo la cam, ed in rete locale se punto il browser alla
cam (su porta 81), tutto funzione.
 
Situazione che voglio:
modem router adsl, mi fa port forwarding dalla porta 80 (vera porta http) alla
porta 81 su (rete locale) ip x.x.x.2 (che e' un pc con una versione di
debian).
Il pc deve fare forwarding di tutto quello che entra nella 81 (http) sulla
porta 80 di (rete locale) x.x.x.3 che é la cam con serverino web incorporato.
Il pc ha una sola scheda di rete.
 
In rete locale, con un'altro pc, se nel browser scrivo x.x.x.2:81 (indirizzo
pc) voglio vedere la cam passando per il pc.
In remoto (in spiaggia) se scrivo nel browser l'indirizzo ip del modem router,
voglio vedere la cam.
 
 
Quello che non riesco é di creare le regole da mettere nel pc per questo doppio
trasferimento (pc --> cam).
 
 
 
-- 
+---------------------------------------------------------------------------+
| Da una E-Mail:                                                            |
| La sig.ra MICHELA e' assediata da un cliente per un'urgente commessa che  |
| prevede la rettifica interna                                              |
+-----#18--------------------Campagna contro le pubblicita` idiote.---------+

 trasferimento (pc --> cam).
 
Scritto >10 anni fa, ma si applica ancora:
 
http://www.skullkrusher.net/linux/iptables.html
 
 
Tu sei in una variante del caso 4.
 
Buon divertimento.
 


La domanda è: perché?
 

 
Perché l'ho scritto?
Perché c'è bisogno di arzigogoli per farlo funzionare?
Perché l'OP vuol fare ciò che fa nel modo in cui lo fa?
Perché c'è gente che chiede perché senza specificare l'argomento?
 
 
L'ultima ha una componente ricorsiva. Mi piace.

 Perché l'OP vuol fare ciò che fa nel modo in cui lo fa?
 
Ho 2 ipcam (e tra poco anche altre) con serverino web incorporato, attualmente
sono connesse al modem router su indirizzi ip diversi e su porte diverse.
Attualmente, da remoto (da ufficio, spiaggia, eccetera) mi collego al modem
router ed a secondo della porta che mi collego, vedo una cam o l'altra.
Purtroppo non sempre le posso vedere entrambe, in quanto capito in luoghi con
accesso wifi gratuito e con firewall che mi bloccano il giochino.
 
Ho preso un raspberry e vorrei usarlo per commutare le cam, in modo che siano
accessbili da esterno sempre sulla stessa porta, la classica 80.
La mia idea é quella di connettermi con ssh in trasparente dal modem router al
raspberry, avviare dei banali script (cam1, cam2) che mi cambiano il firewall
in modo che sia accessibile ora una cam ora l'altra.
Il modem router, metterá la porta 80 sempre verso l'ip del raspberry, poi sará
questo che a secondo di quale script é stato eseguito, a farmi vedere le varie
cam.
Se l'idea é una minchiata, ditelo pure!
 
 
-- 
+---------------------------------------------------------------------------+
| Da un errore su un PC (visto realmente):                                  |
| Keyboard not found! Press F1 to continue.                                 |
+-----#28--------------------Campagna contro le pubblicita` idiote.---------+

 Se l'idea é una minchiata, ditelo pure!
 
non lo è, è solo inutile, utilizza un nvr a cui far confluire le cam ed 
utilizza la sua unica interfaccia per vedere le cam (ma dubito che te la 
cavi con una sola porta...)

 cam.
 
Invece degli arzigogoli con gli script per cambiare il firewall (?) non 
è più semplice configurare un server web sul RPi che faccia proxying 
verso le videocamere?

 Se l'idea é una minchiata, ditelo pure!
 
 
E installare un server http sul raspy, creare delle semplici pagine che
ti visualizzino le pagine web di tutte le cam che vuoi? Tipo in degli
iframe?


:) la n. 3

 verso le videocamere?
 
Mi sa che sia un po' incasinata la cosa.
Le videocamere (non webcam, ma ipcam) hanno un serverino web incorporato, che
richiede user e pass per entrare, poi quando mostrano l'immagine, ci sono i
comandi per pan e ptz....
 
Ho risolto brillantemente, con solo 2 righe di iptables, grazie al suggerimanto
di skull e da questa discussione:
 
http://it.comp.os.linux.sys.free-usenet.eu/Transparent-proxy-via-iptables_T66410763_S1
 
 
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to IP_CAM
iptables -t nat -A POSTROUTING -d IP_CAM -p tcp --dport 80 -j SNAT --to RASPY
 
ho fatto 2 script che fanno il flush delle regole, poi inseriscono queste 2, in
cui cambio solo il valore della variabile IP_CAM.
 
Ho messo, contrariamante a quanto detto all'inizio, tutte le cam sulla stessa
porta 80, ed il router fa da port forwarding della 80 esterna sulla 80 del
raspberry.
 
Funziona sia da rete interna che da rete esterna.
 
Per inciso, nelle prove che avevo fatto precedentemente e che non riuscivo a
far funzionare era... che non avevo pensato al postrouting!!!!
 
 
-- 
+---------------------------------------------------------------------------+
|  Se fai rifornimento dopo le 22,30 aumentiamo i prezzi di soli            |
|  70 centesimi al litro.                                                   |
+-----#7---------------------Campagna contro le pubblicita` idiote.---------+

 iframe?
 
A parte che non avrei idea di come fare, ma ho risolto con dei semplici script.
Vedi risposta a Andrea D'Amore.
 
-- 
+---------------------------------------------------------------------------+
|Al termine delle elezioni,la madre superiora fa la conta dei voti:         |
|DC, DC, DC,... PPP. Chiama subito suor Maddalena per le spiegazioni...     |
|Si era rotta la punta della matita, ed ho scritto: PORCA PUTTANA LA PUNTA! |
+-----#8---------------------Campagna contro le pubblicita` idiote.---------+

 Se l'idea ï¿œ una minchiata, ditelo pure!
 
non necessariamente una minchiata, ma ti complichi la vita.
Intanto la porta 80 (dall'esterno) potrebbe servire alla configurazione 
del router. E sarebbe bene bloccarla.
Se invece usi n porte consecutive (quelle che ti serviranno), importi 
gli n port forwarding e sei a posto.
Ne' ti servira' piu' tenere acceso un altro dispositivo oltre al router 
e alla ipcam.
 
Adriano
 
 

 e alla ipcam.
 
Era cosï¿œ, ma se leggi i post iniziali, capisci perchï¿œ ho fatto questa domanda.
Non posso usare porte (piï¿œ o meno) consecutive, od almeno non sempre.
Mi ï¿œ capitato un hotel tedesco che aveva un firewall cosï¿œ restrittivo che
permetteva solo l'uso della 80, 443 e 110 (e forse qualcun'altra, ma non ho
indagato molto per una sola notte).
In ufficio, facendo prove d'accordo con l'amministratore (mio amico, comunque),
non posso usare la 119 (nntp) la 8080 (proxy) e nemmeno le porte successive
alla 80 (vedi 81, 82, 83 eccetera). Per l'accesso al web, serve user e pass
(che ho, in quanto necessario per il mio lavoro).
 
Col giochino del firewall, almeno facendo prove in locale e connettendomi
all'indirizzo ip pubblico, funziona tutto a meraviglia.
 
Se il raspberry ï¿œ spento, accedendo dall'indirizzo pubblico sulla 80, ho un bel
timeout connessione.
 
-- 
+---------------------------------------------------------------------------+
| Benventi sull'autostrada Milano Cavenago Trezzo Capriate Dalmine Bergamo  |
|  Seriate Grumello Oglio Palazzolo Rovato Ospitaletto Brescia Desenzano    |
|Sirmione Peschiera Sommacampagna Verona Soave Montebello Montecchio Vicenza|
+-----#9---------------------Campagna contro le pubblicita` idiote.---------+

 Mi sa che sia un po' incasinata la cosa.
 
Con nginx sarebbe qualcosa del tipo
 
location /1 {
  proxy_pass        http://<ip prima camera>:8000;
}
 
location /2 {
  proxy_pass        http://<ip seconda camera>:8000;
}
…
 
Dall'esterno se apri il tuo indirizzo vedi la pagina di cortesia che 
scriverai, se chiedi un percorso come /1 la richiesta viene inviata alla 
prima camera la quale ti chiederà utente e password.

 Ti sdenti su una porta massiccia!
 
puo' essere, ma sapessi quanti ci sono cascati!
 
Adriano
 
 


 
In realtï¿œ ï¿œ molto semplice. una volta installato qualsiasi server web 
(tipo nginx come suggeriva Andrea), crei una pagina web html, con degli 
<iframe>, in teoria cosï¿œ potresti avere tutte le webcam sulla stessa 
pagina, o solo il link che cliccando ti porta sulla pagina della webcam. 
Le possibilitï¿œ sono tante, potresti anche disabilitare l'autenticazione 
della webcam e usare l'autenticazione (tipo la piï¿œ semplice il htaccess 
del server apache, non so nginx se esista una cosa del genere). quindi 
una volta entrato sulla pagina delle webcam accedi con quelle 
credenziali e vedi tutte le webcam.. Penso sia semplicemente piï¿œ 
immediato e non devi entrare con ssh e flashare le regole ogni volta.

 pagina
 
Solo che iframe richiedono comunque connessione tra il browser e il
target dell'iframe, ergo se prima non risolvi il problema di
connessione/NAT/whatever, comunque non vedi niente.
 
La scelta ï¿œ tra uso di un reverse-proxy o giochini con i NAT.
Iframe o altro stan su un layer superiore.
 

 connessione/NAT/whatever, comunque non vedi niente.
 
In questo scenario il server web è su una macchina che è nella stessa 
rete delle videocamere quindi le vede direttamente.
 
L'unica regola da impostare una tantum è <interfaccia_esterna>:80 -> 
<RPI>.
 
 
INET-->ROUTER<--->RPI con server web
               |
               |->camera 1
              […]
               |->camera N


 
 
Mmmm mi sa che Skull abbia ragione, effettivamente tramite iframe mi 
collego sempre all'indirizzo della camera, e secondo me non c'entra 
niente neanche il NAT dato che richiederei un indirizzo privato che il 
mio pc client non saprà trovare. L'iframe avrà come sorgente ad esempio 
192.168.10.50, quindi se non mi creo una vpn al mio RPI, non potrò 
accedere agli indirizzi. A questo punto la soluzione valida rimane la 
tua, con proxy.

 mio pc client non saprà trovare.
 
Giusto, stavo facendo conto che fosse il server iniziale a fornire il 
contenuto dell'iframe e non il client.

 puo' essere, ma sapessi quanti ci sono cascati!
 
Non é che ci sono cascati, la gestione da remoto é attivata di default!
Se non lo sai o non ci pensi, ti trovi inchiappettato!
 
-- 
+---------------------------------------------------------------------------+
|  Le figlie di Maria, sono le prime a darla via.                           |
|  I figli di Gesu' lo voglion tutto su!                                    |
+-----#24--------------------Campagna contro le pubblicita` idiote.---------+

 Se non lo sai o non ci pensi, ti trovi inchiappettato!
 
il mio primo router (un atlantisland) aveva la gestione remota 
disattivata di default. Per attivarla si doveva entrare in telnet dalla 
lan e attivarla volontariamente.
Il router odierno (avm) non l'ha attiva di default e attivandola 
consente di accedere solo con https
 
Adriano