# help ipconfig per forwardare porte

## darkice

ciao a tutti di nuovo

scrivo perchè ho un problema.

sto cercando di settare uno script all'avvio per le regole di iptables.

lo scenario è questo:

internet <<<--(wifi)---server----(ethernet)---desktop

il server è dove viene eseguito lo script all'avvio.

le attuali regole sono queste

```
sysctl -w net.ipv4.ip_forward=1

iptables --flush

iptables --table nat --flush

iptables --delete-chain

iptables --table nat --delete-chain

iptables -A FORWARD -s 192.168.0.0/24 -i eth0 -j ACCEPT

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -t nat -A POSTROUTING  -s 192.168.0.0/24 -j MASQUERADE

iptables -A INPUT -i eth0 -p icmp -j ACCEPT

iptables -A INPUT --dport 113 -j REJECT

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT

iptables -A INPUT -p tcp --dport 21 -s 192.168.0.0/24 -j ACCEPT

iptables -A INPUT -p  tcp -m state -s 0/0 --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p  udp -m state -s 0/0 --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p  icmp -m state -s 0/0 --state ESTABLISHED,RELATED -j ACCEPT

#Donkey ports

iptables -A INPUT -p TCP --dport 15052 -j ACCEPT

iptables -A INPUT -p UDP --dport 15056 -j ACCEPT

#Overnet ports

iptables -A INPUT -p TCP --dport 8740 -j ACCEPT

iptables -A INPUT -p UDP --dport 8740 -j ACCEPT

#Kademlia port

iptables -A INPUT -p TCP --dport 6956 -j ACCEPT

iptables -A INPUT -p UDP --dport 6956 -j ACCEPT

#web port

iptables -A INPUT -p TCP --dport 4080 -j ACCEPT

```

innanzitutto se eseguo ciò mi appare

```
net.ipv4.ip_forward = 1

iptables v1.4.10: unknown option `--dport'

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

e la domanda è: cosa non va?

ma soprattutto...ci sono cose a parte l'errore che non vanno bene in come l'ho strutturato?

poi...siccome col desktop ci gioco, vorrei che venissero forwardate le porte di gioco (ho una piccola lista)

se non ho capito male si deve fare col prerouting, solo che come ho fatto seguendo qualche esempio qua e la non mi va.

quindi, chiedo qulche chiaro piccolo esempio con la porta singola 1500 ed un altro esempio con un range, 27000-27050, di modo che possa capire cosa sbaglio e farmi tutte le altre da solo.

grazie!

ps:devo forwardare perchè per connettere tutta casa a internet ho uno scarsissimo router alice adsl, e primariamente è lui che blocca i giochi, ma una volta che sblocco sul router devo poter fare transitare liberamente i pacchetti dal desktop che sta dietro il server, fino al router.Spero sia chiaro con questo edit qual'è tutto il problema

----------

## Pes88

```

iptables -A INPUT --dport 113 -j REJECT

```

manca il protocollo, io l'ho corretto cosi è va : 

```

iptables -A INPUT -p tcp --dport 113 -j REJECT

```

----------

## ago

A parte la regola che non va ti consiglierei di strutturarlo meglio.

Regole di output non ne hai?

----------

## djinnZ

 *darkice wrote:*   

> uno script all'avvio per le regole di iptables.
> 
> ```
> sysctl -w net.ipv4.ip_forward=1
> ```
> ...

 per questo ti basta andare a modificare /etc/sysctl.conf (da qualche parte nell'rc c'è la chiamata automatica a sysctl -P), il comando sysctl si usa direttamente in /etc/conf.d/net in una funzione postup insieme a ifplugd o simili (cose del genere abilito il forward solo se sono su una certa rete o solo quando sono connesso tramite la porta ethernet piuttosto che con la wifi od il modem).

Idem con patate per iptables, imposti le regole e lanci /etc/init.d/iptables save.

Se hai bisogno di regole alternative a seconda del contesto attivi la gestione di RC_CONFIG_PROFILE="yes" (o qualcosa del genere in /etc/conf.d/rc) e ti crei dei runlevel alternativi (però sysctl.conf resta unico per questo si inserisce il comando in postup nei relativi net.[runlevel]).

