IT. POST LIST

POST ALL LABEL

ip_conntrack 그리고 ip_conntrack table full, dropping packet. 오류

By 때찌때찌맴매 - 12월 04, 2013

참고 : netfilter는 iptables가 방화벽 기능을 구현할 수 있게 프레임워크를 제공한다고 생각할 수 있으며,

iptables는 커널에 방화벽 정책을 전달하는 사용자 도구라고 볼 수 있습니다.


conntrack 모듈이란?

현재 접속상태에 대한 정보를 일정시간동안 시스템에서 기억하는 모듈 이며

iptables에서 현재 테이블에 등록된 IP의 연결을 추적하기 위한 것입니다.

2.6.x 버전 이상에서는 nf_conntrack 이라는 명칭으로 바뀌었다고 합니다.

nf_conntrack 위치는 /proc/sys/net/nf_conntrack_max  입니다.

여기서는 CentOS 5.x 기준으로 2.4 버전을 사용하고 있어 ip_conntrack 기준으로 설명하겠습니다.


conntrack 모듈의 테이블을 구성하는 값은 2가지 입니다.

– CONNTRACK_MAX : 커널 메모리 상에서 netfilter가 동시에 처리하는 세션의 수

– HASHSIZE : CONTRACK 엔트리의 리스트를 저장할 해쉬 테이블의 사이즈


kernel: ip_conntrack version 2.4 (8192 buckets, 65536 max) – 228 bytes per conntrack

netfilter의 conntrack 하나당 228 byte가 필요하며ㅡ 최대 65536개 만큼 처리가 가능하다는 문구 입니다.


ip_conntrack : table full, dropping packet.

위 오류 메시지는 ip_conntrack 모듈의 테이블을 모두 사용하여 나머지 패킷을 drop시킬 때 발생합니다.

보통 이런 메시지가 나올때는 터미널접속이 안되므로 콘솔에서 아래의 명령어들을 사용하여 원인 분석 및 처리합니다.


1. 서버의 conntrack 제한 값 확인

[root@moon]# cat /proc/sys/net/ipv4/ip_conntrack_max


2-1. iptables 의 체인별 패킷 및 바이트 정보 확인

[root@moon]# iptables -vL

or

[root@moon]# iptables -vnL



2-2. 모든 체인의 패킷과 바이트 카운터값 초기화

[root@moon]# iptables -Z



옵션 설명

-v : 정보를 패킷과 바이트까지 보여줍니다.

-n : 문자정보를 숫자정보로 변경하여 보여줍니다. (IP주소, 포트)

-L : 전체 체인의 패킷을 숫자형태로 보여줍니다.



3-1. conntrack 테이블에 저장 된 정보 확인

[root@moon]# cat /proc/net/ip_conntrack

> 이용하여 파일로 저장 후 엑셀로 불러 분석하는게 편할듯..



3-2. 현재 사용하는 세션 수 확인

[root@moon]# wc -l /proc/net/ip_conntrack

or

[root@moon]# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count



3-3. 현재 사용하는 세션 수 실시간 확인 (watch 사용)

[root@moon]# watch -d cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count

or

[root@moon]# watch -n1 “cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count”



응용

상태별 확인 : [root@moon]# watch -d -n3 ‘grep ^tcp /proc/net/ip_conntrack | awk ‘”‘”‘{print $4}'”‘”‘ | sort | uniq -c’

출발지별 확인 : awk ‘”‘”‘{print $5}'”‘”‘

도착지별 확인 : awk ‘”‘”‘{print $6}'”‘”‘

모든 정보 확인 : awk ‘”‘”‘{print $숫자}'”‘”‘ 삭제



4. conntrack의 세션 처리량 늘리기 (개인적으로 비추천. 서버에 무리가 발생하여 다른 문제가 발생될 수 있음)

100000으로 변경

[root@moon]# echo 100000 > /proc/sys/net/ipv4/ip_conntrack_max

제한없음으로 변경

[root@moon]# echo 0 > /proc/sys/net/ipv4/ip_conntrack_max


  • Share:

You Might Also Like

0 개의 댓글