Minha empresa produz dispositivos IoT conectados via USB, que contêm um módulo de modem de celular, que contém um servidor DHCP. Temos um servidor de testes de produção rodando o Ubuntu 14.04 e outro servidor rodando o Ubuntu 16.04. Quando o modem celular do dispositivo IoT está ligado, o dhclient do servidor obtém um endereço IP do servidor DHCP incorporado no módulo do modem celular.
Ontem, o servidor 14.04 ficou sem inodes porque havia 6.6 milhões dhclient-<uuid>-usbXX.lease
arquivos em /var/lib/NetworkManager/
.
Eu não consegui examinar completamente o sistema devido à necessidade de executá-lo para fins de produção, mas parecia que esses arquivos de lease datavam do comissionamento do servidor há cerca de 14 meses. Ou seja, parece que o NetworkManager e / ou o dhclient (do pacote isc-dhcp-client) nunca removeram nenhum dos arquivos de concessão do cliente.
O problema é que parece que existe um novo arquivo de concessão criado toda vez que o dispositivo de modem celular é ligado. (O dispositivo IoT mantém o modem celular desligado para economizar bateria, ligando-o apenas quando necessário. Os testes incluem ligar e desligar o modem várias vezes.)
Eu sudo apt-get source isc-dhcp-client
e verifiquei a origem, e não parece que haja código para remover os arquivos de concessão, nunca. De fato, meu laptop (Ubuntu 14.04) tem arquivos de aluguel voltando ao seu comissionamento. (Eu tive alguns dos nossos dispositivos IoT conectados, bem como vários outros adaptadores USB ethernet.)
Os arquivos de arrendamento têm um prazo de validade muito razoável de 24 horas.
Estou investigando como desconfigurar o dhclient contra nossos dispositivos de IoT, mas prefiro não fazer isso caso decidamos fazer o teste da conexão de dados da célula.
Existe uma maneira de fazer com que o dhclient e / ou o NetworkManager removam arquivos antigos de concessões de clientes?
Eu poderia configurar um cron job para lidar com isso, mas parece o tipo de coisa que deve fazer parte do sistema. Eu simplesmente não consigo encontrar. Eu pesquisei, pesquisei aqui / StackOverflow e li a documentação do dhclient e do NetworkManager.
NOTA: Eu não tenho reputação suficiente para criar a tag dhclient, então substitui o dhcp.