Escribir directamente en / proc versus usar sysctl -w


8

Estoy tratando de configurar el kernel de mi servidor Linux para que no actúe como enrutador, para mayor seguridad. El punto no es reenviar paquetes.

He encontrado esto:

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

y esto:

sysctl -w net.ipv4.ip_forward=0  

Obviamente, ambos hacen lo mismo, pero no estoy seguro de cuál es la verdadera diferencia entre ellos. También me gustaría hacer que los efectos sean permanentes si es posible.


No hay diferencia, sysctl hace lo mismo que el comando echo. Simplemente más fácil
vonbrand

Respuestas:


6

No hay diferencia. El sysctlcomando en Linux escribe directamente en los archivos /proc/sys. Este fragmento del código fuente lo sysctldemuestra:

/*
 * 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 desea algo permanente, debe editar /etc/sysctl.confo agregar un archivo en /etc/sysctl.d(p /etc/sysctl.d/99-disable-ip-forwarding.conf. Ej. ) Que contenga:

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

Por cierto, algunas distribuciones ya lo desactivan explícitamente por defecto. Por ejemplo, RHEL <= 6 o Fedora <= 15 tienen esto en /etc/sysctl.conf:

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

Fedora 20 ya no lo deshabilita explícitamente. No hay configuración de reenvío en /etc/sysctl.conf, /etc/sysctl.d/o /usr/lib/sysctl.d/.


¿El reenvío no siempre está desactivado por defecto?
user1686

Eso es lo que pienso también, pero nunca se sabe qué distribuciones salvajes podrían existir :-)
Cristian Ciupitu

@grawity de hecho, también está desactivado por defecto en mi distribución. Estoy un poco confundido ahora, ¿hay alguna otra configuración de kernel para evitar que nuestro sistema se ejecute como enrutador?
John M.

@JohnM .: ¿qué hay que evitar si el valor predeterminado está desactivado?
Cristian Ciupitu

@CristianCiupitu, no lo sé, soy nuevo en Linux y todo lo que quiero es que mi servidor no se ejecute como enrutador. Así que no estoy seguro si este comando es suficiente :)
John M.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.