In realtà anche per sysctl puoi pensare di usare l'opzione -a per vedere cosa caricare e cosa no.

Terminati i "consigli per gli acquisti " mi par di capire che ti sei scordato il -p tcp (ovvero iptables ti chiede "si devo bloccare una porta ma che porta? tcp, udp, udplite, icmp, esp, ah, sctp or all?") oppure manca qualcosa nella configurazione del kernel o che per qualche misteriosa ragione non viene caricato il modulo corrispondente (vale per eventuali distrazioni future).

 *darkice wrote:*   

> merdosissimo

   :Shocked:  come si vede che i moderatori sono latitanti ultimamente (non fateci caso è un tentativo di stanarne un paio)  :Laughing: 

----------

## darkice

ahah scusa la volgarità contro il router alice, mi auto-modero

e provo a leggere meglio cosa avete scritto con un pò + di calma + tardi quando torno, perchè mi avete detto una sfilza di cose (riguardo il sysctl.conf soprattutto) che non sapevo e devo assimilarle con cognizione e un pò di tempo di più a disposizione.

intanto faccio una piccola confessione: tutte queste regole di ipconfig io le sto mettendo in /etc/conf.d/local.start, perchè già lo usavo per fare impostare all'avvio  "echo ondemand  > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor &>/dev/null" e visto che per per questo scopo si era rivelato efficace, ho pensato che aggiungerci le regole di ipconfig non avrebbe fatto male.

Sicuramente è stata una soluzione grezza, per cui se mi date qualche indicazione per migliorare, mi fa solo piacere.

----------

## darkice

 *ago wrote:*   

> A parte la regola che non va ti consiglierei di strutturarlo meglio.
> 
> Regole di output non ne hai?

 

