sysctl -w를 사용하여 / proc에 직접 쓰기


8

더 많은 보안을 위해 Linux 서버의 커널이 라우터 역할을하지 않도록 커널을 구성하려고합니다. 요점은 패킷을 전달하지 않는 것입니다.

나는 이것을 발견했다 :

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

이:

sysctl -w net.ipv4.ip_forward=0  

분명히 둘 다 똑같은 일을하지만 둘 사이의 실제 차이점이 무엇인지 잘 모르겠습니다. 또한 가능한 경우 효과를 영구적으로 만들고 싶습니다.


sysctl은 echo 명령과 동일합니다. 그냥 쉬워
vonbrand

답변:


6

다른 점이 없다. sysctlLinux 의 명령은의 파일에 직접 씁니다 /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/.


기본적으로 전달이 항상 해제되어 있지 않습니까?
user1686 년

저도 그렇게 생각합니다. 그러나 당신은 거기에 어떤 야생 분포가 있는지 모릅니다 :-)
Cristian Ciupitu

@grawity는 실제로 배포판에서도 기본적으로 꺼져 있습니다. 우리 시스템이 라우터로 실행되는 것을 피하기 위해 다른 커널 구성이 있습니까?
John M.

@ JohnM. : 기본값을 사용하지 않으면 어떻게 피할 수 있습니까?
Cristian Ciupitu 12

@CristianCiupitu, 나는 모른다, 나는 리눅스를 처음 접했고 라우터로 runnig에서 내 서버를 비활성화하고 싶다. 이 명령이 충분한 지 잘 모르겠습니다.
John M.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.