
나는 얼마나 많은 것을 알고 싶습니다 CPU
/ memory
나의 현재 iptables
규칙이 소비하는 것
ps
및 를 살펴보았지만 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
규칙에서 사용하지 않더라도 이미 메모리를 소비한다는 점에 유의하세요 .
Kworker특히 인터럽트, 타이머, I/O 등이 있는 경우 커널에 대한 실제 처리의 대부분을 수행하는 커널 작업자 스레드에 대한 자리 표시자 프로세스입니다. 이는 일반적으로 할당된 "시스템" 시간의 대부분에 해당합니다. 실행중인 프로세스에. 어떤 방식으로든 시스템에서 안전하게 제거할 수 있는 것이 아니며 데스크톱 응용 프로그램과도 전혀 관련이 없습니다(이러한 프로그램이 시스템 호출을 수행하여 커널이 작업을 수행해야 하는 경우는 제외). 또한 kworker
"작업"(시스템 호출 처리)을 수행하는 Linux 커널 프로세스를 의미합니다. 프로세스 목록에 여러 개를 가질 수 있습니다. kworker/0:1
첫 번째 CPU 코어에 있는 것, kworker/1:1
두 번째 CPU 코어에 있는 것 등. 모든 커널의 프로세스는 다음의 자식으로 시작됩니다.kthreadd커널 공간에서 프로세스를 수행합니다.
상위 프로세스:프로세스 ID는 kthreadd
2이고 이 커널 작업자는 다음과 같이 나열될 수 있습니다.
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.