# ip_tables con linux 2.6.x

## vaporino

Ed eccomi di nuovo qua...........

ho seguito la seguente guida  

www.gentoo.org/doc/it/home-router-howto.xml

per condividere la mia connessione..........ma ho riscontrato problemi con iptables dato che non sono riuscito a compilare il modulo ip_tables!!!!

Dato che la guida si riferisce au kernel 2.4.x e io ho un kernel 2.6.15.............vorrei sapere come si fa a compilare questo modulo con questo kernel!!!

Spero che qualcuno mi possa aiutare.......  :Crying or Very sad:   :Crying or Very sad: 

----------

## Ilvalle

Ciao nel kernel, hai selezionato la sezione netfilter ?

iptables, devi installarlo con emerge, nel kernel, trovi i moduli che poi vai a utilizzare tramite il programma in usermode.

Per condividere la connesione se hai seguito la guida correttamente e installato iptables, dovresti essere a posto.

ciao

----------

## vaporino

Ho gia selezionato netfilter.........e naturalmente ho emerso iptables.

Ma lanciando iptables ottengo

FATAL: Module ip_tables not found.

iptables v1.3.4: can't initialize iptables table `filter': iptables who? (do you need to insmod?)

Perhaps iptables or your kernel needs to be upgraded.

Che potrei fare,,,,,,,non so magari ci sono altre opzioni da settare nel kernel????

----------

## gutter

Controlla se hai almeno questi moduli:

```

CONFIG_IP_NF_IPTABLES=m

CONFIG_IP_NF_TARGET_REJECT=m

CONFIG_IP_NF_TARGET_LOG=m

CONFIG_IP_NF_NAT=m

CONFIG_IP_NF_NAT_NEEDED=y

CONFIG_IP_NF_TARGET_MASQUERADE=m

```

Che errore di compilazione ottieni?

----------

## fabius

Abilita "Core Netfilter Configuration -> Netfilter Xtables support" e poi "Ip: netfilter configuration -> IP tables support -> Packet filtering"

----------

## vaporino

Fabius, ho attivato anche quelle opzioni.........ma niente!!!  :Crying or Very sad:   :Crying or Very sad: 

Ancora lo stesso errore!!!

Gutter come si fa a controllare questi moduli??? Con lsmod???

----------

## fabius

Hai selezionato le opzioni come moduli o builtin? Magari sarà banale ma nel primo caso li hai caricati? Nel secondo caso hai riavviato?

Delle due opzioni che ti ho dato, la prima ti dà la possibilita di abilitare l'altra mentre la seconda ti dà le opzioni CONFIG_IP_NF_IPTABLES e CONFIG_IP_NF_FILTER

----------

## vaporino

Ok, sono riuscito a fare le prime cose con iptables

ma quando lancio       

iptables -p INPUT ACCEPT

mi da il seguente errore

iptables v1.3.4: unknown protocol `input' specified

Try `iptables -h' or 'iptables --help' for more information.

E' ancora un problema di compèilazione del kernel????

----------

## .:chrome:.

commetti un errore di sintassi

leggi la guida ufficiale che trovi su www.netfilter.org

c'è una beginners guide abbastanza chiara.

----------

## vaporino

ok con iptables tutto risolto........solo che ho provato a connetere un altro pc alla sheda di rete eth0  (con eth1 mi collego ad internet) e non riesco a condividere la connessione ad internet. Ho rpovato a pingare, ma i due host risultano non raggiungibili!!!

Ho settato eth0 con indirizzo ip 192.168.0.1 e la scheda dell'altro pc (su Windows) con indirizzo 192.168.0.2 e gateway 192.168.0.1 anche perchè non riesco ada ottenere un indirizzo ip automaticamente!!!! Non vorrei che non funzionasse anche il dnsmasq!!!

Inoltre lanciando dmesg ottengo il seguente errore

eth0: -- ERROR --

        Class:  internal Software error

        Nr:  0x19e

        Msg:  Vpd: Cannot read VPD keys

Che significa???? 

Cmq lanciando ifconfig eth0 sembrerebbe perfettamente configurata!!!!!

Ok sento che ci sono quasi........ un altro piccolo aiutino!!!

----------

## Maxxer

 *vaporino wrote:*   

> ok con iptables tutto risolto........solo che ho provato a connetere un altro pc alla sheda di rete eth0  (con eth1 mi collego ad internet) e non riesco a condividere la connessione ad internet. Ho rpovato a pingare, ma i due host risultano non raggiungibili!!!

 

hai usato un cavo incrociato, vero?

 *vaporino wrote:*   

