Descobrindo os valores das opções do kernel relacionadas a sysctl.conf e sysctl.d

17

Na minha máquina Ubuntu, no arquivo /etc/sysctl.conf , eu tenho opções de filtragem de caminho reverso comentadas por padrão assim:

#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

mas em /etc/sysctl.d/10-network-security.conf eles são (novamente, por padrão) não comentados:

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

Então, a filtragem de caminho inverso está ativada ou não? Qual dos locais de configuração tem prioridade? Como faço para verificar os valores atuais dessas e outras opções do kernel?

    
por Desmond Hume 07.12.2012 / 15:40

3 respostas

24

Verificar o valor de uma variável sysctl é tão fácil quanto

sysctl <variable name>

e, a propósito, configurar uma variável sysctl é tão simples quanto

sudo sysctl -w <variable name>=<value>

mas as alterações feitas dessa maneira provavelmente só serão válidas até a próxima reinicialização.

Quanto a quais locais de configuração, /etc/sysctl.conf ou /etc/sysctl.d/ têm precedência, veja o que o arquivo /etc/sysctl.d/README diz:

End-users can use 60-*.conf and above, or use /etc/sysctl.conf directly, which overrides anything in this directory.

Após editar a configuração em qualquer um dos dois locais, as alterações podem ser aplicadas com

sudo sysctl -p
    
por 07.12.2012 / 17:15
2

Esse tipo de coisa geralmente está nas interfaces do kernel /proc e / ou /sys (primeiro, lembre-se de que nada nesses diretórios é um arquivo de disco normal, eles são todos linhas diretas para o kernel). p>

Então, por exemplo:

»for x in /proc/sys/net/ipv4/conf/*/rp_filter; do echo -ne "$x "'cat $x'"\n"; done
/proc/sys/net/ipv4/conf/all/rp_filter 0
/proc/sys/net/ipv4/conf/default/rp_filter 1
/proc/sys/net/ipv4/conf/em1/rp_filter 1
/proc/sys/net/ipv4/conf/lo/rp_filter 0
/proc/sys/net/ipv4/conf/wlan0/rp_filter 1

Parece que eu defini rp_filter para em1, wlan0 e "default". Você pode defini-los ou desativá-los apenas escrevendo no identificador de arquivos:

»cd /proc/sys/net/ipv4/conf/lo
»echo 1 > rp_filter
»cat rp_filter
1
»echo 0 > rp_filter
»cat rp_filter
0

Como mencionado, esta é uma comunicação direta com o kernel, de modo que entra em vigor imediatamente. Estes não são arquivos de configuração . Se você tentar e fizer algo errado:

»echo whatever > rp_filter
bash: echo: write error: Invalid argument

O que não quer dizer que você não pode estragar as coisas dessa maneira, é claro. E não deixe de ler os comentários abaixo.

    
por 07.12.2012 / 16:05
0

Para concluir a resposta aceita , é verdade que as configurações de /etc/sysctl.conf têm precedência sobre as em /etc/sysctl.d/ , o exemplo exposto na pergunta original mostra duas variáveis comentadas em /etc/sysctl.conf :

#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

e as mesmas variáveis não comentadas em /etc/sysctl.d/10-network-security.conf :

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

Isso pode ser enganoso porque um comentário não é um cenário, mas apenas uma observação do que poderia ser um cenário.

Nesta situação, as variáveis são, na verdade, ambas definidas como 1, apesar do fato de que no arquivo de configuração mais strong elas são comentadas.

Se em /etc/sysctl.conf nós tivemos:

net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0

então as variáveis acabariam sendo definidas como 0.

    
por 12.09.2017 / 11:23