Seu problema
Eu recomendaria uma tabela de roteamento separada para isso, pois presumo que o tráfego que chega em 192.168.0.2
tenha um endereço de origem de 35.100.100.35
. O problema que você está tendo é que 35.100.100.35
não está listado em sua tabela de roteamento, portanto, o padrão está sendo usado.
Você pode conseguir algo simples assim:
ip route add 35.0.0.0/8 via 192.168.0.1 dev ppp0
Para que, quando sua máquina tentar responder a um endereço 35
, ela faça isso na interface ppp0
.
A versão mais robusta / elaborada segue.
NOTA: Você deve reinicializar sua máquina para limpar quaisquer alterações temporárias feitas em sua tabela de roteamento.
Regras de roteamento
Uma regra de roteamento simples é ter qualquer tráfego destinado a ou de um IP ou sub-rede específico para usar uma tabela de roteamento diferente:
ip rule add from [interface ip]/[netmask] tab [table number] priority [priority]
ip rule add to [interface ip]/[netmask] tab [table number] priority [priority]
Nesse caso, você está preocupado com a chegada do tráfego em 192.168.0.2
(seu ppp0
IP do dispositivo). Você precisará criar uma nova tabela de roteamento adicionando ao arquivo: /etc/iproute2/rt_tables
. A sintaxe é [table number] [table name]
. Eu normalmente uso o nome da interface como o nome da tabela, mantenha as coisas simples.
echo "168 ppp0" >> /etc/iproute2/rt_tables
ip rule add from 192.168.0.2/32 tab 168 priority 101
ip rule add to 192.168.0.2/32 tab 168 priority 101
Isso deve fazer com que todo o tráfego endereçado a 192.168.0.2
corresponda à tabela de roteamento 168
, bem como a qualquer tráfego que responda ao tráfego nessa tabela.
Usando novas tabelas de roteamento
Agora direcionamos o tráfego para essa tabela de roteamento 168
, mas ela estaria vazia. Basta adicionar uma rota padrão a ela agora.
ip route add default via 192.168.0.1 dev ppp0 table 168
Isso adiciona uma rota padrão à tabela 168
, que é simplesmente dizer usar a interface ppp0
.
O que parece
Suas tabelas de roteamento no final provavelmente devem ter esta aparência:
# ip route show
default dev eth0 proto static metric 1024
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20
192.168.0.0/24 dev ppp0 proto kernel scope link src 192.168.0.2
Esta é a sua tabela de roteamento padrão, a tabela normalmente usada para o tráfego. Quanto às rotas aqui: o padrão como você provavelmente definiu originalmente, e as duas segundas são inferidas com base no endereço IP de suas interfaces.
# ip rule show
0: from all lookup local
101: from 192.168.0.2 lookup ppp0
101: from all to 192.168.0.2 lookup ppp0
Isso lista suas regras de roteamento, o formato é "[prioridade]: [regra] pesquisa [tabela]". Este exemplo indica que, normalmente, use a tabela de roteamento local. Se o tráfego for de ou para 192.168.0.2, use a tabela de roteamento denominada ppp0
.
# ip route show table ppp0
default via 192.168.0.1 dev ppp0
Isso mostra a tabela de roteamento denominada ppp0
, que deve enviar todo o tráfego para fora ppp0
.
Resultado final
O resultado final disso é que quando o tráfego está indo para ou do IP da sua interface ppp0
, ele usará a tabela de roteamento chamada ppp0
. A tabela de roteamento ppp0
acabou de enviar todo o tráfego para fora do dispositivo ppp0
.