서버 운영/Linux

리눅스 커널 설정 sysctl 명령어

meong_j 2021. 10. 15. 16:16
728x90
반응형

리눅스 시스템은 핵심적인 역할을 수행하는 커널(Kernel)과 관련된 다양한 매개변수를 제공 하고 있다.

리눅스 관리자는 sysctl 명령어를 사용하여 커널의 매개변수 값을 변경함으로써 시스템의 성능을 향상시키고, 보안을 강화할 수 있다. 

 

또한 /proc/sys 디렉터리에서 커널 제어를 위한 매개변수들을 보관하고, 하위 디렉터리에 있는 항목들을 echo 명령과 > 기호를 이용해 변경할 수 있다.

 

시스템의 성능과 보안 관련된 디렉터리는 kernel, fs, net, vm이다.

kernel은 IPC와 관련된 Internal Message Queue, Semaphore 등 설정하는 매개변수

fs는 파일 시스템 관련 매개변수

net은 TCP, ICMP 등 네트워크 관련 매개변수

vm은 메모리 관련 변수가 들어있다.

 

 

 

주요 매개변수

서버로 사용되는 경우가 많은 리눅스 특성 상 네트워크 관련 커널 매개변수가 상당히 많은 편으로 몇 개만 정리하려고 한다. 커널 매개 변수는 /proc/sys/net 디렉터리에 위치해있고 주요 디렉터리에는 core, ipv4, ipv6, netfilter가 있다.

 

core : 네트워크 기본 설정 관련 커널 매개변수
ipv4 : ipv4 관련 커널 매개 변수
ipv6 : ipv6 관련 커널 매개 변수
netfilter : 네트워크 필터링 관련 매개 변수

 

 

수치형 매개변수

커널 매개변수 기본값 설명
ipv4/tcp_keepalive_time 7200 TCP연결 상태를 계속 유지하기 위한 시간설정, 초 단위
ipv4/tcp_max_syn_backlog 128 TCP 프로토콜에서 하나의 소켓이 동시에 SYN요청의 한계인 백로그(backlog) 설정, 백로그 큐가 다차면 이 후 SYN요청 무시
ipv4/tcp_fin_timeout 60 TCP 세션 종료 후에 얼마나 세션 유지할지 초단위 설정
ipv4/tcp_synack_retries 5 일정 시간 내에 IP주소별로 보내고 SYN패킷의 재시도 횟수 제한

 

 

활성/비활성 매개변수

커널 매개변수 기본값 설명
ipv4/icmp_echo_ignore_all 0 ping과 같은 ICMP 패킷에 대한 응답 여부결정
매개변수 값이 0이면 응답, 1이면 응답하지 않음
ipv4/tcp_syncookies 1 SYN Flooding 공격을 막을 때 유용한 항목, 기본값 1로 설정
ipv4/ip_forward 1 하나의 서버에서 ip를 공유하여 포워딩 가능할 것 인지 여부 설정
1이면 가능, 0이면 불가능

 

 

커널 매개변수 제어 명령어 (sysctl)

sysctl [option] [변수]
sysctl [option] [변수=값]

-a, -A : 커널 매개변수와 값을 모두 출력 (--all)
-p [파일명] : 환경 변수 파일에 설정된 값 출력 , 파일명 미 지정시 /etc/sysctl.conf 파일 적용 (--load=파일명)
-n : 특정 매개 변수에 대한 값 출력 (--values)
-w [변수=값] : 매개변수의 값 설정(--write)

sysctl 명령어는 커널 매개변수(Kernel parameter) 의 값을 제어하여 시스템을 최적화하는 명령이다.

즉, /proc/sys 디렉터리에 존재하는 매개변수 제어하는 명령으로 /proc/sys 를 최상위 디렉터리(root)로 인식한다.

해당 설정을 재부팅 시에도 계속적으로 반영하기 위해서는 /etc/stsctl.conf 파일에 등록해야 한다.

 

 

[사용 예시]

 

# sysctl -w net.ipv4.icmp_echo_ignore_all=1

-> ping 명령에 대한 응답을 거부하도록 설정한다.

반응형