sysctl incapaz de aplicar configurações na inicialização

3

Eu segui um tutorial semelhante a este link

E começou a perceber que após a reinicialização as configurações do sistema sysctl não eram mais aplicadas, especificamente essas configurações de /etc/sysctl.d/999-vpn.conf (também tentei colocá-las no arquivo 99-sysctl.conf ):

net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.enx002427fe2be7.rp_filter = 2

Este é o erro no meu syslog:

systemd-sysctl[289]: Couldn't write '2' to 'net/ipv4/conf/enx002427fe2be7/rp_filter', ignoring: No such file or directory

enx002427fe2be7 é o nome da interface de rede do meu adaptador de rede USB que eu uso, e estou supondo que a razão pela qual isso falha é talvez porque ainda não foi inicializado quando o comando sysctl é executado.

Então, para corrigir isso, tentei um script upstart , mas mesmo com exec sleep 60 && sysctl --system , isso não funcionou.

A execução manual de sysctl --system corrige, mas eu prefiro ter isso automatizado.

Qual seria a maneira correta de corrigir isso?

Usando o Ubuntu 16.04 LTS Server edition

    
por xorinzor 20.05.2018 / 20:42

1 resposta

3

Algumas coisas me vêm à mente:

    O
  1. ubuntu 16.04 usa systemd por padrão, em vez de upstart . Então você poderia tentar escrever uma systemd unit em vez de um upstart script
  2. Se você usa /etc/network/interfaces para gerenciar sua rede, adicione uma linha como a seguinte à sua interface:

    up sysctl net.ipv4.conf.enx002427fe2be7.rp_filter=2
    

    e remova a linha correspondente do seu arquivo /etc/sysctl.d/999-vpn.conf .

    Se você usa NetworkManager , há /etc/NetworkManager/dispatcher.d/ , onde é possível colocar scripts para serem executados depois que uma conexão é feita. É claro que no seu script você deve verificar se a interface criada é realmente o seu adaptador USB.

    if [ "$1" == 'enx002427fe2be7' ] && [ "$2" == 'up' ] ; then
        sysctl net.ipv4.conf.enx002427fe2be7.rp_filter=2
    fi
    

    Como alternativa, você pode colocar esse script em /etc/network/if-up.d/ . Isso deve funcionar para ambos, ifupdown e NetworkManager . (Fonte: link ). Nesse caso, você não precisa da linha up em /etc/network/interfaces .

    if [ "$IFACE" == 'enx002427fe2be7' ] ; then
        sysctl net.ipv4.conf.enx002427fe2be7.rp_filter=2
    fi
    

    Estas são apenas maneiras diferentes de fazer a mesma coisa: adicionar a configuração sysctl para o adaptador de rede quando o adaptador de rede é aberto e, portanto, disponível, mas não antes.

por Lienhart Woitok 24.05.2018 / 00:55