Skip to content

sysctl 커널 파라미터

조회 수 21943 추천 수 0 2009.06.04 02:34:58
출처 : http://www.lug.or.kr/docs/LINUX/others/kernel/a2547.html


sysctl 값

/proc 디렉터리 아래에는 하드웨어와 시스템 사용 목적에 더 적합하도록 커널을 조율하는 패러미터가 몇 가지 있습니다. 대체로(99%) 패러미터의 기본값을 그대로 두어도 나쁘지 않지만, 여러 패러미터들이 있고 그 값을 바꿀 수도 있다는 것을 알아둘 필요는 있습니다.

관련된 정보는 다음 파일들에 있습니다:

linux/net/TUNABLE linux/Documentation/networking/ip-sysctl.txt

어떤 패러미터들은 sysctl 인터페이스를 통해 접근할수 있습니다: 예를 들어 아래에서처럼 ARP와 관련된 값들을 손쉽게 열어보고 또 바꿀수도 있습니다:

# cat /proc/sys/net/ipv4/arp_timeout
6000
# echo 7000 > /proc/sys/net/ipv4/arp_timeout
# cat /proc/sys/net/ipv4/arp_timeout
7000

관련된 사용자 프로그램들을 통해 엑세스하기도 합니다. 예를 들어, MAX_WINDOW는 기본 값으로 32 k를 가지는데, 이 값은 최근 하드웨어에는 잘 어울리지만 여러분이 느린(8 bit) 이더넷 카드나 머신을 가지고 있다면 좋지 않습니다. 같은 네트워크에 있는 빠른 머신에서 보내는 트래픽을 느린 머신에서 처리하기에는 너무 큰 값이라 과부하(overruns)와 수신 에러를 일으킬 것입니다. 약 4 k 정도 값이 더 적당할 것입니다. route 명령으로 그 값을 다시 설정해봅시다:

# route add -net 192.168.3.0 window 4096

여러분이 편집증적인 리눅서라면 관련된 헤더 파일에서 #define 값을 바꾸는 방법도 있습니다. #define 값을 바꾼 다음에는 새 설정값을 적용하기 위해 다시 컴파일해야겠지요.

A.1. network

/proc/sys/net/ipv4/아래에 있는 파일들입니다. 여러분 머신에 설정된 값들을 보고싶다면 다음 명령을 사용하세요:

# cd /proc/sys/net/ipv4/
# grep [0-9] *

A.1.1. Global Parameters:

ip_forward - BOOLEAN

0 - disabled (default)

not 0 - enabled

인터페이스들 사이에서 패킷을 전달합니다.

이 변수는 특별해서, 값을 바꾸면 관련된 모든 패러미터들을 기본값으로 바꿉니다 (호스트는 RFC1122, 라우터는 RFC1812)

ip_default_ttl - INTEGER

TTL(Time To Live)은 IP 패킷 안에 들어있는 (대개 0부터 255 사이) 정수값으로 TTL이라는 말 그대로 패킷의 수명을 카운트합니다. 라우터 하나를 지날때마다 초기값에서 1 (혹은 그 이상)을 빼는데 값이 0이 되면 라우터는 그 패킷을 버리고 재전송을 요청하는 ICMP 메시지를 발신지 호스트에 보냅니다. 리눅스는 그 값이 255이나 윈도우95나 98의 TTL 기본 값은 32 홉으로 운영체제마다 다를 수 있습니다.

ping과 traceroute 유틸리티는 TTL 값을 사용하는 대표적인 프로그램인데 사용자가 TTL 값을 조정할 수 있으며 traceroute는 TTL 기본값을 30으로 낮추어 패킷을 전송합니다.

