crystal13
23-10-2008, 08:43
Salve,
il mio obiettivo è indirizzare pacchetti verso un'interfaccia invece che un'altra a seconda del mark che gli ho impostato. Le interfacce devono stare sulla stessa macchina (poi in realtà saranno interfacce fisiche diverse, ma io devo fare una simulazione). I pacchetti partono dalla stessa macchina (può essere un ping o un messaggio di chat...).
allora...supponiamo due interfacce alias dell'interfaccia eth0:
eth0:0
eth0:1
marco i pacchetti tipo icmp con il valore 1:
iptables -t mangle -A PREROUTING -p icmp - -icmp-type ping -j MARK - -set-mark 1
poi assegno una regola secondo la quale i pacchetti marcati con 1 devono rispettare ciò che è scritto in una tabella che ho chiamato tab4:
ip rule add fwmark 1 table tab4
infine, definisco una route nella tabella tab4 in modo che i pacchetti marcati 1 vengano instradati verso l'interfaccia eth0:0:
ip route add default dev eth0:0 via 10.11.9.12 table tab4
dove 10.11.9.12 è l'ip del router successivo.
in pratica io devo fare in modo che solo i pacchetti icmp fuoriescano attraverso questa interfaccia virtuale eth0:0. Però, se faccio:
ip route ls table tab4
mi dice:
default via 10.11.9.12 dev eth0
anzichè eth0:0.
Come mai? Una soluzione alternativa?
spero di esser stato chiaro.
Grazie!
il mio obiettivo è indirizzare pacchetti verso un'interfaccia invece che un'altra a seconda del mark che gli ho impostato. Le interfacce devono stare sulla stessa macchina (poi in realtà saranno interfacce fisiche diverse, ma io devo fare una simulazione). I pacchetti partono dalla stessa macchina (può essere un ping o un messaggio di chat...).
allora...supponiamo due interfacce alias dell'interfaccia eth0:
eth0:0
eth0:1
marco i pacchetti tipo icmp con il valore 1:
iptables -t mangle -A PREROUTING -p icmp - -icmp-type ping -j MARK - -set-mark 1
poi assegno una regola secondo la quale i pacchetti marcati con 1 devono rispettare ciò che è scritto in una tabella che ho chiamato tab4:
ip rule add fwmark 1 table tab4
infine, definisco una route nella tabella tab4 in modo che i pacchetti marcati 1 vengano instradati verso l'interfaccia eth0:0:
ip route add default dev eth0:0 via 10.11.9.12 table tab4
dove 10.11.9.12 è l'ip del router successivo.
in pratica io devo fare in modo che solo i pacchetti icmp fuoriescano attraverso questa interfaccia virtuale eth0:0. Però, se faccio:
ip route ls table tab4
mi dice:
default via 10.11.9.12 dev eth0
anzichè eth0:0.
Come mai? Una soluzione alternativa?
spero di esser stato chiaro.
Grazie!