Definir tabela de roteamento persistente no Debian

13

Modifiquei minha tabela de roteamento excluindo uma regra e adicionando duas novas regras para minha segunda interface eth1:

route del -net 10.1.2.0 netmask 255.255.255.0
route add -host 10.1.2.51 eth1
route add -host 10.1.2.52 eth1

Eu quero que as regras sobrevivam à reinicialização. Eu poderia escrever um script rc simples para remover 1 regra e inserir 2 novas, mas queria saber se existe uma maneira de configurar o ifconfig, para não adicionar uma regra de rota para a interface (eth1) quando for iniciada, ou melhor ainda, para especificar quais regras devem ser adicionadas.

Qual seria uma maneira limpa de fazer isso? Permite- ifconfigme especificar regras personalizadas para roteamento?

Martin Vegter
fonte

Respostas:

21

Você pode adicionar as chamadas ao post-upgancho quando a interface surgir. A configuração da interface está localizada /etc/network/interfaces. Aqui está um exemplo:

auto eth1
iface eth1 inet dhcp
  post-up route del -net 10.1.2.0 netmask 255.255.255.0
  post-up route add -host 10.1.2.51 eth1
  post-up route add -host 10.1.2.52 eth1
  pre-down route add -net 10.1.2.0 netmask 255.255.255.0
  pre-down route add -host 10.1.2.51 eth1
  pre-down route add -host 10.1.2.52 eth1

Na página de manual - interfaces :

pós-up command
Execute o comando depois de ativar a interface. Se esse comando falhar, o ifup será abortado, evitando marcar a interface como configurada (mesmo que realmente tenha sido configurada), imprima uma mensagem de erro e saia com o status 0.

pré-down command
comando Executar antes de tomar a baixo interface. Se esse comando falhar, o ifdown será interrompido, marcará a interface como desconfigurada (mesmo que não tenha sido realmente desconfigurada) e sai com o status 0.

Além disso, no Linux, as “net-tools” routeestão obsoletas e devem ser substituídas pelas ferramentas do pacote iproute2 .

Leitura adicional:

Marco
fonte
eu poderia, em vez de remover a primeira regra, impedir que ela fosse criada em primeiro lugar? Como uma regra de rota é criada, afinal? Nas configurações de rede em /etc/network/interfaces? E como sei que, quando a postagem é executada, a regra a ser removida já existe? A página do manual não diz em que momento foi criada.
Martin Vegter
1
Como não conheço sua rede nem sua configuração de host, não sei como essa rota chegou à tabela de roteamento. Ele vem com uma concessão de DHCP? Caso contrário, verifique seus serviços /etc/init.de investigue quais deles podem mexer na tabela de roteamento. Também dê uma olhada em /etc/networkincluindo subdiretórios.
26613 Marco Marco
5
post-upe pre-downsão aliases para upe down, respectivamente. E adicionar um || :no final de uma linha permite que o comando falhe e não perturbe ifup / ifdown. Eu geralmente adiciono isso a route del, caso a rota ainda não exista e, portanto, não possa ser removida.
Tino