멀티캐스팅에서는 TTL 값이 패킷이 전달되어야 하는 범위나 구역을 가리킵니다.

  • 0은 같은 호스트로 제한된다.

  • 1은 같은 서브넷으로 제한된다.

  • 32는 같은 사이트로 제한된다.

  • 64는 같은 지역으로 제한된다.

  • 128은 같은 대륙으로 제한된다.

  • default 64

    ip_no_pmtu_disc - BOOLEAN

    MTU(Maximum Transmission Unit)는 프레임이나 패킷이 한번에 하나씩 전송될 때 통과할 수 있는 크기로 프로토콜마다 그 크기가 다릅니다. 예를 들어 이더넷에서는 1500이지만 X.25에서는 576입니다. Path MTU는 두 호스트사이 경로(path)에서 가장 작은 MTU 값입니다.

    호스트가 같더라도 라우팅 경로나 프로토콜은 매번 바뀌므로 MTU 값도 계속 달라지게됩니다. 현재 패킷보다 작은 MTU 값을 가진 라우터를 통과할 때 패킷은 그 라우터 MTU에 맞춰 잘게 쪼개집니다. 수신하는 호스트에서는 그렇게 쪼개진 조각들을 모두 받아서 다시 재조립하는데, 그 가운데 한 조각이라도 drop되면 모든 조각을 다시 전송받아야 합니다. 이런 경우 라우터는 조각을 나누느라 바쁘고, 호스트는 재조립하느라 바빠지며, 재전송이 많아지는 등 퍼포먼스를 떨어트리게 됩니다.

    이럴 때 pmtu discovery를 사용합니다. 먼저 패킷을 발송할 때 헤더에 DF(Don't Fragment) 비트를 설정해서 조각내지 말라고 알립니다. DF 비트가 설정된 패킷을 받은 라우터는 자신의 MTU보다 큰 경우 조각화하는 대신 Can't Fragment 에러와 MTU값을 돌려보냅니다. 그 값을 돌려받는 호스트가 라우터의 MTU 값에 맞추어 패킷을 다시 전송합니다. 조각나는 것을 피하면서 가장 큰 패킷을 보내기 위해 pmtu discovery를 사용하는 것입니다.

    단, 이 기능을 사용하기 위해서는 ICMP 메시지 타입 3 가운데 code 4(Fragmentation Needed and Don't fragment)를 허용해야합니다.

    default FALSE

    A.1.2. IP Fragmentation:

    ipfrag_high_thresh - INTEGER

    IP 조각들을 재조합할 때 사용할 최대 메모리를 지정합니다. ipfrag_high_thresh 값이 지정되어 있으면, 프래그먼트 핸들러는 ipfrag_low_thresh에 다다를 때까지 패킷을 토스합니다.

    ipfrag_low_thresh - INTEGER

    ipfrag_high_thresh를 보세요

    ipfrag_time - INTEGER

    메모리에 IP 조각을 담아두는 시간을 초 단위로 설정합니다.

    A.1.3. TCP variables:

    tcp_syn_retries - INTEGER

    활성 TCP 연결에서 재전송을 위해 지정한 시간만큼 지난 뒤에 초기화 SYN 패킷을 보냅니다. 255보다 클 수 없습니다. 기본값은 5인데 180초에 해당합니다.

    tcp_synack_retries - INTEGER

    Passive TCP 연결에서 재전송을 위해 지정한 시간만큼 지난 뒤에 초기화 SYNACK 패킷을 보냅니다. 255보다 클 수 없습니다. 기본값은 5인데 180초에 해당합니다.

    tcp_keepalive_time - INTEGER

    keepalive가 활성화되었을 때 얼마나 자주 keepalive 메시지를 내보낼 것인지 정합니다. 기본값은 2 시간입니다.

    tcp_keepalive_probes - INTEGER

    연결이 끊어졌다고 여길 때까지 keepalive probe를 얼마나 내보낼지 정합니다. 기본값은 9입니다.

    tcp_keepalive_interval - INTEGER

    얼마나 자주 probe를 내보낼지 정합니다. probe가 출발한 뒤에 tcp_keepalive_probes에 tcp_keepalive_interval을 곱한 만큼 시간이 지나면 응답하지 않는 연결을 죽입니다. 기본값은 75초입니다. 예를 들어 기본 값들을 그대로 두었을 때 11분 15초동안 재시도한 다음 연결을 취소할 것입니다.

    tcp_retries1 - INTEGER

    무언가 잘못되었고, 이런 의심스런 면을 네트워크 레이어에 알리는 것이 좋겠다고 판단하기 전에 몇번 확인해 볼지 정합니다. 최소 RFC 값은 3으로, RTO에서 3초에서 8분 사이에 해당합니다.

    tcp_retries2 - INTEGER

    살아있는 TCP 연결을 끊기 전에 확인하는 횟수를 정합니다. RFC1122는 100초보다 길게 제한하라 이릅니다. 하지만 너무 작은 값입니다. 기본값은 15로 RTO 13-30분에 해당합니다.

    tcp_orphan_retries - INTEGER

    우리 쪽에서 닫은 TCP 연결을 끊기 전에 확인하는 횟수를 정합니다. 기본값은 7로 RTO 50초에서 16분 사이에 해당합니다. 여러분 머신에 웹 서버가 올라와 있다면 이 값을 줄여서 소켓 등이 귀한 리소스를 소비하지 않도록 할 수도 있습니다.

    tcp_fin_timeout - INTEGER

    우리 쪽에서 닫을 때 FIN-WAIT-2 상태인 소켓을 잡아둘 시간을 정합니다. 상대편은 깨어진 뒤에 스스로 닫지 못하거나 뜻하지 않게 죽어버릴 수도 있습니다. 기본 값은 60초입니다. 2.2에서 일반적인 값은 180초였는데 2.4에서도 이 값을 그대로 사용할 수 있지만, 여러분 머신이 웹 서버로 부하가 많다면 죽은 소켓들이 그대로 엄청나게 쌓여 메모리가 넘쳐나는 문제가 생길 것입니다. FIN-WAIT-2 소켓은 최대 1.5K 메모리만 잡아 먹으므로 FIN-WAIT-1 소켓보다는 덜 위험합니다. 그러나 더 오래 버티는 경향이 있습니다.

    tcp_max_tw_buckets - INTEGER

    시스템에서 동시에 잡아두는 timewait 소켓의 수를 정합니다. 이 값이 time-wait 소켓을 넘어서면 바로 파괴되고 경고가 출력됩니다. 이 제한은 단순한 DoS 공격을 방어하기 위해서만 필요하며, 기본값보다 작게해서는 절대 안됩니다. 네트워크 환경이 기본값보다 큰 값을 요구한다면 늘려도 됩니다 (아마, 설치된 메모리를 증설한 다음)

    tcp_tw_recycle - BOOLEAN

    빠른 재생 TIME-WAIT 소켓을 사용합니다. 기본값은 1입니다. 전문가의 조언/요청이 없다면 절대 바꾸지 마세요.

    tcp_max_orphans - INTEGER

    시스템에 고정되었거나, 사용자 파일 핸들에 연결되지 않은 TCP 소켓의 최대 값을 지정합니다. 고아 연결이 이 값을 초과하면 즉시 리셋되고 경고를 출력합니다. 이 제한은 단순한 DoS 공격을 방어하기 위해서만 필요하며, 기본값보다 작게해서는 절대 안됩니다. 네트워크 환경이 기본값보다 큰 값을 요구하거나 오래 버티어서 그런 문제들은 더 공격적으로 죽이기 위해 네트워크를 조율한다면 늘려도 됩니다 (아마, 설치된 메모리를 증설한 다음) 한번 더 당부하자면: 고아 연결들은 스왑할 수 없는 메모리를 각자 64K 이상 잡아먹습니다.

    tcp_abort_on_overflow - BOOLEAN

    리스닝 서비스가 새로운 연결을 수락하기에 너무 느리다면 그 서비스를 리셋합니다. 기본값은 FALSE입니다. 이 것은 갑자기 오버플로가 발생하더라도 연결이 복구된다는 뜻입니다. 리스닝 디먼이 연결을 더 빨리 수락하도록 자리잡지 못하는게 정말 확실할 때에만 이 옵션을 활성화하세요. 이 옵션을 활성화하면 여러분 서버에서 손상된 클라이언트라도 리슨합니다.

    tcp_syncookies - BOOLEAN

    커널을 컴파일할 때 CONFIG_SYNCOOKIES 를 활성화했을 때에만 사용가능합니다. 일반적으로 'syn flood attack'로 알려진 공격을 방어합니다. 기본값은 FALSE

    syncookie는 예비 기능임을 기억해 두세요. 이 옵션은 합법적인 연결로 많은 부하가 걸리는 서버에서는 절대 사용하지 마세요. 여러분 로그에서 synflod 경고가 뜨지만, 알고보니 정상적인 연결이 과중해서 생긴거라면 경고 메시지가 사라질 때까지 다른 패러미터를 조율해보세요.

    See: tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow.

    syncookies 는 TCP 프로토콜에 심각하게 어긋나며, TCP 확장을 사용할 수 없으며, 특정 서비스(f.e. SMTP relaying)에 심각한 손상을 가져올 수 있습니다. 여러분에게 보이지 않더라도, 클라이언트들은 연계되어 여러분에게 닿아 있습니다. 로그에 synflood 경고가 남지만 진짜로 넘쳐난 것이 아니라면, 여러분 서버 설정이 아주 엉터리일 것입니다.

    tcp_stdurg - BOOLEAN

    TCP urg 포인터 필드 해석기가 필요할 때에 사용하세요. 대부분 오래된 BSD 해석기를 사용하는데, 리눅스가 그런 것들과 제대로 소통하지 못하는 듯 하다면 켜세요. 기본값은 FALSE

    tcp_max_syn_backlog - INTEGER

    연결한 클라이언트로부터 응답 패킷을 받지 못하고 있는 접속 요청을 몇 개나 기억하고 있을지 정합니다. 기본값은 1024로 128MB 이상 메모리를 가져야합니다. 그보다 작을 때에는 128을 사용하세요. 서버가 과부하에 허덕인다면 이 값을 늘리세요. 다만 1024 보다 크게 하려면 include/net/tcp.h 파일을 열어 TCP_SYNQ_HSIZE 값을 TCP_SYNQ_HSIZE*16<=tcp_max_syn_backlog 공식에 맞추어 설정한 다음 커널을 다시 컴파일해야 합니다.

    tcp_window_scaling - BOOLEAN

    Enable window scaling as defined in RFC1323.

    tcp_timestamps - BOOLEAN

    Enable timestamps as defined in RFC1323.

    tcp_sack - BOOLEAN

    Enable select acknowledgments (SACKS).

    tcp_fack - BOOLEAN

    FACK 혼잡 회피와 빠른 재선송을 가능하게 합니다. tcp_sack가 활성화되지 않았다면 값이 사용되지 않습니다.

    tcp_dsack - BOOLEAN

    Allows TCP to send "duplicate" SACKs.

    tcp_ecn - BOOLEAN

    명백한 혼잡 공지(Explicit Congestion Notification).

    tcp_reordering - INTEGER

    Maximal reordering of packets in a TCP stream. Default: 3

    tcp_retrans_collapse - BOOLEAN

    망가진 프린터에 Bug-to-bug 호환. 더 큰 패킷을 다시 전송해서 어떤 TCP 스택에 있는 버그를 피해갑니다.

    tcp_wmem - vector of 3 INTEGERs: min, default, max

    min: TCP 소켓에서 send 버퍼를 위해 예약된 메모리 크기.Default: 4K

    default: 이 값은 다른 프로토콜들에 의해 사용되는 net.core.wmem_default 값에 우선합니다. Default: 16K

    max: TCP 소켓에서 자동으로 선택된 send 버퍼를 위한 최대 메모리 크기. 이 값보다 net.core.wmem_max 값이 우선합니다. Default: 128K

    tcp_rmem - vector of 3 INTEGERs: min, default, max

    min: TCP 소켓에 의해 사용되는 receive 버퍼의 최소 크기. Default: 8K

    default: 이 값은 net.core.rmem_default에 우선합니다. Default: 87380 바이츠.

    max: receiver 버퍼에서 사용할 수 있는 최대 크기. 이 값보다 net.core.rmem_max 가 우선합니다. Default: 87380*2 bytes.

    tcp_rfc1337 - BOOLEAN

    세팅되면 TCP 스택은 RFC1337을 따릅니다. 해제되면 RFC를 따르지 않지만 TCP TIME_WAIT asassination은 막아줍니다.

    Default: 0

    ip_local_port_range - 2 INTEGERS

    TCP나 UDP에서 로컬 포트로 선택할 포트 범위를 정합니다. 첫 숫자가 첫 번호이고, 두번째 숫자가 마지막 로컬 포트번호입니다. 기본값은 시스템에서 사용할 수 있는 메모리에 따라 정해집니다.

    128Mb 보다 큰 경우 32768-61000,

    128Mb 보다 작은 경우 1024-4999 혹은 더 조금.

    이 숫자는 TCP 확장(timestamp) 없이 동시에 열 수 있는 접속 수를 뜻합니다. tcp_tw_recycle을 설정했다면 timestamp 지원으로 1024-4999 범위로도 초당 2000 연결이 충분합니다.

    ip_nonlocal_bind - BOOLEAN

    세팅되면 프로세스가 로컬 IP가 아닌 주소에 bind()할 수 있습니다. 매우 유용한 기능이지만 어떤 어플리케이션에서는 나쁠 수 있습니다.

    Default: 0

    ip_dynaddr - BOOLEAN

    0이 아닌 값을 세팅하면 동적 주소를(dynamic addresses) 지원합니다. 1보다 큰 값을 세팅하면 동적 주소가 다시 쓰여질 때마다 로그 메시지가 출력될 것입니다.

    Default: 0

    icmp_echo_ignore_all - BOOLEAN, icmp_echo_ignore_broadcasts - BOOLEAN

    둘 가운데 하나라도 참이면 커널은 그 장비나 브로드캐스트/멀티캐스트 주소로 오는 모든 ICMP ECHO을 무시합니다. 만약 boardcast/multicast 주소의 ICMP ECHO 요청을 받아들이면 denial of service(DOS) packet flooding 공격에 이용 될 수 있습니다.

    icmp_ratelimit - INTEGER

    아래 icmp_ratemask와 일치하는 곳에서 ICMP 패킷을 보낼 수 있는 최대 빈도를 제한합니다.

    0은 제한을 없애며 그 밖의 값은 최대 빈도를 의미합니다.

    Default: 1

    icmp_ratemask - INTEGER

    매스크는 빈도를 제한할 ICMP 타입를 만듭니다.

    Default: 6168

    Note: 6168 = 0x1818 = 1<<ICMP_DEST_UNREACH + 1<<ICMP_SOURCE_QUENCH +1<<ICMP_TIME_EXCEEDED + 1<<ICMP_PARAMETERPROB, which means dest unreachable (3), source quench (4), time exceeded (11) and parameter problem (12) ICMP packets are rate limited (check values in icmp.h)

    icmp_ignore_bogus_error_responses - BOOLEAN

    어떤 라우터들은 브로드캐스트 프레임에 거짓 응답(bogus responses)을 해서 RFC 1122를 위반합니다. 그런 경우 일반적으로 커널 경고를 통해 기록됩니다. 이 값이 참이면 커널은 그런 경고를 남기지 않습니다. Default: FALSE

    (1) Jiffie:

    커널을 위한 내부 타임유닛입니다. i386에서 1/100 초, 알파에서 1/1024 초입니다. 여러분 시스템에 딱 맞는 값이 궁금하면 /usr/include/asm/param.h 에서 HZ define을 보세요.

    igmp_max_memberships - INTEGER

    멀티캐스트 그룹에 참여할 수 있는 최대 값을 바꿉니다.

    Default: 20

    conf/interface/*:

    conf/all/* 아래 있는 것들은 모든 인터페이스에 적용할 값들입니다.

    log_martians - BOOLEAN

    불가능한 주소를 가진 패킷들을 커널 로그에 기록합니다.

    accept_redirects - BOOLEAN

    ICMP redirect 메시지를 허용합니다.

    TRUE (host) FALSE (router)

    forwarding - BOOLEAN

    지정한 인터페이스에서 IP 포워딩을 허용합니다.

    mc_forwarding - BOOLEAN

    멀티캐스트 라우팅을 지원합니다. CONFIG_MROUTE 옵션을 넣어 커널을 컴파일해야 하며 mrouted 등 멀티캐스트 라우팅 디먼이 필요합니다.

    proxy_arp - BOOLEAN

    프록시 ARP 는 지정한 인터페이스와 연결된 다른 호스트의 ARP 주소를 대신 뿌려주고, 받습니다. 투명하게 동작하는 네트워크 장비에 반드시 필요합니다.

    shared_media - BOOLEAN

    RFC1620 미디어 공유 리다이렉트를 보내거나(라우터) 수락(호스트)합니다. 이 옵션 값이 0이면 한 장치에 설정된 서로 다른 서브넷을 직접 통신할 수 없습니다.

    default TRUE

    secure_redirects - BOOLEAN

    디폴트 게이트웨이 목록에 올라있는 게이트웨이에만 ICMP 리다이렉트 메시지를 허용합니다.

    default TRUE

    send_redirects - BOOLEAN

    라우터라면 다른 호스트로 ICMP 리다이렉트를 보냅니다. Default: TRUE

    bootp_relay - BOOLEAN

    BOOTP 릴레이 디먼이 있어야합니다

    default FALSE

    Not Implemented Yet.

    accept_source_route - BOOLEAN

    SRR 옵션으로 소스 라우팅 패킷들을 허용합니다.

    default TRUE (router) FALSE (host)

    이 값이 참이면 패킷 경로를 출발지에서 조작할 수 있으므로 IP 스푸핑 등에 악용될 수 있습니다

    rp_filter - BOOLEAN

    1 - RFC1812 권고에 따라 한쪽 네트워크만 연결된 호스트나 쪼개진 네트워크에서 라우터는 역경로 추적을 통해 출발지가 유효한지 판단합니다. 네트워크에서 네트워크로 연결하는 라우터에서 이 옵션을 1로 설정하면, 방화벽 규칙을 더 추가하지 않고, 내부 네트워크에서 시도하는 스푸핑 공격을 막습니다 (외부 스푸핑과 상관 없습니다).

    느리고 불안정한 프로토콜을(RIP 따위) 사용하는 통짜 네트워크나 고정 라우트에서는 문제를 일으킬 수 있습니다.

    기본값 0 - 소스 경로를 검사하지 않습니다.

profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/1816/75f/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수
87 net-snmp 설치 및 snmp 사용법 ADMINPLAY 2009-06-24 26439
86 Linux 소켓 접속 개수 늘리기 ADMINPLAY 2009-06-17 23002
85 아파치 HARD_SERVER_LIMIT ADMINPLAY 2009-06-17 23150
84 시스템 최적화 - 동시사용자 늘리기위한 커널 조정 ADMINPLAY 2009-06-17 21387
83 hdparm - 하드디스크의 자세한 정보 보기 ADMINPLAY 2009-06-16 22082
82 history 시간 정보 출력 ADMINPLAY 2009-06-04 21101
» sysctl 커널 파라미터 ADMINPLAY 2009-06-04 21943
80 Setting promiscuous mode ADMINPLAY 2009-06-04 20479
79 syslogd : 콘솔에 남는 메세지 로그파일로 남기기 ADMINPLAY 2009-06-04 22016
78 리눅스에서 윈도우 공유 폴더 마운트 ADMINPLAY 2009-06-04 21556
77 rsyncd.conf설정 ADMINPLAY 2009-06-04 20932
76 대용량 하드 디스크 파티셔닝 (GPT 파티션) ADMINPLAY 2009-06-04 24394
75 ethtool 사용법 ADMINPLAY 2009-06-04 22254
74 백 그라운드, 포그라운드 전환 ADMINPLAY 2009-06-04 25222
73 apm설치시 configure error ADMINPLAY 2009-06-01 22005
72 rpmfind (rpm패키지 검색사이트) ADMINPLAY 2009-06-01 23078
71 libc-client-2002e-8 패키지 ADMINPLAY 2009-06-01 20574
70 리눅스 터미널에서 사용하는 단축 키 ADMINPLAY 2009-05-28 18998
69 ssh, ftp 접근 딜레이 현상 발생시 조치방법 ADMINPLAY 2009-05-28 22474
68 리눅스에서 하드웨어 스팩 보기 dmidecode ADMINPLAY 2009-05-28 22837

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234