เรียนรู้ nf_conntrack อธิบายค่าต่างๆ กัน

ในตัวลีนุกซ์ มีค่า default เอาไว้อยู่แล้ว แต่ อยากจะปรับแต่ง เพื่อให้ได้ มีประสิทธิภาพทำอย่างไร

ภายใน netfilter

 

/proc/sys/net/netfilter/nf_conntrack_* Variables:

nf_conntrack_acct - BOOLEAN
	0 - disabled (default)
	not 0 - enabled

	Enable connection tracking flow accounting. 64-bit byte and packet
	counters per flow are added.
ตั้งเป็น 1 เพื่อ เปิดรับ 64 bit ด้วยครับ
nf_conntrack_buckets - INTEGER
	Size of hash table. If not specified as parameter during module
	loading, the default size is calculated by dividing total memory
	by 16384 to determine the number of buckets but the hash table will
	never have fewer than 32 and limited to 16384 buckets. For systems
	with more than 4GB of memory it will be 65536 buckets.
	This sysctl is only writeable in the initial net namespace.
เดี่ยวนี้ แรม มากกว่า  หรือ เท่ากับ 4 เป็นอย่างต่ำ แนะนำ ให้เป็น 65536 เลยครับผม 
nf_conntrack_checksum - BOOLEAN
	0 - disabled
	not 0 - enabled (default)

	Verify checksum of incoming packets. Packets with bad checksums are
	in INVALID state. If this is enabled, such packets will not be
	considered for connection tracking.
ถ้าจะเอา เร็ว ก็ไม่ต้องเช็คคือ 0 ถ้า อยากจะเช็คก็เลือก 1  ผม ขอเลือก  0 ครับ เอาเร็วๆ ไว้ก่อนไม่ดีค่อยเปลี่ยนเป็น 1
nf_conntrack_count - INTEGER (read-only)
	Number of currently allocated flow entries.

nf_conntrack_events - BOOLEAN
	0 - disabled
	not 0 - enabled (default)

	If this option is enabled, the connection tracking code will
	provide userspace with connection tracking events via ctnetlink.
เปิด เป็น 1 ถ้าต้องการ ใช้ มีกิจกรรมการติด ตาม .. เอาไว้ เก็บ log file ครับ 
nf_conntrack_expect_max - INTEGER
	Maximum size of expectation table.  Default value is
	nf_conntrack_buckets / 256. Minimum is 1.
จะสัมพันธ์กับ buckets  ถ้าเป็น 65536 นำไปหาร 256 จะเท่ากับ 256  และ ค่าน้อยสุด ที่ ต้องมี คือ 1
nf_conntrack_frag6_high_thresh - INTEGER
	default 262144

	Maximum memory used to reassemble IPv6 fragments.  When
	nf_conntrack_frag6_high_thresh bytes of memory is allocated for this
	purpose, the fragment handler will toss packets until
	nf_conntrack_frag6_low_thresh is reached.

nf_conntrack_frag6_low_thresh - INTEGER
	default 196608

	See nf_conntrack_frag6_low_thresh

nf_conntrack_frag6_timeout - INTEGER (seconds)
	default 60

	Time to keep an IPv6 fragment in memory.

nf_conntrack_generic_timeout - INTEGER (seconds)
	default 600

	Default for generic timeout.  This refers to layer 4 unknown/unsupported
	protocols.

nf_conntrack_helper - BOOLEAN
	0 - disabled (default)
	not 0 - enabled

	Enable automatic conntrack helper assignment.
	If disabled it is required to set up iptables rules to assign
	helpers to connections.  See the CT target description in the
	iptables-extensions(8) man page for further information.
เป็น 1 เอาไว้ นะครับดีแล้ว 
nf_conntrack_icmp_timeout - INTEGER (seconds)
	default 30

	Default for ICMP timeout.

nf_conntrack_icmpv6_timeout - INTEGER (seconds)
	default 30

	Default for ICMP6 timeout.

nf_conntrack_log_invalid - INTEGER
	0   - disable (default)
	1   - log ICMP packets
	6   - log TCP packets
	17  - log UDP packets
	33  - log DCCP packets
	41  - log ICMPv6 packets
	136 - log UDPLITE packets
	255 - log packets of any protocol

	Log invalid packets of a type specified by value.
เอาไว้ เช็ค ได้ ถ้าเป็น 0 คือ ค่า default มัน
nf_conntrack_max - INTEGER
	Size of connection tracking table.  Default value is
	nf_conntrack_buckets value * 4.
ถ้า 65536 x 4 =  262144 เชียว หรือนี่ ... โอเค ระดับ ระบบใหญ่เลยครับ
nf_conntrack_default_on - BOOLEAN
	0 - don't register conntrack in new net namespaces
	1 - register conntrack in new net namespaces (default)

	This controls wheter newly created network namespaces have connection
	tracking enabled by default.  It will be enabled automatically
	regardless of this setting if the new net namespace requires
	connection tracking, e.g. when NAT rules are created.
	This setting is only visible in initial user namespace, it has no
	effect on existing namespaces.

