Newsgroup: it.comp.os.linux.sys
Titolo: iptables: quesito per esperti (credo)

Ciao a tutti.
Una premessa: non sono un gran conoscitore di iptables, me lo sto
studiando da qualche giorno, ma ogni approfondimento mi genera +
quesiti che risposte.
Ambiente industriale (macchinari). Ho un PC (windows) PC1 che fa parte
di una rete privata LAN1 (192.168.15.xxx) che si deve interfacciare
con un'altro PC windows PC2 di un'altra rete privata LAN2
(172.16.30.xxx).
Premesso che non posso aggiungere un'altra scheda ethernet a PC1, e
che non posso collegare direttamente la LAN1 con LAN2 in quanto
esistono altre sottoreti con lo stesso subnet, come posso fare tale
collegamento?
Ho pensato di mettere un box linux embedded con 2 schede ethernet e
fare un forward sulla eth1 di tutto quello che parte da 192.168.15.1
ed è diretto dalla LAN1 verso la LAN2 e tutto quello che parte da
172.16.30.8 sulla LAN2 venga forwardato verso la LAN1.
L'idea è quella di isolare le due reti e permettere il collegamento
solo tra i due pc in questione (es. 192.168.15.1 - 172.16.30.8).
La situazione è quindi la seguente: (mettere un font in spaziatura
fissa)
        /------------\                     /------------\
        |192.168.15.1|                     |192.168.15.8|
        \------------/                     \------------/
               |                                  |
               |                                  |
							--------------------------------------
                               |
                               |192.168.15.127 (eth0)
	                       /------------\
					               |Linux       |
					               \------------/
                               |172.16.30.170 (eth1)
                               |
							--------------------------------------
               |                                  |
        /------------\                     /------------\
        |172.16.30.1 |                     |172.16.30.8 |
        \------------/                     \------------/
Il PC 172.16.30.8 crede di comunicare con il 172.16.30.170, ma in
realtà tutto viene forwardato sulla LAN1 e nattato sul 192.168.15.1 (e
viceversa).
Secondo voi è possibile fare tutto ciò, e magari utilizzando solo
iptables?
Bè, nella mia testa sembra facile, ma nella realtà non ci sono
riuscito.
Ovvero, sono riuscito a far funzionare il telnet, ma non la
condivisione disco e la risoluzione dei nomi (wins). Quindi da un PC
sulla LAN2 riesco a collegarmi con telnet sul PC1 della LAN1, ma non
riesco a fare il ping con il nome del PC1 della LAN1. Ovviamente mi
sfugge qualcosa. Lo script è di questo tipo:
#echo 1 > /proc/sys/net/ipv4/ip_forward
#insmod ip_tables
#insmod iptable_ filter
#insmod ip_conntrack
#insmod iptable_nat
#insmod ipt_MASQUERADE
#iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source
192.168.15.127
#iptables -t nat -A POSTROUTING -o eth0 -s 
192.168.15.0/24
 -j
MASQUERADE
Se qualcuno mi sa dare una dritta....
Saluti a tutti

 disco e la risoluzione dei nomi (wins).
Troppo vago.
Chi è che fa da server wins, per cominciare?



ora non mi ricordo tutto x bene ma il principio dovrebbe esserci:
in primis però droppa le due reti con una subnet a 16
iptables -A INPUT -p tcp -s 
192.168.0.0/16
 -d 
172.16.0.0/16
 -j DROP
ed anche l'inverso
poi accetta i passaggi dei pacchetti
iptables -A INPUT -p tcp -s 
192.168.15.1/32
 -d 
172.16.30.8/32
 -j ACCEPT
iptables -A INPUT -p tcp -s 
172.16.30.8/32
 -d 
192.168.15.1/32
 -j ACCEPT
aggiungi le porte se ti serve e anche il -p udp che male non fa
poi ci sarebbe da dare una occhiata a 
#route
pingare i 2 pc 
usare uno sniffer casalingo già presente tipo tcpdump per vedere dove vanno
i pacchetti
spero di non averne dette troppe di ...
ciao

 spero di non averne dette troppe di ...
Dirne di più sarebbe stato complesso, in effetti.

whiplash ha scritto:

