Écrire directement dans / proc ou utiliser sysctl -w

8

J'essaie de configurer le noyau de mon serveur Linux pour qu'il n'agisse pas comme routeur, pour plus de sécurité. Il ne s'agit pas de transmettre des paquets.

J'ai trouvé ceci:

echo 0 > /proc/sys/net/ipv4/ip_forward  

et ça:

sysctl -w net.ipv4.ip_forward=0  

Évidemment, les deux font la même chose, mais je ne sais pas quelle est la vraie différence entre eux. Je voudrais aussi rendre les effets permanents si possible.

John M.
la source
Aucune différence, sysctl fait la même chose que la commande echo. C'est plus simple.
vonbrand

Réponses:

6

Il n'y a pas de différence. La sysctlcommande sous Linux écrit directement dans les fichiers dans /proc/sys. Cet extrait du code source pour le sysctlprouve:

/*
 * Write a sysctl setting
 */
static int WriteSetting(const char *setting)
{
    /* ... */

    /* used to open the file */
    tmpname = xmalloc(equals - name + 1 + strlen(PROC_PATH));
    strcpy(tmpname, PROC_PATH);
    strncat(tmpname, name, (int) (equals - name));
    tmpname[equals - name + strlen(PROC_PATH)] = 0;
    /* change . to / */
    slashdot(tmpname + strlen(PROC_PATH), '.', '/');

    /* ... */

    fp = fopen(tmpname, "w");
    /* some error checking ... */
    rc = fprintf(fp, "%s\n", value);

    /* ... */
}

Si vous voulez quelque chose de permanent, vous devez modifier /etc/sysctl.confou ajouter un fichier sous /etc/sysctl.d(par exemple /etc/sysctl.d/99-disable-ip-forwarding.conf) contenant:

# Disable IP packet forwarding
net.ipv4.ip_forward = 0

Par ailleurs, certaines distributions désactivent déjà cela explicitement par défaut. Par exemple, RHEL <= 6 ou Fedora <= 15 ont ceci dans /etc/sysctl.conf:

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

Fedora 20 ne le désactive plus explicitement. Il n'y a pas de paramètre de transfert dans /etc/sysctl.conf, /etc/sysctl.d/ou /usr/lib/sysctl.d/.

Cristian Ciupitu
la source
Le transfert n'est-il pas toujours désactivé par défaut?
user1686
C'est ce que je pense aussi, mais vous ne savez jamais quelles distributions sauvages pourraient être là-bas :-)
Cristian Ciupitu
@grawity en effet, il est également désactivé par défaut dans ma distribution. Je suis un peu confus maintenant, y a-t-il une autre configuration du noyau afin d'éviter que notre système ne fonctionne comme routeur?
John M.
@JohnM .: que faut-il éviter si la valeur par défaut est désactivée?
Cristian Ciupitu
@CristianCiupitu, je ne sais pas, je suis nouveau sur Linux et tout ce que je veux désactiver mon serveur de runnig en tant que routeur. Donc je ne sais pas si cette commande est suffisante :)
John M.