web-dev-qa-db-fra.com

Trouver les valeurs des options de noyau relatives à SYSCTL.CONF et à SYSCTL.D

Sur ma machine Ubuntu, en /etc/sysctl.conf Fichier, j'ai reçu les options de filtrage des chemins inverse commentées par défaut comme ceci:

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

mais en /etc/sysctl.d/10-network-security.conf Ils sont (à nouveau, par défaut) non commentés:

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

Donc, le filtrage de la trajectoire inverse est activé ou non? Lequel des emplacements de configuration prend la priorité? Comment vérifier les valeurs actuelles de ces options de noyau et d'autres options de noyau?

23
Desmond Hume

Vérification de la valeur d'une variable SYSCTL est aussi simple que

sysctl <variable name>

et, au fait, la définition d'une variable SYSCTL est aussi simple que

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

mais les changements faits de cette façon ne tiennent probablement que jusqu'à ce que le prochain redémarrage.

Quant à laquelle des emplacements de configuration, /etc/sysctl.conf ou /etc/sysctl.d/, a priorité, voici ce que /etc/sysctl.d/READMELe fichier dit:

Les utilisateurs finaux peuvent utiliser 60 - *. Conf et ci-dessus, ou utiliser / etc/sysctl.conf directement, qui remplace quoi que ce soit dans ce répertoire.

Après avoir modifié la configuration dans l'un des deux emplacements, les modifications peuvent être appliquées avec

Sudo sysctl -p
36
Desmond Hume

Ce genre de choses est généralement dans le /proc et/ou /sys Interfaces de noyau (d'abord, gardez à l'esprit que ces répertoires est un fichier de disque régulier, ce sont toutes des lignes directes sur le noyau).

Donc, par exemple:

»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

On dirait que j'ai un ensemble rp_filter pour EM1, WLAN0 et "Par défaut". Vous pouvez définir ou vous désiertoir en écrivant simplement sur la poignée du fichier:

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

Comme mentionné, il s'agit de la communication directe avec le noyau, de sorte que cela prend effet immédiatement. Ceux-ci ne sont pas fichiers de configuration. Si vous essayez de faire quelque chose de mal:

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

Ce qui ne veut pas dire que vous ne pouvez pas viser les choses de cette façon, bien sûr. Et assurez-vous de lire les commentaires ci-dessous.

2
goldilocks

Compléter la réponse acceptée , alors qu'il est vrai que /etc/sysctl.conf Paramètres prennent la priorité sur ceux de /etc/sysctl.d/, l'exemple exposé dans la question initiale montre deux variables commentées dans /etc/sysctl.conf:

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

et les mêmes variables non commentées dans /etc/sysctl.d/10-network-security.conf:

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

Cela peut être trompeur car un commentaire est non un réglage, mais seulement A remarque de ce qui pourrait être un réglage.

Dans cette situation, les variables sont réellement définies à 1, malgré le fait que dans le fichier de configuration plus fort, ils ont été commentés.

Si dans /etc/sysctl.conf nous avons eu:

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

ensuite, les variables seraient éventuellement définies sur 0.

0
Bozzy