> Ho settato eth0 con indirizzo ip 192.168.0.1 e la scheda dell'altro pc (su Windows) con indirizzo 192.168.0.2 e gateway 192.168.0.1 anche perchè non riesco ada ottenere un indirizzo ip automaticamente!!!! Non vorrei che non funzionasse anche il dnsmasq!!!

 

Il fatto che non riesci ad ottenere un ip automaticamente è perché su gentoo non hai installato un server DHCP. Se vuoi, udhcpcd è davvero molto semplice. 

il dnsmasq non centra con il fatto che non si pingano tra loro.

----------

## vaporino

No maxxe, forse mi sono spiegato male, dicevo che non funzionasse il dnsmasq perchè non riesco ad ottenere un indirizzo ip ,in maniera automatica,per la scheda di rete che si vuole connettere al mio pc!!! Se non ho capito male dnsmasq è un server dhcp in grado di assegnare indirizzi ip!!! Cmq si è chiaro che non serve a pingare due pc  :Wink: 

Naturalmente uso un cavo incrociato.........

Cmq ripeto: Non capisco cosa significa questo errore che ho lanciando dmesg

eth0: -- ERROR --

Class: internal Software error

Nr: 0x19e

Msg: Vpd: Cannot read VPD keys

----------

## vaporino

Non vorrei che non si trovano i due host per questo problema!!!

----------

## vaporino

Allora riassumo un po la situazione.........

Riesco a pingare dall'host wnxp verso il mio pc con il quale mi connetto ad internet tramite un modem Ethernet. Se provo a pingare dal pc linux verso pc winxp mi dice che l'host non è raggiungibile.

Ho seguito come già detto la guida per configurare router domestico assegnado gli stessi indirizzi come suggerito dalla guida.

Allora con la sheda eth1 mi connetto ad internet tramite protocollo pppoe e non ho assegnato nessun indirizzo (cosa strna, ma mi connetto cmq) alla scheda eth0 ho assegnato ip 192.168.0.1\255.255.255.0 come suggerito da guida.

Ho sistemato le regole di iptables nello stesso identico modo della guida.

Il client winxp è settato con indirizzo ip 192.168.0.2\255.255.255.0 e gateway 192.160.0.1. Ho sistemato opzioni internet come suggerito dal sito della microsoft (per la condivisione della connesione)!!!

Allora l'output di route dopo essermi connesso ad internet è il seguente

192.168.100.1   *                 255.255.255.255    UH    0      0        0 ppp0

192.168.0.0       *                 255.255.255.0          U     0      0        0 eth0

loopback        localhost         255.0.0.0                UG    0      0        0 lo

default         192.168.100.1       0.0.0.0               UG    0      0        0 ppp0

L'output di iptables-save è il seguente

# Generated by iptables-save v1.3.4 on Wed May 31 21:46:57 2006

*nat

:PREROUTING ACCEPT [4632:298927]

:POSTROUTING ACCEPT [554:34936]

:OUTPUT ACCEPT [554:34936]

-A POSTROUTING -o 0 -j MASQUERADE

COMMIT

# Completed on Wed May 31 21:46:57 2006

# Generated by iptables-save v1.3.4 on Wed May 31 21:46:57 2006

*mangle

:PREROUTING ACCEPT [16340:9270695]

:INPUT ACCEPT [14987:9192272]

:FORWARD ACCEPT [1219:69206]

:OUTPUT ACCEPT [13072:2361107]

:POSTROUTING ACCEPT [13674:2395081]

COMMIT

# Completed on Wed May 31 21:46:57 2006

# Generated by iptables-save v1.3.4 on Wed May 31 21:46:57 2006

*filter

:INPUT ACCEPT [1457:995778]

:FORWARD DROP [1211:68792]

:OUTPUT ACCEPT [1669:224437]

-A INPUT -i lo -j ACCEPT

-A INPUT -i 0 -j ACCEPT

-A INPUT -i ! 0 -p udp -m udp --dport 67 -j REJECT --reject-with icmp-port-unreachable

-A INPUT -i ! 0 -p udp -m udp --dport 53 -j REJECT --reject-with icmp-port-unreachable

-A INPUT -i 0 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -i ! 0 -p tcp -m tcp --dport 0:1023 -j DROP

-A INPUT -i ! 0 -p udp -m udp --dport 0:1023 -j DROP

-A FORWARD -d 192.168.0.0/255.255.0.0 -i 0 -j DROP

-A FORWARD -s 192.168.0.0/255.255.0.0 -i 0 -j ACCEPT

-A FORWARD -d 192.168.0.0/255.255.0.0 -i 0 -j ACCEPT

COMMIT

Ragazzi sto impazzendo..............ma che cavolo sbaglio????

----------

## vaporino