Penso il server di dominio dell'azienda.
Per essere precisi, la situazione è la seguente:
Ho una macchina che comunica con alcuni device(s) utilizzando una rete 
privata (192.168.15.x) e che normalmente funziona standalone.
Adesso mi viene chiesto di installare un software che fa server (OPC) 
sulla macchina in modo che fornisca dei dati ad un client che sta su 
un'altra rete locale (aziendale). Oltre a ciò, mi viene chiesto di 
impostare sulla macchina un altro indirizzo IP (172.16.30.170) e di non 
far passare il traffico della sottorete 192.168.15.x sulla lan aziendale.
Per motivi hardware purtroppo non posso semplicemente aggiungere una 
scheda di rete alla macchina ed impostare l'indirizzo richiesto.
----------------
Per questo motivo volevo separare le due reti con un computer embedded 
(kernel linux 2.6.9) con 2 porte ethernet. Volevo quindi impostare una 
delle 2 porte con l'indirizzo 172.16.30.170 e l'altra come 
192.168.15.127. Volevo quindi fare in modo che ogni pacchetto con 
destinazione 172.16.30.170 venisse forwardato e nattato sul 192.168.15.1.
La cosa funziona, ma ho il problema che dalla parte della sottorete 
172.16.3.x non mi viene risolto il nome della macchina. Suppongo che 
questo capiti perchè i pacchetti di broadcast (che annunciano il nome 
del pc wins?) della sottorete 192.168.15.x non passano nell'altra rete.
--------------
Per risolvere questo problema, stavo pensando di fare un applicativo sul 
pc embedded che intercetti i pacchetti di broacast (192.168.15.x-nome 
macchina) della mia macchina e li trasformi in (172.16.30.70-nome 
macchina). Come alternativa, potrei chiedere di modificare il il file 
hosts del PC client.
-------------
Se esiste una soluzione + semplice...
Grazie per l'interessamento.

 
Dopo tutte quelle che ho detto io....
Saluti e grazie per i consigli

whiplash wrote:

Se posso aggiungere una battuta.
P.S. prego non offendersi è un commento generale sui tanti post con oggetto
'aiuto', 'per esperti' o con nick femminili e altri ami vari ....
Ma solo a me è venuto la voglia di rispondere con 'io so la soluzione ma non
la scrivo visto che non sono esperto (credo)'?

 
Devo proprio essere rincoglionito... mi spiace ma non la ho capita.
Nel subject ho specificato che chiedevo aiuto su iptables e che non era 
un quesito semplice (per esperti), ho aggiunto (credo) perchè magari c'è 
una soluzione semplice ma che a me -che non sono esperto- non torna.
Non sono risentito, volevo solo capire..
Bye



eeeeeeeeeehhhhhhhhhhhhh che carattere :-)

 Troppo azzardato?
si può fare però diventa una cosa...
tcpdump dovrebbe esserci su tutte le distro ... non è difficile da usare
basta un po' di pazienza e leggere il man , cmq serve solo in caso di
necessità .
Direi che smanettare con iptables non è semplicissimo anche se ti permette 
di fare tutto quello che vuoi, l'unica cosa che ti direi di stare attento è
di usare le opzioni con tutta l'estensione per capire x bene tutto e poi
contrarre (questo per esperienza subita), occhio agli spazi che ti fanno
tirare qualche [ò@ààà#à#] ... e tempo a disposizione per provare
a questo punto ti direi di aggiungere anche un server DNS cioè bind,
con qualche tool grafico per configurarlo velocemente , almeno internamente
tutti vedono tutti e "blocchi chi non può" con iptables
visto che la macchina la devi piazzare io lo farei sarà lunga far puntare
tutti i pc al nuovo dns ma è per sempre almeno finchè non si brucia il pc
farai in tempo a dimenticarti come si fa da stabile che è!
fatti i backup dei file e cartelle utili 
ciauz

 eeeeeeeeeehhhhhhhhhhhhh che carattere :-)
Ma anche no.
Partiamo da qui:
:iptables -A INPUT -p tcp -s 
192.168.0.0/16
 -d 
172.16.0.0/16
 -j DROP
:ed anche l'inverso
Stai usando la catena INPUT che serve a filtrare i pacchetti diretti 
*al firewall*, non i pacchetti che vengono *instradati*.
Ora facciamo finta che tu abbia usato FORWARD al posto di INPUT
Se tu inserisci le regole nell'ordine da te elencato
iptables -A INPUT -p tcp -s 
192.168.0.0/16
 -d 
