본문 바로가기
Linux/Linux Shell Command

sysctl 명령어

by 드로니뚜벅이 2022. 4. 24.

명칭이 비슷해 보이지만 systemctl과는 전혀 다른 명령어입니다.

sysctl런타임 시에 /proc/sys 하위 디렉토리에 있는 커널 매개변수 값을 변경할 때 사용하는 명령어입니다. 리눅스 커널에 대한 설정값을 변경하고 조회가 가능합니다. 그래서 시스템 관리자는 DDos 방어를 위해서 이 명령어를 알고 있어야 하고  네트워크 트래픽 관련된 커널 매개변수들을 숙지해야 합니다.

참고로, /proc/sys 하위 디렉토리에 존재하는 디렉토리 구분자는 '/' 대신에 '.'으로 대체하는 점 유의하시기 바랍니다.

 

기본형식: sysctl [options] [variable[=value] ...]

옵션(options)

Option Description
-a --all 모든 변수 표시
-A   alias of -a
-X   alias of -a
  --deprecated 목록에 사용되지 않는 매개 변수를 포함
-b --binary 새로운 라인없이 값 출력
-e --ignore 알 수 없는 변수 오류를 무시
-N --names 값 없이 변수 이름만 출력
-n --values 특정 변수 값만 출력
-p --load[=<file>] 파일에서 값 읽기
-f   alias of -p
  --system 모든 시스템 디렉토리의 값 읽기
-r --pattern <expression> 일치하는 패턴식 검색
-q --quiet 변수 세트를 표시하지 않음
-w --write 변수 값 설정
-o   아무것도 하지 않음 (지정되지 않은 옵션)
-x   아무것도 하지 않음 (지정되지 않은 옵션)
-d   alias of -h
-h --help 도움말 및 종료를 표시
-V --version 버전 정보 및 종료를 표시

 

일시적인 커널 매개변수 값 변경

예로, ping에 응답하지 않도록 설정하기 위해 echo 명령어를 사용할 경우는 아래와 같습니다.

# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
0
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
1

 

ping에 응답하지 않도록 sysctl 명령어를 사용하여 설정하면 아래와 같습니다.

# sysctl -a | grep icmp_echo_ignore_all
net.ipv4.icmp_echo_ignore_all = 0
# sysctl -w net.ipv4.icmp_echo_ignore_all=1
net.ipv4.icmp_echo_ignore_all = 1
# sysctl -a | grep icmp_echo_ignore_all
net.ipv4.icmp_echo_ignore_all = 1

위 명령어는 일시적으로 설정이 됩니다. 이 커널 매개변수 값을 지속적으로 설정하기 위해서는 /etc/sysctl.conf 에

"net.ipv4.icmp_echo_ignore_all = 1" 을 추가해 주면 됩니다.

# cat /etc/sysctl.conf | grep net.ipv4.icmp_echo_ignore_all
net.ipv4.icmp_echo_ignore_all = 1

/etc/sysctl.conf 파일 대신에 /etc/rc.d/rc.local 파일에 설정값을 추가해도 됩니다.

즉, "sysctl -w net.ipv4.icmp_echo_ignore_all=1"을 추가하고 확인해 주세요.

 

 

 

참고 사이트