non ho idea di cosa metterci XD a me serviva giusto che il server condividesse la connessione col desktop  e che possibilmente mi tenesse aperte porte per scaricare e giocare col desktop (oltre che le porte per l'ssh sia verso la lan che verso internet)...

quelle per l'output sono per le connessioni stabilite dal pc che fa da firewall (+ il desktop collegato) verso l'esterno no?sinceramente ora come ora non saprei cosa metterci

----------

## ago

 *darkice wrote:*   

> non ho idea di cosa metterci XD a me serviva giusto che il server condividesse la connessione col desktop  e che possibilmente mi tenesse aperte porte per scaricare e giocare col desktop (oltre che le porte per l'ssh sia verso la lan che verso internet)...

 

Scusa la curiosità, ma dopo aver corretto la regola ti funziona?

per il resto, sul consiglio che hai chiesto ( mi secca quotare a quest'ora  :Very Happy:  ) metti il tutto in un file ed eseguilo con 

```
./file
```

successivamente lanci 

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

 e all'avvio dovrebbe partire iptables con le stesse regole

----------

## darkice

ah ottimo (il suggerimento per ipconfig-save)

giacchè siamo notturni, ti chiedo una cosa: per motivi di velocità e anche perchè una volta risolto, feci in modo che il server assegnasse un indirizzo tramite dhcp al desktop.Però a me effettivamente tornerebbe più comodo che l'indirizzo di quest'ultimo fosse fisso.Solo che se lo metto fisso, non mi si connette + a internet, pur pingando il server e funzionando l'ssh.Come mai?ho anche messo i dns nel resolv.conf e niente di niente.Cosa non ho fatto?

----------

## darkice

ah cmq si non mi da più messaggi di errore.

se adesso risolvo la questione del forwarding delle porte di gioco, mi sta bene così (per ora, o almeno fino a che non avrò voglia di fare altri macelli)

----------

## Pes88

 *Quote:*   

> 
> 
> giacchè siamo notturni, ti chiedo una cosa: per motivi di velocità e anche perchè una volta risolto, feci in modo che il server assegnasse un indirizzo tramite dhcp al desktop.Però a me effettivamente tornerebbe più comodo che l'indirizzo di quest'ultimo fosse fisso.Solo che se lo metto fisso, non mi si connette + a internet, pur pingando il server e funzionando l'ssh.Come mai?ho anche messo i dns nel resolv.conf e niente di niente.Cosa non ho fatto?
> 
> 

 

Non è possibile che se usi un assegnamento statico degli ip non ti si connetta piu a internet, stai sbagliando qualcosa!!! 

Quando usi l'assegnamento statico setti anche il gatway e le maschere di rete corrette??? 

Il dhcp non manda solo l'indirizzo  ma anche il gateway e l'indirizzo di rete e le maschere! 

Quindi se ho capito un po il tuo caso l'indirizzo pubblico deve assegnato al pc che fa da router con il firewall, qui devi impostare iptable con le regole per attivare il NAT se vuoi che gli altri pc della tua rete possano uscire in internet. Ppoi agli altri pc assegni un indirizzo privato e come gateway imposti il pc  che fa da router.

quindi per esempio una cosa del genere : 

            94.11.44.11             192.168.1.1    192.168.1.3 

internet ----> wifi (server ) ethernet ----> desktop 

                             Firewall-NAT

----------

## ago

 *darkice wrote:*   

> ah ottimo (il suggerimento per ipconfig-save)
> 
> giacchè siamo notturni, ti chiedo una cosa: per motivi di velocità e anche perchè una volta risolto, feci in modo che il server assegnasse un indirizzo tramite dhcp al desktop.Però a me effettivamente tornerebbe più comodo che l'indirizzo di quest'ultimo fosse fisso.Solo che se lo metto fisso, non mi si connette + a internet, pur pingando il server e funzionando l'ssh.Come mai?ho anche messo i dns nel resolv.conf e niente di niente.Cosa non ho fatto?

 

```
ifconfig eth0 192.168.0.20/24

route add default gw 192.168.0.1

echo "nameserver 8.8.8.8" > /etc/resolv.conf

echo "nameserver 8.8.4.4" >> /etc/resolv.conf
```

Oppure setti /etc/conf.d/net

P.S. ovviamente i valori degli ip erano indicativi

Controlla che la porta 53 sia aperta

----------

## djinnZ

tanto per cattiveria ti voglio confodere un tantino in più le idee  :Laughing: 

Per l'indirizzo ip fisso puoi pensare di installare e configurare dhcpd, è molto semplice basta qualcosa del genere 

```
host xxxxxxxxx {

     option host-name "xxxxxxxxx";

     hardware ethernet xx:xx:xx:xx:xx:xx;

     fixed-address xxx.xxx.xxx.xxx; }
```

, ma vorrei capire ed esser certo che il tuo router non operi in modalità half-bridge (il server prende un indirizzo ip internet, non locale).

In questo caso la soluzione più semplice, a parte buttare il router (faccio notare che non sono gratuiti ed il costo di noleggio in uno/due anni è pari al loro valore d'acquisto od al valore di un tplink con openwrt che a questo punto renderebbe inutile il server per firewall e dhcp), è mettere due schede di rete una solo al "modem" l'altra per la rete interna; la soluzione appena più complicata è configurare due ip sulla stessa scheda uno in dhcp assegnato dal router l'altro per la rete locale ma in questo caso dovresti usare gli ip statici.

Tra le tante regole possibili, se usi ip statici, prova a dare uno sguardo a 

```
-m mac --mac-source
```

 (ed all'uso della negazione e del DROP), potrebbe interessarti ed è molto potente.  :Wink: 

e non dimenticare gli helper nella configurazione del kernel, funchè non sei certo di quel che ti serve non disabilitare nulla per tunnel, firewall e protocolliu assortiti.

Per l'ondemand (mai applicato al governor, anche il portatile lo uso come fisso) non ti è venuto a mente di lanciare un banale eix cpufreq?  :Confused: 

Ti basta installare cpufrequtils, aggiungere l'apposito initscript al runlevel boot (o default? non ricordo e non voglio applicarmi) e modificare di conseguenza /etc/conf.d/cpufrequtils...  :Confused: 

Gentoo non è una ciofeca di RH che ti installa a forza anche quello che non vuoi, devi dirgli tu cosa ti serve.

----------

## darkice

non voglio andare offtopic parlando del governor per le prestazioni, so che impostarlo in quel modo è grezzo ma per me l'importante specie ora è che vada.Mi ci sbatto in un secondo momento (sapevo che esistono modi migliori o con tool apposta per gestirlo anche in maniera fine, ma le guide e i manuali sono poco chiari, secondo me).

detto ciò, immagino che voi conosciate come viene  strutturata alice adsl: ti danno un router e i pc si devono collegare ad esso in wifi o ethernet.

detto ciò il mio server si collega in wireless al router, ottenendo un indirizzo di rete del tipo 192.168.1.X

tra l'altro, ciò ora come ora non avviene proprio direttamente perchè tra server e router ci sta un access point che fa da ripetitore universale, con un proprio dhcp che però usa la stessa maschera di rete generata dal router (e le stesse impostazioni per il wifi...altrimenti non sarebbe un ripetitore XD)

quindi il server ha accesso a internet in questo modo.

Avevo messo a sua volta un server dhcp in esecuzione sul server per dare un indirizzo automatico al desktop.

E funziona.

Ho maturato successivamente l'idea di metterlo fisso al desktop perchè mi risulta più facile la gestione del firewall e della connessione tra questi due computer anche a distanza (quando mi collego via internet ed ssh al server e ad esempio volessi da esso collegarmi sempre con ssh in locale, al desktop -che ha anche esso una partizione con gentoo)

ieri ho provato quindi a mettere 192.168.0.3 al desktop, lasciando come gateway il server 192.168.0.1.In /etc/resolv.conf ho messo i dns alice presenti nel router, esattamente come è per il resolv del server.

Ma niente, non ho accesso a internet.Se rimetto il dhcp, funziona.

configurare dhcp per fissare l'indirizzo?non l'ho fatto, ma potrebbe essere un'idea, per quanto io reputi migliore la soluzione di configurare direttamente dai file di configurazione in /etc/conf.d/ perchè penso che sia più semplice oltre che più diretto e quindi più chiaro anche se successivamente volessi nuovamente cambiare le cose.Quindi privilegierei questa strada.

quanto alle opzioni di ipconfig relative al mac address....un passo alla volta.Prima voglio padroneggiare con una certa dimestichezza le basi.

purtroppo son partito e quindi eventuali modifiche le dovrò fare a distanza via ssh, quindi le prove per fissare l'indirizzo  al desktop sono rimandate al mio prossimo rientro a casa.Ma nel frattempo potrò migliorare le regole di ipconfig.

Mi era stato detto che dovevo impostare delle regole per l'OUTPUT, vorrei approfondire la questione.

cosa suggerite?

----------

## Pes88

 *Quote:*   

> 
> 
> detto ciò il mio server si collega in wireless al router, ottenendo un indirizzo di rete del tipo 192.168.1.X 
> 
> tra l'altro, ciò ora come ora non avviene proprio direttamente perchè tra server e router ci sta un access point che fa da ripetitore universale, con un proprio dhcp che però usa la stessa maschera di rete generata dal router (e le stesse impostazioni per il wifi...altrimenti non sarebbe un ripetitore XD)
> ...

 

Io mi sono fatto quest'idea, dimmi se è plausibile, se con il dhcp funziona significa che il dhcp le assegna un indirizzo 192.168.1.x e poichè tu hai attiva l'opzione ip_forwarding sul server questo lo instrada al router wifi, invece nell'altro modo  tu assegni un idirizzo del tipo 192.168.0.X che è una rete diversa da quella che si crea tra server e route alice, in questo caso devi attivare il nat con una regola di prerouting sul server in modo tale che ti trasli i pacchetti da una rete all'altra modificando gli indirizzi...

----------

## darkice

sembra molto plausibile vista in questa maniera, anche se ti correggo dicendo che il dhcp assegna un indirizzo al desktop del tipo 192.168.0.X e non .1.X

(che poi stranamente mi assegna sempre 13, bah, mistero della fede)

----------

## djinnZ

se non ho capito male: 192.168.0.1 (router alice) -> 192.168.0.2 (ripetitore) -> 192.168.0.3 (server) -> 192.168.0.4 (pc) 

oppure

 192.168.1.1 (router alice) -> 192.168.0.1 (ripetitore) -> 192.168.0.2 (server) -> 192.168.0.3 (pc) 

oppure ancora se il ripetitore è un puro ripetitore

192.168.0.1 (router alice) -> (ripetitore) -> 192.168.0.2 (server) -> 192.168.0.3 (pc)

ed il pc, in tutti i casi, ha come gateway il server non il router alice od il ripetitore (sempre che ho capito cosa intendi per ripetitore).

Ora però tiro ad indovinare perchè non capisco come è fatta la tua rete.

----------

## darkice

router (192.168.1.1) --> ripetitore (192.168.1.253) -->server (192.168.1.X ottiene ip da dhcp del ripetitore) -->desktop(192.168.0.X ottiene ip da dhcp del server anche se vorrei renderlo statico, come descritto prima)

----------

## Pes88

Guarda io avevo una struttura di rete simile alla tua, escluso il ripetitore. 

router---Wifi (dhcpcd) 192.168.1.0----->server----Lan 192.168.2.0 (static) ---> Miei Pc 

Ok? E' quello che vuoi tu giusto???

Io questo l'ho realizzato mettendo uno script di avvio nel server che configura le due reti e attiva il forwarding : 

```

#! /bin/bash 

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

ifup eth0  # atttivo l'interfaccia ( non è un comando gentoo) 

ifup wlan0  #configuro wlan0 ...

wpa_supllicant -Dwext -e /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0 & 

dhclient wlan0 

sleep 1 

ip=`ifconfig wlan0 | grepc"inet addr " | cut -c 21-33 ` #prelevo ip 

sleep 1 

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o wlan0 -j SNAT -- to $ip  # attivo nat 

```

Lo script è molto grezzo, per migliorarlo conviene  inserire come dipendenze net.wlan0 e net.eth0 in modo da eliminare la parte iniziale e migliorare lo script per ottenere l'ip....   :Laughing:   :Laughing:   :Laughing:   :Laughing: 

La configurazione di eth0 sul server  è molto semplice : 

```
ipconfig eth0  192.168.2.1 --netmask 255.255.255.0 
```

La configurazione di eth0 sul client è : 

```

ifconfig eth0 192.168.2.4/24 # qualsiasi numero tranne 1 (server) 255 e 0 

route add default gw 192.168.0.1 

echo "nameserver 8.8.8.8" > /etc/resolv.conf 

echo "nameserver 8.8.4.4" >> /etc/resolv.conf

```

spero di essere stato chiaro  :Smile: 

----------

## darkice

 *Pes88 wrote:*   

> 
> 
> La configurazione di eth0 sul server  è molto semplice : 
> 
> ```
> ...

 

questa parte mi fa capire che molto probabilmente l'errore mio era di mettere il gateway al server 192.168.0.1 invece che al router 192.168.1.1 

dannazione, il fatto è che ora come ora non sono fisicamente sul posto e non posso provare....riprendo il thread appena potrò anche se penso che ci vorrà tempo

ps : ma quegli indirizzi al nameserver sono indicativi giusto?devo sostituirli con quelli telecom...lo chiedo perchè mi era saltata la pulce all'orecchio

----------

## Pes88

Ho sbagliato,   :Embarassed:   :Embarassed:   :Embarassed:   :Embarassed:   :Embarassed: 

il gateway deve essere il server non il router:

```

route add default gw 192.168.2.1

```

il gateway di default ha l'indirizzo della interfaccia lan del server che abbiamo impostato precedentemente... 

 *Quote:*   

> 
> 
> ps : ma quegli indirizzi al nameserver sono indicativi giusto?devo sostituirli con quelli telecom...lo chiedo perchè mi era saltata la pulce all'orecchio
> 
> 

 

No, io ti consiglio di lasciare questi! Sono gli indirizzi dei server dns di ggogle, che in teoria non dovrebbero avere filtri...

----------

## darkice

ah ecco XD ero un pò rimasto male infatti visto che fino ad oggi con gateway impostato verso il server, il desktop era andato (con indirizzo ottenuto in dhcp)

cmq non sapevo dei dns google...

----------

