Tenho um servidor Linux com três placas de rede: Uma para a rede local (eth0) e as outras duas cada uma para um provedor diferente.
Neste servidor roda o Squid (proxy) e o QMail (servidor de correio).
Estou querendo separar o tráfego. Todo o tráfego do Squid quero vá pelo Provedor1 e todo o tráfego do QMail quero vá pelo Provedor2.
Alguém conhece uma solução para fazer isso ?
Já tentei a solução abaixo (iproute e iptables) mas não obtive êxito.
# Create two tables (21 and 31) to use with each connection
# Copy main route to table 31
ip route show table main | grep -Ev ^default | \
while read ROUTE ; do \
ip route add table 31 $ROUTE; \
done
# use ISP-1 as default gateway for table 31
ip route replace default via x.x.x.2 table 31
# Copy main route to table 21
ip route show table main | grep -Ev ^default | \
while read ROUTE ; do \
ip route add table 21 $ROUTE; \
done
# use ISP-2 as default gateway for table 21
ip route replace default via y.y.y.2 table 21
# Mark packages (1 or ISP-1 e 2 for ISP-2)
# aqui, já troquei OUTPUT por POSTROUTING e PREROUTING sem sucesso
iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 2
# Define rules to use the correct connection
ip rule add from x.x.x.1 table 31
ip rule add fwmark 1 table 31
ip rule add from y.y.y.1 table 21
ip rule add fwmark 2 table 21