• 흐림동두천 -2.1℃
  • 맑음강릉 3.8℃
  • 구름많음서울 -0.3℃
  • 맑음대전 -0.3℃
  • 맑음대구 1.2℃
  • 구름조금울산 5.0℃
  • 맑음광주 1.7℃
  • 맑음부산 5.9℃
  • 구름많음고창 -0.3℃
  • 구름많음제주 6.6℃
  • 구름많음강화 0.2℃
  • 맑음보은 -4.2℃
  • 맑음금산 -2.0℃
  • 구름조금강진군 -0.2℃
  • 구름조금경주시 3.6℃
  • 맑음거제 3.1℃
기상청 제공

ip_conntrack: table full


kernel: ip_conntrack: table full, dropping packet

ip_conntrack 모듈에서 연결 추적을 기록하는 테이블의 객수 제한때문에 생긴다.
ip_conntrack table 가득차서 발생.

# ip_conntrack table 확인방법
cat /proc/net/ip_conntrack

해결하기
==================================================================

# 계산하기(32비트)
CONTRACK_MAX = RAMSIZE(단위: byte) / 16384 / ( x / 32)
HASHSIZE = CONNTRAK_MAX / 8 = RAMSIZE(단위: byte) / 131072 / (x / 32)
CONTRACK_MAX = 2048M * 1024 * 1024 / 16384 * 32 =  131072 * 32 = 4194304
HASHSIZE = CONNTRAK_MAX / 8 = 4194304 / 8 = 524288,

# 계산하기(64비트)
CONTRACK_MAX = RAMSIZE(단위: byte) / 16384 / ( x / 64)
HASHSIZE = CONNTRAK_MAX / 8 = RAMSIZE(단위: byte) / 131072 / (x / 32)
CONTRACK_MAX = 2048M * 1024 * 1024 / 16384 * 64 =  131072 * 64 = 8388608
HASHSIZE = CONNTRAK_MAX / 8 = 8388608 / 8 = 1048576

예)
echo "65536" /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo "8192" > /sys/module/ip_conntrack/parameters/hashsize

echo "131072" > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo "16384" > /sys/module/ip_conntrack/parameters/hashsize

echo "262144" > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo "32768" > /sys/module/ip_conntrack/parameters/hashsize