커널 파라미터 값은 어떻게 변경하나요?
💡 요약 정리
- 커널 파라미터는 시스템 설정을 제어하는 변수입니다.
- 일시 적용:
sysctl -w또는/proc디렉토리 직접 변경 - 영구 적용:
/etc/sysctl.conf파일에 설정 추가 후sysctl -p명령 실행 - 변경 전 모든 현재 값을 확인하려면
sysctl -a명령 사용 - 재부팅 시 초기화되지 않도록 영구 적용 여부 확인해야 합니다.
1. 커널 파라미터 확인
- 커널 파라미터 확인은
sysctl -a명령으로 할 수 있습니다. 이 명령은 모든 파라미터를 출력합니다. - 특정 파라미터를 찾으려면
sysctl -a | grep xxx명령을 사용하세요.
[root@localhost ~]# sysctl -a
bus.vmbus.vmbus_loglevel = 522125318
crypto.fips_enabled = 0
abi.vsyscall32 = 1
dev.parport.default.spintime = 500
dev.parport.default.timeslice = 200
dev.scsi.logging_level = 0
dev.raid.speed_limit_max = 200000
dev.raid.speed_limit_min = 1000
dev.hpet.max-user-freq = 64
dev.rtc.max-user-freq = 64
debug.exception-trace = 1
debug.kprobes-optimization = 1
net.unix.max_dgram_qlen = 10
net.token-ring.rif_timeout = 600000
net.ipv4.conf.seth0.promote_secondaries = 0
net.ipv4.conf.seth0.force_igmp_version = 0
net.ipv4.conf.seth0.disable_policy = 0
net.ipv4.conf.seth0.disable_xfrm = 0
~
fs.quota.reads = 0
fs.quota.drops = 0
fs.quota.lookups = 0
fs.suid_dumpable = 0
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_watches = 8192
fs.inotify.max_user_instances = 128
fs.aio-max-nr = 65536
fs.aio-nr = 0
fs.lease-break-time = 45
fs.dir-notify-enable = 1
fs.leases-enable = 1
fs.overflowgid = 65534
fs.overflowuid = 65534
fs.dentry-state = 31413 29432 45 0 0 0
fs.nr_open = 1048576
fs.file-max = 49308
fs.file-nr = 510 0 49308
fs.inode-state = 36128 8323 0 0 0 0 0 0
fs.inode-nr = 36128 8323
fs.binfmt_misc.status = enabled
[root@localhost ~]# sysctl -a | grep icmp_echo
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_echo_ignore_all = 0
2. /proc 디렉토리에서 파라미터 값 수정
- 커널 파라미터는
/proc디렉토리 하위 파일에 직접 쓰거나,sysctl -w명령으로 수정할 수 있습니다. - 단, 이 방식은 시스템을 재부팅하면 값이 초기화됩니다.
[root@localhost ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
0
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
[root@localhost ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
1
[root@localhost ~]# sysctl -a | grep icmp_echo
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_echo_ignore_all = 1
[root@localhost ~]# sysctl -w net.ipv4.icmp_echo_ignore_all=0
net.ipv4.icmp_echo_ignore_all = 0
[root@localhost ~]# sysctl -a | grep icmp_echo
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_echo_ignore_all = 0
3. sysctl.conf 파일에서 파라미터 수정
/proc에서 수정한 값은 일시적이므로, 재부팅 후에도 유지하려면 sysctl 설정 파일을 수정해야 합니다./etc/sysctl.conf파일의 하단에 원하는 파라미터를 추가합니다.- 현재 가능한 파라미터는
sysctl -a명령으로 확인할 수 있습니다.
net.core.wmem_default = 4194304
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 1024 65000
4. 수정된 사항 적용하기
- 파일을 저장한 후, 아래 명령어로 설정을 시스템에 적용할 수 있습니다.
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.core.wmem_default = 4194304
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 1024 65000