A solução mais simples é ter duas tabelas de roteamento separadas; um deles ( wlan0
, no seu caso) será o padrão, enquanto podemos usar um truque para forçar um aplicativo específico a usar a tabela não padrão.
Primeiro, crie duas tabelas (substitua NAME1 por um nome que faça sentido para você, a mesma coisa com IP1, DEV1 e assim por diante):
echo 201 NAME2 >> /etc/iproute2/rt_tables
Adicione um gateway a cada tabela de roteamento (se necessário):
ip route add NET1 dev DEV1 src SRC1 table main
ip route add NET2 dev DEV2 src SRC2 table NAME2
Em seguida, uma rota padrão:
ip route add default via IP1 table main
ip route add default via IP2 table NAME2
Em seguida, as regras para selecionar a tabela de rotas com base no endereço de origem:
ip rule add from IP1 table main
ip rule add from IP2 table NAME2
Agora, precisamos forçar o weechat
a usar o IP2.Fazemos isso criando um novo módulo de ligação . É trivial fazer isso, existem instruções simples na referência. Depois de ter compilado o módulo e colocado em /usr/lib
, você emite o comando:
BIND_ADDR=IP2 LD_PRELOAD=/usr/lib/bind.so weechat
e você está feito. A vantagem disso é que ele pode ser facilmente roteirizado e pode ser repetido para quantos aplicativos você desejar.