Shorewall Multiple Isp

Questa è stata veramente una configurazione difficile un'unica macchina ha tre interfacce a una vi è collegata la rete locale, per le altre due invece ognuna è collegata al suo gateway.
Le connessioni in entrata vengono da un'interfaccia e finiscono su alcune macchine , quelle in uscita invece devono andare su un'altra macchina.

Per tirare fuori questa configurazione mi sono sfondato di guide prima per capire il routing avanzato sotto linux, vi è una pagina apposta sempre su questo wiki, dopo per capire come far fare a shorewall quello che mi serviva. Ecco le pagine che ho usato.

Gli indirizzi ip e le porte non sono quelli orginali.

Configurazione delle interfacce

cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address 192.168.88.9    
    netmask 255.255.255.0
    network 192.168.88.0

auto eth1
#iface eth1 inet dhcp
iface eth1 inet static
    address 192.168.2.3
    netmask 255.255.255.0
    network 192.168.2.0
    broadcast 192.168.2.255
    gateway 192.168.2.1

# finchè non riuniamo anche il server vpn nella stessa macchina serve questa regola di routing
up ip route add 172.16.0.0/16 via 192.168.88.200    

auto eth2
iface eth2 inet static
    address 214.199.208.181
    netmask 255.255.255.0

Come si vede la main routing table sarà settata per uscire dall'eth1.

Configurazione di shorewall

Ecco le interfacce descritte sopra.

/etc/shorewall# cat interfaces 
#ZONE    INTERFACE      BROADCAST     OPTIONS
loc      eth0           detect
net      eth1           detect
net      eth2           detect
road     tun+
cat zones 
#ZONE   TYPE    OPTIONS                  IN                          OUT  OPTIONS                 OPTIONS
fw      firewall
net     ipv4
loc     ipv4
dmz    ipv4
road    ipv4

Ecco le policy di default per le interfacce

/etc/shorewall# cat policy 
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
road    loc     ACCEPT  info
road    fw    ACCEPT    
fw    loc    ACCEPT
loc     net     ACCEPT
net     all     DROP     info
fw    net    ACCEPT    info
all     all     REJECT  info
#all     all     ACCEPT  info

I due fonitori della connessione internet, ogni riga crea una tabella di routing. Viene duplicata la tabella di routing principale dove si cambia il gateway si inserisce l'opzione track in modo che i pacchetti vengono tracciati (forse anche marcati) per il ritorno.

cat providers 
#NAME   NUMBER  MARK    DUPLICATE       INTERFACE       GATEWAY          OPTIONS          COPY
alfa    1       1       main            eth1            192.168.2.1     track         eth0
beta    2       2       main            eth2            214.199.208.129  track         eth0

Le configurazioni in questo file permettono alle macchine o alle porzioni di rete di uscire con un determinato indirizzo ip.
Interface è quella di uscita
Subnet è la provenienza
Address è l'indirizzo con cui escono e vengono mascherate.
Questo è necessario perchè queste macchine ricevono delle connessioni in ingresso che non vengono completamente nattate, dato che con shorewall l'indirizzo di proveninza non sono riuscito a modificarlo, quindi al ritorno le macchine devono rispondere dallo stesso indirizzo dell'entrata.

/etc/shorewall# cat masq 
#INTERFACE    SUBNET            ADDRESS
eth2               192.168.88.11/32    214.199.208.181  
eth2        192.168.88.225/32    214.199.208.181
eth2            192.168.88.17/32           214.199.208.181
eth2        192.168.88.27/32    214.199.208.181
eth2            192.168.88.214/32       214.199.208.181
eth1        192.168.88.0/24        192.168.2.3

Le regole di routing necessarie per fare funzionare il tutto. Le informazioni in masq non sono sufficienti
L'ultima regola dice che le connessioni generata dal firewall stesso come per esempio il web server apache devono andare verso beta. Così facendo la tabella di routing principale rimane su alfa e quando navigo dal firewall oppure dalla rete che non ha le rules specificate rimango su alfa.

cat route_rules 
#SOURCE            DEST         PROVIDER        PRIORITY
192.168.88.11      -            beta        1000    
192.168.88.225     -            beta            1000
192.168.88.17       -        beta        1000    
192.168.88.27      -            beta            1000
192.168.88.214     -            beta            1000
l0        -        beta        1000

Ecco le regole di inoltro e gestione

root@firewall2-ubuntu:/etc/shorewall# cat rules 
#ACTION    SOURCE  DEST   PROTO    DEST Ports        COMMENTS 

#PING DA E VERSO LE ZONE
ACCEPT  net     loc    icmp       echo-request    #ping
ACCEPT    loc     net    icmp       echo-request    #ping

#PING DA E VERSO IL FIREWALL
ACCEPT    loc    $FW    icmp    echo-request    #pinghiamo il firewall da tutte le interfacce non fuziona questa regola 
ACCEPT     net    $FW    icmp    echo-request    #invece questa va    
ACCEPT  $FW    net    icmp    echo-request

#CONNESSIONI VERSO IL FIREWALL
ACCEPT    loc    $FW    tcp    ssh        #connessione in ssh
#ACCEPT     loc    $FW    tcp    http        
#ACCEPT  loc     $FW     tcp     https
#ACCEPT  net     $FW     tcp     http
#ACCEPT  net     $FW     tcp     https

#Destination nat per macchine varie
# dove appare iplocale:porta la :porta è quella che viene sostituita a quella originale che invece si trova dopo 
# dove non è presente viene usata la stessa porta 
#ACTION SOURCE         DEST               PROTO    DEST    SOURCE    ORIGINAL
#                                                        PORT(S) PORT(S)   DEST
DNAT    net:eth2     loc:192.168.88.17  tcp          9003    
DNAT    net:eth2    loc:192.168.88.225:5432 tcp    15432          #unicatt accesso al db da client esterni
DNAT    net:eth2    loc:192.168.88.27:8080  tcp    9005
DNAT    net:eth2    loc:192.168.88.214:8443 tcp    443            #questo andrebbe sostituito con un proxy pass https

# Per i proxy pass
DNAT    net:eth2        loc:192.168.88.11  tcp          80

#Destination nat per mail server
DNAT    net:eth2    loc:192.168.88.11  tcp        pop3
DNAT    net:eth2    loc:192.168.88.11  tcp        smtp
DNAT    net:eth2         loc:192.168.88.11  tcp        imap2
DNAT    net:eth2         loc:192.168.88.11  tcp        imaps
DNAT    net:eth2         loc:192.168.88.11  tcp        pop3s
Salvo diversa indicazione, il contenuto di questa pagina è sotto licenza Creative Commons Attribution-ShareAlike 3.0 License