리눅스 서버에서 TIME_OUT 이 많이 발생하는 시점에
/etc/sysctl.conf 파일 수정 후 sysctl -p 명령어로 적용해주시면됩니다.
sysclt -a
# 설정값 확인 ~~~
net.ipv4.tcp_tw_reuse 1 0
TIME_WAIT상태의 소켓중 timestamp 보다 작은 값의 timestamp 를 갖는 소켓을 재사용 한다. reuse 옵션을 사용 하기 위해서는 반드시 timestamps 옵션도 활성화 되어 있어야 한다. (기본적으로 활성화 되어 있음)
net.ipv4.tcp_tw_recycle 1 0
TIME_OUT 상태의 소켓 유지 시간이 아주 짧아집니다. 단점 : NAT환경이나 load-balancers, 패킷 드랍 발생
net.ipv4.tcp_rfc1337 1 0
TIME_OUT를 유지하는 시간(단위:분)
net.ipv4.tcp_fin_timeout 5 60
(TIME_OUT)소켓이 완전히 닫힐려면 마지막 FIN을 기다려야 하는데, 이 간격을 초단위로 설정할 수 있습니다.
net.ipv4.tcp_keepalive_time 15 7200 동작중이지 않은 소켓 연결 끊는시간 (단위:초)
net.ipv4.tcp_max_syn_backlog 4096 2048
TCP프로토콜에서 한 소켓이 동시에 SYN요청을 처리하기에기는 한계가 있는데 이 한계가 백로그(backlog)이다. 백로그는 연결 요청이 아직 완전히 처리되지 아니한 대기상태에 있는 큐의 길이이다. 이 백로그 큐가 꽉차게 되면 이후 들어오는 SYN요청은 무시되며 이러한 공격이 SYN Flooding공격이다.
net.ipv4.tcp_no_metrics_save 1 0
연결 닫기 시 메트릭 캐시 안 함
net.ipv4.ip_local_port_range 2000 32768 최대 65535
# netstat -atunp | grep TIME_WAIT
65535 60999 tcp 0 0 192.168.100.102:1024 192.168.100.101:80 TIME_WAIT -
net.core.somaxconn 65535 128
최대 소켓 갯수 증가시키기(somaxconn = soket max connection) 참고로 SOMAXCONN은 listen 큐를 크게 하는 것은 조금 더 많은 RAM 의 비용을 지불하게 만드는 DoS 공격을 피하기위해 보다 좋은 작업이라고 합니다.
net.ipv4.tcp_max_tw_buckets 1440000 131072 최대2000000
시스템이 동시에 가지고 있은 timewait 소켓의 최대 개수입니다. 이 값을 초과하면 time-wait 소켓을 즉시 파괴하고 경고를 출력합니다. 이 제한은 단순한 DoS 공격을 막기 위해서 존재할 뿐이며, 제한값을 억지로 낮춰선 안됩니다. 네트워크 상황이 기본값 이상을 필요로 한다면 도리어 (아마도 메모리 설치를 늘인 다음에) 이 값을 높여주어야 합니다.
'Tech > TCP IP' 카테고리의 다른 글
Traffic QoS (0) | 2024.05.02 |
---|---|
WireShark TLS(DH 키교환) 복호화는 거의 어렵다..... (1) | 2024.01.23 |
TCP Time-Wait & TCP Port number reused (0) | 2021.09.02 |
TCP DUMP (0) | 2020.03.26 |
SSL Handshake ( SNI 프로파일 ) (0) | 2019.09.26 |