Roteamento com base no protocolo ou porta
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
Roteamento com base no protocolo ou porta
Baeado na suposição de que vc tem duas placas com ip fixo, ou cada uma delas apontando para um modem/roteador conectado a 2 linhas diferentes:
Sugestão:
Separe as máquinas. Crie uma entrada MX no teu dns apontando para a máquina na qual está o SMTP e aponte no MUA dos clientes a interface interna dessa máquina. E é mais seguro, os dois serviços vão ficar mais livres, etc.
Se voce definir o gateway da rede como sendo a máquina do proxy e essa máquina e o smtp puderem se enxergar (via cabo cross?) basta informar ao proxy que o smtp é a outra máquina, e ele vai rotear o pacote pelo tipo de serviço (smtp/25 e 110+145/pop+imap).
:idea:
Sds,
Roteamento com base no protocolo ou porta
Ao karfax:
Obrigado pela sugestão de separar as máquinas. Irei usar uma alternativa como essa se não encontrar a solução usando uma única máquina.
Ao TheMage
Pelo que entendi das suas regras, esta máquina funciona apenas como gateway e ela "filtra" os pacotes que estão passando de acordo com o protocolo/porta.
No meu caso, o tráfego que desejo separar, parte diretamente de aplicações instaladas neste linux, no caso o SQUID e o QMAIL. Este tráfego não passa pela chain PREROUTING da table mangle do iptables. Se eu estiver errado, alguém me corrija por favor.
Grato.
Roteamento com base no protocolo ou porta
Ops,.. desculpe,.. acho que esqueci desdas duas,.. pois tenho uma parte que é parecida,.. !
acho que com mais isso,.. vc faz o que vc precisa,.. !
## isso tmb é no firewall !
iptables -A OUTPUT -t mangle -p tcp --dport 80 -j MARK -o ! eth1 --set-mark 1
iptables -A PREROUTING -t mangle -p tcp -s 192.168.22.0/24 -i eth2 --dport 80 -j MARK --set-mark 1