Newsgroup: it.comp.os.linux.debian
Titolo: [LUNGO] iproute policy routing su squeeze

 
N.B.: x/post su i.c.o.l.debian, f/up quando richiesto/opportuno.
 
Salve,
piccolo problemino di policy routing:
 
Premesso che ho cercato in lungo e in largo, trovando il seguente post
sulla ml debian perfettamente attinente (purtroppo senza risposte):
http://www.mail-archive.com/debian-...@lists.debian.org/msg09090.html
 
 
La domanda e' semplice: perche' quanto sotto (fare in modo che il
traffico ssh passi per una route alternativa rispetto a quella di
default) funziona perfettamente su debian 5.0 Lenny, e invece non
funziona una cippa su squeeze? (mentre, in entrambe, funziona
tranquillamente il policy routing basato sul source address).
 
 
route -n:
 
80.17.y.X       0.0.0.0       255.255.255.248 U  0  0  0  eth0
192.168.1.0     0.0.0.0       255.255.255.0   U  0  0  0  eth3
192.168.0.0     0.0.0.0       255.255.255.0   U  0  0  0  eth2
10.10.10.0      0.0.0.0       255.255.255.0   U  0  0  0  eth1
0.0.0.0         192.168.1.1   0.0.0.0         UG 0  0  0  eth3
 
 
/etc/iproute2/rt_tables:
 
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
 
200     cust_lan
 
 
Moduli caricati:
 
ip_tables, ip_conntrack, iptable_nat, iptable_filter, iptable_mangle,
ip_conntrack_ftp, $MOP ip_conntrack_irc, ip_conntrack_sip ports=5060,
ip_conntrack_pptp, ipt_CONNMARK, ip_nat_ftp. ip_nat_irc, ip_nat_sip,
ip_nat_pptp, ipt_LOG, ipt_REJECT, ipt_MASQUERADE, ipt_REDIRECT,
ipt_TOS, ipt_state, ipt_MARK
 
 
Parte dello script firewall (semplificato, e tralascio tutte le regole
per input, forward, output: do per scontato che siano corrette visto
che, come detto, su lenny funzia tutto alla perfezione):
 
# Marca i pacchetthi provenienti dalla lan con dest. port 22 (ssh)
$IPT -A PREROUTING -s 
10.10.10.0/24
 -t mangle -p tcp --dport ssh -j \
MARK --set-mark 0x1
 
# Source nat per ssh che esce tramite policy routing su eth0 (HDSL)
/sbin/iptables -t nat -A POSTROUTING -s 
10.10.10.0/24
 --dport ssh \
-o eth0 -j SNAT --to 80.17.x.Z
 
# Source nat per il resto del traffico su eth3 (sulla route di default)
/sbin/iptables -t nat -A POSTROUTING -s 
10.10.10.0/24
 -o eth3 \
-j SNAT --to 10.10.10.254
 
/sbin/ip route flush table cust_lan
 
# Aggiunge regola su tabella cust_lan per i pacchetti contrassegnati
# col mark 0x1
/sbin/ip rule add fwmark 0x1 table cust_lan
 
# Stabilisce le rotte per questa tabella
/sbin/ip route add 
127.0.0.0/8
 dev lo table cust_lan
/sbin/ip route add 80.17.x.X via 80.17.x.Y dev eth0 table cust_lan
/sbin/ip route add 
10.10.10.0/24
 via 10.10.10.254 dev eth1 table \
cust_lan
/sbin/ip route add 192.168.0.0 via 192.168.0.254 dev eth2 table cust_lan
/sbin/ip route add 
192.168.1.0/24
 via 192.168.1.254 dev eth3 table \
cust_lan
/sbin/ip route add default via 80.17.x.W dev eth0 metric 0 table \
cust_lan
 
 
Grazie anticipatamente per l'aiuto che mi vorrete dare. :-)
 
bye G.L.
-- 
Da i.d.c.tutela:
P.S. Quando ci sar� lo switch-off, avr� problemi anche col
monitor del PC? Ho visto che � collegato in modalit� analogica.

 -j SNAT --to 10.10.10.254
 
Questa non la capisco, anche se non dovrebbe entrarci con il tuo problema specifico.
Perché un SNAT con 10.10.10.254 su un'interfaccia che sta in un'altra subnet, a giudicare dalla
tabella di routing sopra riportata?
 
Ulteriori domande: la regola di MARK viene matchata (iptables -t mangle -vnL)
Hai provato a dare un ip route flush cache dopo aver tirato su la tabella di routing cust_lan?
Puoi postare un output di ip rule ls, ip route ls e ip route ls table cust_lan?
 
 

 ip rule ls, ip route ls e ip route ls table cust_lan?
 
Si', c'e' anche ip route flush cache.
Dopo le 6.30, appena se ne vanno dall'ufficio, faccio le dovute prove.
Grazie per il momento.
:-)
 
bye G.L.
-- 
Da i.d.c.tutela:
P.S. Quando ci sarà lo switch-off, avrò problemi anche col
monitor del PC? Ho visto che è collegato in modalità analogica.

 Puoi postare un output di ip rule ls, ip route ls e ip route ls table cust_lan?
 
L'unica cosa e' che adesso il mark e' 0x2. (0x1 serve per contrassegnare
il traffing shaping per il voip, che pero' adesso e' disattivato).
Il !
192.168.0.0/24
 e' perche' altrimenti con quei protocolli non vado in
