Natting della rete (eth0 eth1 non bridge)

Da questa guida ho trovato come condividere internet via nat tramite 2 interfaccie di rete.

Premetto che ho avuto non poche difficoltà nel trirar su questa configurazione, tra problemi di dns e dhcp.

L’intenzione è di far in modo che il server ubuntu risponda come gateway tra due schede di rete, eth0 e eth1.
eth0 e’ collegata al modem/router adsl ed eth1 invece e’ collegata allo switch che serve la rete LAN (o in alternativa un cavo di rete “cross” che serve un solo PC connesso ad eth1) con il dhcp abilitato in questa porta.

quindi la rete sara’ cosi’ configurata:

linea ADSL > Router ADSL-> “eth0-Server Gateway-eth1” > rete LAN

networking

 

 

 

 

 

 

Parametri gateway (esempio):

IP uscita da modem/router: 192.168.1.1
IP scheda eth0: 192.168.1.20 – Netmask: 255.255.255.0
IP scheda eth1: 192.168.4.1 – Netmask: 255.255.255.0
DNS primario: quello del vostro provider (oppure 212.216.112.112)
DNS secondario: quello del vostro provider (oppure 212.216.172.62)

Parametri LAN (da configurare sugli altri PC della rete senza dhcp abilitato lato server):

indirizzi IP: 192.168.1.x (da 2 a 253)
Gateway: 192.168.4.1
Netmask: 255.255.255.0
DNS primario: quello del vostro provider (oppure 212.216.112.112)
DNS secondario: quello del vostro provider (oppure 212.216.172.62)

Lanciare la console terminale e digitare (da root) i seguenti comandi di configurazione della rete del nostro gateway:

sudo ifconfig eth0 192.168.1.20 netmask 255.255.255.0 up

sudo ifconfig eth1 192.168.4.1 netmask 255.255.255.0 up

sudo route add default gw 192.168.1.1 eth0

sudo route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.20

editiamo quindi i parametri per i DNS aprendo il file di configurazione

( Attenzione qui perche il resolv.conf puo cambiare se viene abilitato il dhcp lato server naturalmente).

sudo nano /etc/resolv.conf

dentro copiamo quanto segue (sostituite eventualmente gli IP con quelli del vostro provider):

nameserver 212.216.112.112
nameserver 212.216.172.62

Creiamo uno script di avvio automatico dentro inseriamo le seguenti righe

sudo nano /etc/init.d/gateway.sh

#!/bin/bash 

PATH=/usr/sbin:/sbin:/bin:/usr/bin 

# 
# delete all existing rules 
# 
iptables -F 
iptables -t nat -F 
iptables -t mangle -F 
iptables -X 

# Always accept loopback traffic 
iptables -A INPUT -i lo -j ACCEPT 

# Allow established connections, and those not coming from the outside 
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
#iptables -A INPUT -m state --state NEW -i ! eth0 -j ACCEPT 
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED 

# ALLOW outgoing connections from the LAN side 
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT 

iptables -A FORWARD -o eth0 -i eth1 -s 192.168.4.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Maquerade. 
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

# Don't forward from the outside to the inside. 
#iptables -A FORWARD -i eth0 -o eth0 -j REJECT 

# Enable routing 
echo 1 > /proc/sys/net/ipv4/ip_forward

salviamo e chiudiamo l’editor

poi diamo i permessi di esecuzione allo script:
sudo chmod a+x /etc/init.d/gateway.sh

da Webmin in Sistema Bootup and Shutdown dovrebbe comparire il nome gateway.sh accedendoci e selezionando Start at boot time SI, al riavvio lo script verra attivato!

poi editiamo il file “/etc/sysctl.conf” per abilitare il forwarding dei pacchetti verso la LAN:
nano /etc/sysctl.conf
e inseriamo o modifichiamo se gia esiste la seguente linea come qui sotto riportato:

net.ipv4.ip_forward = 1

Salviamo e chiudiamo l’editor, eseguiamo un bel:

service network restart

a questo punto (se non ci sono stati intoppi si puo gia navigare attraverso il server).