Linux 커널 프로세스:

Linux 커널 프로세스:

현재 규칙이 얼마나 소비하는지 알고 싶습니다 CPU.memoryiptables

psand를 보려고 했지만 htop커널 스레드가 표시되어도 iptables.

나는 conntrack다음과 같은 모듈별 설정을 가진 모듈을 사용하고 있습니다: xt_recent.ip_pkt_list_tot=1 xt_recent.ip_list_tot=4096. 4096꽤 높은 것 같아요 . 그런 다음 iptables 구성에서 두 종류의 차단 목록을 사용 합니다 BLACKLIST.PORTSCAN

-A INPUT  -i eth0 -p icmp             -j ACCEPT
-A INPUT  -i eth0 -s  1.2.3.4/32      -j ACCEPT
-A INPUT  -i eth0 -m  recent --rsource --name BLACKLIST --seconds 14400 --update -j DROP
-A INPUT  -i eth0 -p  tcp  -m tcp --dport 25 -j ACCEPT

-A INPUT  -i eth0 -m  recent   --rsource --name PORTSCAN --seconds 3600 --update -j DROP
-A INPUT -i eth0  -p  udp  -m udp --dport 5060 -j ACCEPT
-A INPUT -i eth0  -p  tcp  -m tcp --dport 5061 -j ACCEPT
-A INPUT -i eth0  -p  udp  -m udp --dport 5062:5100 -j ACCEPT

-A INPUT  -i eth0 -m  conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT  -i eth0 -m  recent  --rsource --name PORTSCAN --set -j DROP

-A INPUT  -i eth0 -j DROP
-A INPUT  -j DROP

내 서버에 네트워크 문제가 있고 내 iptables규칙이 작동하는 것 같습니다. 예를 들어:

  • ssh회의는 계속 취소됩니다.
  • Ping에서는 패킷 손실률이 0.2%라고 보고합니다.
  • 허용된 포트에 연결하면, 즉 프로젝트가 많을 때 비어 있을 때보다 시간 5060이 훨씬 오래 걸립니다.PORTSCAN

  • 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

  • iptables 규칙을 일부 최적화할 수 있나요?
  • 내 CPU 사용량을 어떻게 확인하나요 iptables?

답변1

Linux 커널 프로세스:

많은 커널 기능(예: Iptables)은 커널 수준에서 kworker 작업으로 처리되며 작업 관리자(예: top)에 표시됩니다. 설명에서 언급했듯이 규칙을 로드한 경우와 로드하지 않은 경우의 총 리소스 사용량을 비교하여 CPU 및 메모리 사용량을 계산할 수 있습니다 iptables. ipset규칙에서 사용하지 않더라도 이미 메모리를 소모한다는 점에 유의하세요 .

코보크특히 인터럽트, 타이머, I/O 등이 있는 경우 커널의 실제 처리 대부분을 수행하는 커널 작업자 스레드에 대한 자리 표시자 프로세스입니다. 이는 일반적으로 실행 중인 프로세스에 할당된 "시스템" 시간의 대부분에 해당합니다. 어떤 식으로든 시스템에서 안전하게 제거할 수 있는 것이 아니며 데스크톱 응용 프로그램과 전혀 관련이 없습니다(해당 프로그램이 시스템 호출을 수행하여 커널이 작업을 수행해야 할 경우 제외). 또한 kworkerLinux 커널 프로세스가 "작업"(시스템 호출 처리)을 수행하고 있음을 의미합니다. 프로세스 목록에는 여러 프로세스가 있을 수 있습니다. kworker/0:1첫 번째 CPU 코어에 하나, kworker/1:1두 번째 CPU 코어에 하나 등이 있습니다. 모든 커널 프로세스는 다음의 하위 프로세스로 시작됩니다.커널 공간의 프로세스.

상위 프로세스:프로세스 ID는 kthreadd2이고 이 커널 작업자 프로세스는 다음과 같이 나열될 수 있습니다.

pstree 2 -l -p 
# or
ps --ppid 2 -u 
# or
ps --ppid 2 -o pid,user,%mem,command,time,etime,cpu,pcpu,nice,pcpu,vsz 

마지막 것은 bash + cron 스크립트와 함께 사용하여 변경 사항을 관찰할 수 있습니다. 또는 직접적인 타이밍 분석을 위해 ( )를 perf사용할 수 있습니다 .apt-get install linux-tools-common linux-tools-3.11.0-15-generic

# Record 10 seconds of backtraces on all your CPUs:
sudo perf record -g -a sleep 10

# Analyse your recording:
sudo perf report

다음 명령을 사용하여 호출 그래프를 찾아보세요.,,,그리고 Enter.


링크:1,2,,4,5,6.

관련 정보