dmz.
 
Ora eth4 ,l'adsl, e' eth3 (non ti incazzare, ma sto cercando
contemporaneamente di fare un po' di "pulizia"...) :-)
 
Ho anche espresso un po' meglio gli indirizzi pubblici, comunque quelli
reali puoi sapere bene quali sono, vado con diesel. ;-)
 
Preciso anche che il source nat per le porte dest. 22, 3389:3391, 2222
su eth0 viene effettuato sull'indirizzo alias 80.x.y.146 (80.x.y.149
e' l'indirizzo principale di eth0). Il resto del traffico viene nattato
su eth3
 
Ci sono altre tabelle rt: "lan", che mi serve per far uscire il
centralino voip (10.10.10.8) su eth0, e "dmz", che mi serve per far
uscire la dmz anch'essa su eth0. Entrambe funziano perfettamente.
 
Ripeto, con Lenny mi funziava senza problemi, e mi funziava anche
l'aspetto "multi homed" dual wan per la dmz, che mo' non funzia piu'
neanche quello (preciso pero' che prima avevo una adsl telecom con
l'ip pubblico statico attestato su ppp0 in pppOE, ora c'e' una adsl
tiscali in pppOA e mi tocca fare natting con uno zyxel, visto che non
posso fare half-bridge....).
 
root@firewall:~# iptables -t mangle -vnL
Chain PREROUTING (policy ACCEPT 338 packets, 65608 bytes)
  pkts bytes target     prot opt in     out     source 
destination
     0     0 MARK       tcp  --  *      *       
10.10.10.0/24
 
!
192.168.0.0/24
      tcp dpts:3389:3391 MARK set 0x2
   165 12544 MARK       tcp  --  *      *       
10.10.10.0/24
 
!
192.168.0.0/24
      tcp dpt:22 MARK set 0x2
     0     0 MARK       tcp  --  *      *       
10.10.10.0/24
 
0.0.0.0/0
           tcp dpt:2222 MARK set 0x2
 
Chain INPUT (policy ACCEPT 184 packets, 15018 bytes)
  pkts bytes target     prot opt in     out     source 
destination
 
Chain FORWARD (policy ACCEPT 147 packets, 50274 bytes)
  pkts bytes target     prot opt in     out     source 
destination
 
Chain OUTPUT (policy ACCEPT 137 packets, 20760 bytes)
  pkts bytes target     prot opt in     out     source 
destination
 
Chain POSTROUTING (policy ACCEPT 272 packets, 70458 bytes)
  pkts bytes target     prot opt in     out     source 
destination
 
 
root@firewall:~# ip rule ls
0:      from all lookup local
32760:  from 10.10.10.8 lookup lan
32761:  from all fwmark 0x2 lookup cust_lan
32762:  from 
192.168.0.0/24
 lookup dmz
32766:  from all lookup main
32767:  from all lookup default
 
 
root@firewall:~# ip route ls
80.x.y.144/29 dev eth0  proto kernel  scope link  src 80.x.y.149
192.168.1.0/24
 dev eth3  proto kernel  scope link  src 192.168.1.2
192.168.0.0/24
 dev eth2  proto kernel  scope link  src 192.168.0.182
10.10.10.0/24
 dev eth1  proto kernel  scope link  src 10.10.10.182
default via 192.168.1.1 dev eth3
 
 
root@firewall:~# ip route ls table cust_lan
80.x.y.144/29 via 80.x.y.149 dev eth0
192.168.1.0/24
 via 192.168.1.2 dev eth3
192.168.0.0/24
 via 192.168.0.182 dev eth2
10.10.10.0/24
 via 10.10.10.182 dev eth1
127.0.0.0/8
 dev lo  scope link
default via 80.x.y.145 dev eth0
 
 
root@firewall:~# ip route ls table lan
80.x.y.144/29 via 80.x.y.149 dev eth0
192.168.1.0/24
 via 192.168.1.2 dev eth3
192.168.0.0/24
 via 192.168.0.182 dev eth2
10.10.10.0/24
 via 10.10.10.182 dev eth1
127.0.0.0/8
 dev lo  scope link
default via 80.x.y.145 dev eth0
 
 
root@firewall:~# ip route ls table dmz
80.x.y.144/29 via 80.x.y.149 dev eth0
192.168.1.0/24
 via 192.168.1.2 dev eth3
192.168.0.0/24
 via 192.168.0.182 dev eth2
10.10.10.0/24
 via 10.10.10.182 dev eth1
127.0.0.0/8
 dev lo  scope link
default via 80.x.y.145 dev eth0
 
 
bye G.L.
-- 
Da i.d.c.tutela:


 32767:  from all lookup default
 
Aggiornamento: ho pensato ad un inconveniente sulle priorita',
ho provato col parametro prio <priority>, ma niente di fatto,
con ssh non vuole proprio uscire su eth0 con ip 80.x.y.146:
 
root@firewall:~# ip rule show
0:      from all lookup local
32763:  from 
192.168.0.0/24
 lookup dmz
32764:  from all fwmark 0x2 lookup cust_lan
32765:  from 10.10.10.8 lookup lan
32766:  from all lookup main
32767:  from all lookup default
 
