Eu fiz algo parecido com o iptables um tempo atrás. A principal diferença entre seu objetivo e meu projeto era que eu estava tentando redirecionar todo o tráfego de entrada da rede para tun0. Nenhuma alteração no firefox é necessária. A essência disso é esta:
- Uma entrada personalizada em
rt_tables
é criada para manipular certos pacotes
- Todos os pacotes destinados à porta 80 ou a um IP específico recebem uma marca
- Todos os pacotes que correspondem à marca na etapa 2 são passados para a rt_table especificada na etapa 1.
- Os pacotes no novo
rt_tables
precisam ter um gateway diferente do restante - o IP da eth0
Eu encontrei um código antigo meu que deve funcionar para você como é, ou com pequenas modificações. Este é um conjunto modificado do código que usei para executar no meu gateway:
# Create the new custom router table
echo 201 CustomRouter >> /etc/iproute2/rt_tables
# Mark the desired packets for special treatment
iptables -t mangle -A PREROUTING -d 123.123.123.123 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -d 123.123.123.123 -j MARK --set-mark 2
# Assign marked packets to CustomRouter
ip rule add fwmark 2 table CustomRouter
# Set the gateway
ip route add default via 192.168.0.123 dev eth0 table ClientRouter
O acima presume que 123.123.123.123
é o IP do site que você deseja usar via eth0, e 192.168.0.123
é o IP de eth0
. Modifique as duas linhas com esse IP para corresponder ao que você deseja, seja tudo na porta 80 ou apenas um IP específico. o 123.123.123.123
é apenas um IP falso que usei para testar isso.
Observe que a linha que cria CustomRouter
em rt_tables
não precisa ser executada todas as vezes. O script perl do qual eu extraí isso tem um cheque para ver se ele já está lá, então acredito que isso só tenha que ser feito uma vez, ou possivelmente uma vez a cada inicialização.