nf_conntrack_tcp_be_liberal - BOOLEAN
	0 - disabled (default)
	not 0 - enabled

	Be conservative in what you do, be liberal in what you accept from others.
	If it's non-zero, we mark only out of window RST segments as INVALID.

nf_conntrack_tcp_loose - BOOLEAN
	0 - disabled
	not 0 - enabled (default)

	If it is set to zero, we disable picking up already established
	connections.

nf_conntrack_tcp_max_retrans - INTEGER
	default 3

	Maximum number of packets that can be retransmitted without
	received an (acceptable) ACK from the destination. If this number
	is reached, a shorter timer will be started.
ตั้ง แค่ 2 ก็พอ จะได้ เร็วๆ 
nf_conntrack_tcp_timeout_close - INTEGER (seconds)
	default 10
ถ้า tcp ปิด ตัวไป ให้ ข้อมูลใน conntrack หายไปใน เวลา 10 วิ
nf_conntrack_tcp_timeout_close_wait - INTEGER (seconds)
	default 60
ช่วง ขณะ รอ wait ให้ไป 60 วิ
nf_conntrack_tcp_timeout_established - INTEGER (seconds)
	default 432000 (5 days)
ตรงนี้ เหมือน เป็น cache ของ เส้นทาง ยิ่งมีค่า มาก เส้นทาง ยิ่ง เชื่อมได้ ยาว นาน ผม จะใช้แค่ 60 พอ เพราะ 5 วันมันเยอะ เกิน ไป หนัก เครื่อง  list จะเยอะมาก
nf_conntrack_tcp_timeout_fin_wait - INTEGER (seconds)
	default 120

nf_conntrack_tcp_timeout_last_ack - INTEGER (seconds)
	default 30

nf_conntrack_tcp_timeout_max_retrans - INTEGER (seconds)
	default 300

nf_conntrack_tcp_timeout_syn_recv - INTEGER (seconds)
	default 60

nf_conntrack_tcp_timeout_syn_sent - INTEGER (seconds)
	default 120

nf_conntrack_tcp_timeout_time_wait - INTEGER (seconds)
	default 120

nf_conntrack_tcp_timeout_unacknowledged - INTEGER (seconds)
	default 300

nf_conntrack_timestamp - BOOLEAN
	0 - disabled (default)
	not 0 - enabled

	Enable connection tracking flow timestamping.

nf_conntrack_udp_timeout - INTEGER (seconds)
	default 30

nf_conntrack_udp_timeout_stream2 - INTEGER (seconds)
	default 180

	This extended timeout will be used in case there is an UDP stream
	detected.

จะได้รู้กันละ ว่า มันคืออะไร ทำหน้าที่อย่าง อย่างไร ปรับแต่งอย่างไร ถึงจะดี

น่าจะมีประโชยน์ไม่มากก็ไม่น้อยนะครับ

เพิ่มเติม อันนี้ นิด นึง เก็บเอาไว้ …

# connection limits, some for connection count, some for connection speed
net.core.somaxconn = 64000
net.core.netdev_max_backlog = 524288
net.netfilter.nf_conntrack_max = 1048576
net.ipv4.tcp_max_syn_backlog = 48960
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_max_orphans = 456000
# conntrack changes, mainly for handling a ton of connections at a time
net.netfilter.nf_conntrack_tcp_timeout_established = 30
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 10
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 10
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 10
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 4
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 4
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 10
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 10
net.netfilter.nf_conntrack_tcp_timeout_max_retrans = 15
net.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 10
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_udp_timeout = 15
net.netfilter.nf_conntrack_udp_timeout_stream = 15
net.netfilter.nf_conntrack_tcp_loose = 0
    # may change above to 1 which would cause it to track less stuff
net.netfilter.nf_conntrack_tcp_max_retrans = 3
# buffers, useful for speed
net.core.rmem_default = 31457280
net.core.rmem_max = 12582912
net.core.wmem_default = 31457280
net.core.wmem_max = 12582912
net.core.optmem_max = 25165824
net.ipv4.tcp_mem = 131072 1048576 1441792
net.ipv4.tcp_rmem = 8192 87380 16777216
net.ipv4.tcp_wmem = 8192 65536 16777216
net.ipv4.udp_mem = 65536 131072 262144
net.ipv4.udp_rmem_min = 16384
net.ipv4.udp_wmem_min = 16384
# timeouts, conn count mainly, but the defaults are a bit high for most usage
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_synack_retries = 2
# settings
net.ipv4.tcp_rfc1337 = 1
net.ipv4.tcp_tw_recycle = 1  # high connection counts, and new connections per second, enable if reuse isn't good enough only
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_slow_start_after_idle = 0 # useful to not renegotiate window size too often
net.ipv4.conf.all.log_martians = 1

ปรับแต่งตามความต้องการได้

ข้อความนี้ถูกเขียนใน linux advance คั่นหน้า ลิงก์ถาวร

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *