Написання безпосередньо в / proc проти використання sysctl -w


8

Я намагаюся налаштувати ядро ​​мого сервера Linux так, щоб воно не діяло як маршрутизатор, для більшої безпеки. Сенс у тому, щоб не пересилати пакети.

Я знайшов це:

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

і це:

sysctl -w net.ipv4.ip_forward=0  

Очевидно, що обидва роблять те саме, але я не впевнений, у чому справжня різниця між ними. Я також хотів би, щоб ефекти були постійними, якщо це можливо.


Немає різниці, sysctl робить те саме, що і команда echo. Просто простіше.
vonbrand

Відповіді:


6

Різниці немає. sysctlКоманда на Linux записує безпосередньо в файли /proc/sys. Цей фрагмент із вихідного коду sysctlпідтверджує це:

/*
 * 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);

    /* ... */
}

Якщо ви хочете щось постійне, вам потрібно відредагувати /etc/sysctl.confабо додати файл у розділі /etc/sysctl.d(наприклад /etc/sysctl.d/99-disable-ip-forwarding.conf), що містить:

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

До речі, деякі дистрибутиви вже відключають це явно за замовчуванням. Наприклад, RHEL <= 6 або Fedora <= 15 мають це в /etc/sysctl.conf:

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

Fedora 20 вже не відключає це експліцитно. Немає налаштування для переадресації в /etc/sysctl.conf, /etc/sysctl.d/або /usr/lib/sysctl.d/.


Не переадресація завжди вимикається за замовчуванням?
користувач1686

Це я теж думаю, але ти ніколи не знаєш, які дикі дистрибуції там можуть бути :-)
Крістіан Цюпіту

@grawity дійсно, його вимкнено за замовчуванням і в моєму розповсюдженні. Я ніколи не розгублений, чи є якась інша конфігурація ядра, щоб уникнути роботи нашої системи як маршрутизатора?
Джон М.

@JohnM. Чого слід уникати, якщо типовий параметр вимкнено?
Cristian Ciupitu

@ CristianCiupitu, я не знаю, я новачок у Linux, і все, що я хочу відключити мій сервер від runnig як маршрутизатор. Тож я не впевнений, чи достатньо цієї команди :)
Джон М.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.