172.16.0.0/16
 -j DROP
iptables -A INPUT -p tcp -s 
172.16.0.0/16
 -d 
192.168.0.0/16
 -j DROP
iptables -A INPUT -p tcp -s 
192.168.15.1/32
 -d 
172.16.30.8/32
 -j ACCEPT
iptables -A INPUT -p tcp -s 
172.16.30.8/32
 -d 
192.168.15.1/32
 -j ACCEPT
si dà il caso che le prime due regole droppano i pacchetti e che nessun 
pacchetto arriverà mai alla terza o alla quarta regola.



a me non risulta visto che sul mio funziona!
e poi prima si dovrebbe chiudere tutto e poi aprire solo quello che ti serve
giusto?

 giusto?
Se fosse OpenBSD, avresti anche ragione...
Dato che così non è, suggerirei di capire come iptables funziona...
- --
Skull & Bones (ER6n Silver)
Neo:  I know Sendmail!
Morpheus:  Show me.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
iD8DBQFGP2gM8THo01J+SBERAt95AJ9BjUb7D2m0fT+w4QuzS9i4CrLHTgCdELuY
EcZgYp4/i6ygv48/fWgQzIU=
=xyMA
-----END PGP SIGNATURE-----

 Dato che così non è, suggerirei di capire come iptables funziona...
dimmi che ne pensi di un link a caso
http://www.commedia.it/ccontavalli/docs-it/iptables/iptables4dummies/iptables4dummies-26.html

 
http://www.commedia.it/ccontavalli/docs-it/iptables/iptables4dummies/iptables4dummies-26.html
Direi che riporta il modo corretto in cui la tua frase ("prima si
dovrebbe chiudere tutto e poi aprire") andrebbe utilizzata: con le
policy di chain, che infatti cita per prime.
Che hanno un significato ben diverso dal droppare tutto come prima regola...
- --
Skull & Bones (ER6n Silver)
Neo:  I know Sendmail!
Morpheus:  Show me.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
iD8DBQFGP3Uc8THo01J+SBERAtxEAJ9EgLBET39s7x9M3J1foVkTjwB2jACfak9G
gG11K9XLUiG6wSyKnzPOWu4=
=1/fY
-----END PGP SIGNATURE-----

 
adesso senza andare a vedere il mess. di partenza , aveva chiesto di tenere
le due reti non accessibili tra loro tranne che per i 2 pc che ne avevano
diritto , secondo te quale sarebbe stata la giusta istruzione da dare ?


fabio wrote:

Francamente non ho gran voglia di scrivere ruleset per qualcun altro,
soprattutto a 'sta ora...
Riprendo solamente l'appunto formale che già ti ha fatto Whiplash: se
metti una regola "più ampia" prima di una "più ristretta", nella seconda
non ci incocci mai, almeno in iptables...
Quindi prima gli ACCEPT "mirati" e poi il DROP, oppure DROP solo in
policy (che è poi la stessa cosa)...
- --
Skull & Bones (ER6n Silver)
Neo:  I know Sendmail!
Morpheus:  Show me.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
iD8DBQFGP4UZ8THo01J+SBERAi61AJ9PuWgmiSdeABm9UXHQF1nZ/NukvwCgjOGX
nPcgjDHFo7RhmmS/qow7FZI=
=c1hY
-----END PGP SIGNATURE-----


faremo tesoro di questo consiglio

 a disposizione che ne capiamo di più, OK?
Cercare di spiegare come funziona iptables in maniera semplice?!?
L'ho fatto oramai alcuni anni fa:
http://www.skullkrusher.net/linux/iptables.html
Nel frattempo, di gente che ha scritto tutorial su iptables è pieno,
ergo ora come ora impiego il tempo altrimenti...
- --
Skull & Bones (ER6n Silver)
Neo:  I know Sendmail!
Morpheus:  Show me.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
iD8DBQFGP5ej8THo01J+SBERAk+RAJ9Zi/pF2nxPu9KjkOGnIRRk0rbiowCgxWXU
+bzVwGw5Hlh9qyUhChIMp9U=
=1Zxu
-----END PGP SIGNATURE-----

 Se fosse OpenBSD, avresti anche ragione...
(che poi anche con ipf/pf usavo sempre quick, tanto mantenere una logica
simile a quella di iptables. :-D)

 giusto?
Con iptables lo si fa con le policy di catena.