Ragazzi per favore un aqualsiasi consiglio mi puo essere utile.........

----------

## Maxxer

il fatto che non pinghi da Linux a Windows potrebbe essere (azzardo) il firewall di XP?

su linux hai eseguito

echo "1"> /proc/sys/net/ipv4/ip_forward

----------

## vaporino

Non penso che sia un problema di firewall.....se provo a pingare con due pc winxp si vedono tranquillamente!! Poi non so se con uno linux e l'altro win devo configurare qualche firewal!!!

Ho provato con un client linux e si pingano tranquillamente.........

Cmq volevo chiedervi una informazione

Ho a disposizione un hub e un modem ethernet.....,per connetermi a internet e condividere la connessione, basta avere una SOLA scheda di rete in modo da poter agganciare il pc all'hub e il modem ethernet pure all'hub.......oppure connetere un pc al modem con una sheda di rete e connetrmi all'hub con un'altra scheda di rete (e in questo caso occorrono almeno due schede di rete)?

E poi un'altra cosa......che cavi devo usare ?? Cavi incrociati o diretti??? Penso cavi diretti

----------

## vaporino

Maxxer avevi proprio ragione!!!

Era un problema di firewall di win........cmq ora si pingano ma non riesco a condividere la connessione!!!

Il client winxp non riesce a pingare nemmeno sul modem!!! Che posso fare ripeto ho seguito alla lettera le istruzioni della guida!!!

----------

## ^Stefano^

Ciao, anche io ho seguito quella guida per condividere la connessione tra due pc linux, non l'ho trovata affatto soddisfacente. ti posto le mie regole e la mia procedura:

```
iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
```

e questa è la base. già così dovresti riuscire a navigare.impostare INPUT a drop comporta l'inserimenti di queste regole:

```
iptables -A INPUT -m state --state RELATED -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
```

perchè altrimenti non va nulla, almeno da me. il 5° comando della prima sezione postata lo usi solo, e ripeto solo, se hai problemi di navigazione nel client su alcune pagine. praticamente a me e ad altri succedeva che il client riusciva a visualizzare solo alcune pagine tramite browser, ma riuciva a pingarle tutte.

riguardo ai cavi da usare fai così; collega il pc linux con quello windows quando sono accesi e controlla che le schede di rete si accendano (credo che tutte le schede abbiano un led), se si accendono il cavo va bene, altrimenti no. io ho inserito queste regole, più altre che servono a me ma sono per far andare programmi come amule ed ssh, in un file che chiameremo IPT. salvi il file nella tua home o dove vuoi, sul gateway ovviamente, e gli dai i permessi di esecuzione. poi fai:

```
/etc/init.d/iptables start

iptables -F

iptables -t nat -F

/etc/init.d/iptables save
```

controlli di non avere più regole

```
iptables -L && iptables -t nat -L
```

carichi lo script e salvi

```
./$SCRIPT

/etc/init.d/iptables save

/etc/init.d/iptables restart
```

poi facci sapere.

----------

## vaporino

Stefano, intanto grazie per l'aiuto..........

ma mi sa che ho peggiorato le cose.......allora prima di tutto ho cancellato tutte le regole del nat come mi hai suggerito 

iptables -F

iptables -t nat -F 

almeno credo servano a questo no??

poi ho messo le seguenti regole come suggerito sempre da te

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

iptables -A INPUT -m state --state RELATED -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

ma in questo modo penso che ci sia un problema di firewall nel mio pc........perchè io riesco a pingare verso il client winxp e lui non riesce a pingare verso di me!!! E inoltre non riuscivo più ad aprire pagine web.....per risolvere il problema HO DOVUTO STOPPARE IPTABLES!!!

COME POSSO CONTROLLARE QUESTI FIREWALL????

----------

## ^Stefano^

quando hai stoppato le regole vecchie, avevi iptables avviato? perchè lo devi fare così, altrimenti lui non le elimina. cioè i comandi che ti ho inserito sopra erano da incollare pari pari nella stessa sequenza.

ad ogni modo postaci un 

```
iptables -L
```

```
iptables -t nat -L
```

e postacelo dopo aver avviato /etc/init.d/iptables altrimenti non serve a nulla. perchè il servizio in /etc/init.d salva le regole in un file, se tu lo stoppi, elimini le regole, poi lo riavvii noterai che le regole vecchie sono ancora li.

----------

## vaporino

ok....ho riprovato a rifare tutto stoppando iptables ma niente da fare non riesco nemmeno ad aprire pagine, ho  dovuto stoppare iptables nuovamente!!!

Riporto quello che mi hai chiesto:

iptables -t nat -L

Chain PREROUTING (policy ACCEPT)

target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)

target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

