Tudo parece correto, exceto que você não está especificando a interface a ser usada na comunicação. Experimente
ping -I 192.168.1.107 -c1 8.8.8.8
e isso deve funcionar.
Preciso fazer o encaminhamento de origem e antes de entrar em configurações mais complicadas, quero entender como isso funciona, alternando o roteamento genérico (aquele criado magicamente pela configuração de rede) para um roteado de origem.
O objetivo é criar uma tabela de roteamento específica e definir um ip rule
para rotear o tráfego do meu IP por meio dessa tabela de roteamento (que, até onde eu entendi, o que acontece com a tabela default
). Isto está em um Debian 8 com uma interface à qual é atribuído o IP 192.168.1.107
.
O problema é que essa clonagem não funciona.
Eu criei uma nova entrada em /etc/iproute2/rt_tables
200 NORMAL
Eu então despejei a tabela de roteamento atual - para uma rede de trabalho
root@debian-testing:~# ip route show table all
default via 192.168.1.1 dev eth0
169.254.0.0/16 dev eth0 scope link metric 1000
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.107
broadcast 127.0.0.0 dev lo table local proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo table local proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo table local proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo table local proto kernel scope link src 127.0.0.1
broadcast 192.168.1.0 dev eth0 table local proto kernel scope link src 192.168.1.107
local 192.168.1.107 dev eth0 table local proto kernel scope host src 192.168.1.107
broadcast 192.168.1.255 dev eth0 table local proto kernel scope link src 192.168.1.107
Eu movi entradas relacionadas à interface real ( 192.168.1.107
) para a tabela NORMAL
(o que está abaixo é o conteúdo de um arquivo t.txt
que será analisado em um momento)
root@debian-testing:~# cat t.txt
local 127.0.0.0/8 dev lo table local src 127.0.0.1
local 127.0.0.1 dev lo table local src 127.0.0.1
local 192.168.1.107 dev eth0 table NORMAL src 192.168.1.107
192.168.1.0/24 dev eth0 src 192.168.1.107 table NORMAL
broadcast 127.0.0.0 dev lo table local src 127.0.0.1
broadcast 127.255.255.255 dev lo table local src 127.0.0.1
broadcast 192.168.1.0 dev eth0 table NORMAL src 192.168.1.107
broadcast 192.168.1.255 dev eth0 table NORMAL src 192.168.1.107
default via 192.168.1.1 dev eth0 table NORMAL
Em seguida, esvaziei todas as entradas de roteamento existentes, carreguei as entradas acima e informei ao sistema que os pacotes de 192.168.1.107
deveriam usar a tabela NORMAL
root@debian-testing:~# ip route flush table all ; while read name; do echo "adding ${name}";ip route add ${name}; done < t.txt ; ip rule add from 192.168.0.107 table NORMAL
adding local 127.0.0.0/8 dev lo table local src 127.0.0.1
RTNETLINK answers: Invalid argument
adding local 127.0.0.1 dev lo table local src 127.0.0.1
adding local 192.168.1.107 dev eth0 table NORMAL src 192.168.1.107
adding 192.168.1.0/24 dev eth0 src 192.168.1.107 table NORMAL
adding broadcast 127.0.0.0 dev lo table local src 127.0.0.1
adding broadcast 127.255.255.255 dev lo table local src 127.0.0.1
adding broadcast 192.168.1.0 dev eth0 table NORMAL src 192.168.1.107
adding broadcast 192.168.1.255 dev eth0 table NORMAL src 192.168.1.107
adding default via 192.168.1.1 dev eth0 table NORMAL
Infelizmente, não consigo mais acessar nem o IP local nem o host externo, mesmo que a tabela de roteamento tenha sido repovoada. O único ping que passa é para 127.0.0.1
.
root@debian-testing:~# ping 8.8.8.8
connect: Network is unreachable
root@debian-testing:~# ping 192.168.1.107
connect: Network is unreachable
root@debian-testing:~# ip route
root@debian-testing:~# ip route show table all
default via 192.168.1.1 dev eth0 table NORMAL
broadcast 192.168.1.0 dev eth0 table NORMAL scope link src 192.168.1.107
192.168.1.0/24 dev eth0 table NORMAL scope link src 192.168.1.107
local 192.168.1.107 dev eth0 table NORMAL scope host src 192.168.1.107
broadcast 192.168.1.255 dev eth0 table NORMAL scope link src 192.168.1.107
broadcast 127.0.0.0 dev lo table local scope link src 127.0.0.1
local 127.0.0.1 dev lo table local scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo table local scope link src 127.0.0.1
Onde devo procurar corrigir isso? Minha abordagem é correta?
Tudo parece correto, exceto que você não está especificando a interface a ser usada na comunicação. Experimente
ping -I 192.168.1.107 -c1 8.8.8.8
e isso deve funcionar.
Tags networking routing