Você pode definir o firewall (iptables) para rotear para um gateway específico, dependendo de uma das três características: porta de destino, porta de origem ou proprietário (pode não funcionar, veja abaixo)
Primeiro, você adicionará uma tabela de roteamento personalizada para seu aplicativo especial (gateway 192.168.1.1), criará uma regra que redirecionará todos os pacotes com a máscara 1
para essa tabela e criará uma regra iptables que masque o endereço de origem no caso o pacote foi redirecionado:
ip route add 192.168.1.0/24 dev eth0 table 1
ip route add 0/0 via 192.168.1.1 table 1
ip rule add fwmark 1 table 1
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.10
Para a marcação do pacote, você tem 3 opções:
Redirecionar pela porta de destino, cobrando PORT com a porta do servidor usada pelo exim:
iptables -t mangle -A OUTPUT -p tcp --dport PORT -j MARK --set-mark 4
Redirecionar pela porta de origem, carregando PORT com a porta usada localmente pelo exim, se ela usar apenas uma porta de origem:
iptables -t mangle -A OUTPUT -p tcp --sport PORT -j MARK --set-mark 4
Redirecionar pelo proprietário, alterando OWNER com o PID do processo do Exim (consulte iptables -m owner --help
para outras opções):
iptables -t mangle -A OUTPUT -m owner --pid-owner OWNER -j MARK --set-mark 4
Redirecionando por considerações do Proprietário www.frozentux.net :
The pid, sid and command matching is broken in SMP kernels since they use different process lists for each processor. It might be fixed in the future however
Então, dependendo do seu kernel, esse recurso não está disponível ou está quebrado (não funcionará corretamente)