Como o route -n funciona no Linux?

1

Eu posso entender a saída de strace route -n , mas o route realmente leu algum dos arquivos em /proc para obter a tabela de roteamento? Além disso, se as rotas e os endereços IP estiverem armazenados em /proc , por que o strace não mostra esses arquivos sendo acessados?

root@xxxx:/etc/postfix# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.21.58.0     0.0.0.0         255.255.254.0   U     0      0        0 eth0
0.0.0.0         10.21.58.1     0.0.0.0         UG    100    0        0 eth0

Editar, depois de mais pesquisas:

Parece que route faz ler um arquivo em /proc : especificamente, /proc/net/route . Como, então, as informações de roteamento chegaram lá?

    
por krisdigitx 13.08.2011 / 17:45

3 respostas

4

O conteúdo dos arquivos no diretório /proc ou, na verdade, qualquer diretório no qual o sistema de arquivos proc é montado, é gerado dinamicamente. As várias chamadas do sistema relacionadas ao sistema de arquivos são direcionadas à camada VFS no kernel do Linux para o código proc, que obtém as informações das estruturas de dados na memória dentro do espaço de memória do kernel, formata-as, mascarando-as como o conteúdo desses arquivos. / p>

Aqui é o arquivo responsável por imprimir as informações de roteamento para o IPv4 no kernel.

    
por 13.08.2011 / 18:17
2

Sim, ele usa /proc , veja essa parte da strace route -n output:

open("/proc/net/route", O_RDONLY)       = 3

lê todas as informações de lá. A fonte da informação é o próprio kernel. O kernel oferece as informações de roteamento por meio de arquivos no procfs .

Os arquivos em /proc geralmente são gerados e preenchidos (com informações) pelo próprio kernel. Através desta interface, o kernel pode fornecer informações internas com segurança para o usuário. Na maioria dos casos, isso é até legível para humanos.

    
por 13.08.2011 / 17:49
0

A tabela de roteamento inicial é carregada a partir dos arquivos de configuração no momento da inicialização. Posteriormente, você pode adicionar entradas manualmente com o comando route . Além disso, routed ou gated ouve na rede informações de roteamento e atualiza dinamicamente a tabela de roteamento.

    
por 13.08.2011 / 17:56