Quello che mi fa uscire pazzo e che non capisco come mai funziona a tutti tranne a me........  :Crying or Very sad:   :Crying or Very sad: 

----------

## ^Stefano^

secondo quello che hai postato non hai eseguito nulla di quello che ti ho scritto. se lo hai eseguito, hai sbagliato perchè se incolli tutti i comandi che ho scritto in successione (compreso la creazione dello script, che poi non è altro che un file con dentro le regole. devi solo inserire #!/bin/bash nella prima riga e le regole una sotto l'altra) non ti torna il nulla. perchè negli out che hai postato non hai una regola che sia una impostata, neanche il masquearding.

----------

## vaporino

Scusami stefano ho fatto esattamente questo:

/etc/init.d/iptables stop

iptables -F

iptables -t nat -F 

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

iptables -A INPUT -m state --state RELATED -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

/etc/init.d/iptables start

in sequenza per come ho riportato......

Non mi parlare di script perche non ne capisco nulla.......così non ho fatto quello che mi hai detto???

----------

## ^Stefano^

 *vaporino wrote:*   

> Scusami stefano ho fatto esattamente questo:
> 
> /etc/init.d/iptables stop
> 
> iptables -F
> ...

 

hai fatto esattamente il contrario:

fai così, adesso:

```
/etc/init.d/iptables start
```

```
iptables -F && iptables -t nat -F
```

```
/etc/init.d/iptables save
```

ora, sempre con iptables avviato, ma senza regole, perchè le hai eliminate ed hai salvato l'eliminazione, incolli quelle 6 regole che mi hai appena postato, una poi invio e così via. non dovrebbero tornarti errori. poi dai

```
/etc/init.d/iptables save
```

```
/etc/init.d/iptables restart
```

e adesso dovrebbe andare. ogni qualvolta modifichi le regole di iptables, il servizio /etc/init.d/iptables deve essere avviato, perchè altrimenti non legge le modifiche e quando lo vai a startare ti ritorna con le regole vecchie. poi dopo ogni modifica, a servizio avviato, devi dare sempre /etc/init.d/iptables save

P.S. se per caso vedi che il client riesce a navigare solo su alcune pagine e non su altre, tipo www.google.it funziona ma www.gentoo.org no, aggiungi questa regola alle precedenti:

```
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
```

per aggiungerla, iptables deve essere avviato, quindi la aggiungi, salvi e restarti.

----------

## vaporino

Siiiiiiiiiiiii...................finalmente FUNZIONAAAAAAAAAAA!!!!!!!!  :Laughing:   :Laughing:   :Laughing:   :Laughing:   :Laughing: 

DOPO TRE GIORNI ce l'ho fatta.............e GRAZIE soprattutto a STEFANO!!!!!!!1

STEFANO non so come sdebitarmi......chiedimi qualsiais cosa e vedrò cosa potrò fare.........  :Wink:   :Wink: 

----------

## vaporino

sembrerebbe tutto ok.......ma non riesco più a raggingere l'hostneme dinamico che mi sono fatto con www.dyndns.org!!

Sarà un problema di quella regola che ancora non ho messo???

Cmq ho provato ad inserirla e mi da il seguente errore!!!

iptables: No chain/target/match by that name

ho compilato pure il modulo tcpmss nel kernel..........

Bohh

Ste ti chiedo solo quest'ultimo aiutino: per emule che regole dovrei mettere per avere id alto???

----------

## ^Stefano^

mi sono scordato di dirti che quando inserisci quella regola, devo caricare prima il modulo ipt_tcpmss altrimenti non va. se vuoi aprire qualche porta tipo quelle di amule o altro riguarda la guida, sezione cose da fare nei giorni di pioggia, li trovi tutto! per il tuo host, dyndns, devi giocherellare con iptables. prova magari a sotituire iptables -P INPUT DROP con iptables -P INPUT ACCEPT e togliere iptables -A INPUT -m state --state RELATED -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT ma non so se serva. quando fai le modifiche ricorda quello che ti ho scritto.

EDIT 03-06-06: vedo che non hai più inserito risposte, quindi deduco che bene o male il problema che avevi e per il quale hai aperto il post l'hai risolto. ora, per favore, edita il titolo del primo post inserendo il tag [Risolto].

colgo l'occasione per segnalarti un paio di guide molto semplici a iptables che forse potranno esserti utili:

http://www.topolinux.org/vis_articoli.php?articolo=iptable_man_1&numero=5&titolo=Configurazione%20manuale%20di%20IpTables

www.zeusnews.it/allegati/002033-linux-firewall.pdf

http://www.pluto.it/files/ildp/HOWTO/Masquerading-Simple-HOWTO/index.html

Saluti

----------

