서로 다른 가상 머신(수백 개) 간의 트래픽을 이해하고 iptables 로깅을 사용하여 새 연결(인바운드 및 아웃바운드) 로그를 생성할 계획을 세워야 합니다. 스크립트는 로그를 구문 분석하고 소스/대상 IP 및 포트를 가져올 수 있습니다. 하지만 가능한 모든 연결에 대한 전체 그림을 얻으려면 며칠(아마 일주일) 동안 기록해야 합니다. 계획은 매시간 로그 파일을 롤링하는 것이지만, 이 작업은 라이브 서버에서 수행되어야 하기 때문에 성능이 문제입니다. iptables 로깅으로 인해 상당한 오버헤드가 추가됩니까? 저는 Linux를 처음 사용하며 귀하의 의견에 진심으로 감사드립니다.
답변1
부하는 주로 기록해야 하는 연결 수에 따라 달라집니다. 연결당 수는 상당히 적지만, 많은 수의 연결을 처리해야 하는 서버가 있는 경우 증가할 수 있습니다.
iptables
로그 메시지를 커널 메시지 버퍼(명령을 사용하여 볼 수 있음 dmesg
)에 넣습니다. 나머지 작업은 일반적으로 syslog 데몬에 의해 처리됩니다.
syslogd
레거시 / 쌍 의 경우 klogd
로그 파일 및/또는 원격 로그 대상(구성된 대로)으로 메시지를 보내는 데 필요한 양의 시스템 리소스를 소비합니다.
그러나 많은 최신 배포판에서는 rsyslogd
메시지 속도를 제한하는 것이 가능합니다. 그리고 많은 배포판에서 iptables 로깅에 대한 이 제한 수준은 매우 낮게 설정되어 있습니다. 기본 속도는 오래된 저전력 서버를 보호하기 위해 설계된 것으로 보이므로 제한을 안전하게 늘릴 수 있지만 그렇게 한다는 것을 기억해야 합니다.
Java 소프트웨어를 실행하는 경우 로컬 통신을 위해 많은 네트워크 소켓을 사용하는 경향이 있습니다. 소스에 기록해야 하는 데이터 양을 최소화하려면 이를 기록하지 않도록 로깅 규칙을 신중하게 설정해야 할 수도 있습니다. 마찬가지로, 이미 알고 있거나 관심을 두지 않는 연결이 많다는 것을 알고 있는 경우 해당 연결을 로깅에서 제외하여 총 데이터 양을 관리 가능하게 유지할 수 있습니다.
가능하다면 연결당 하나의 로그 메시지만 생성되도록 하십시오. 기록모두들어오고 나가는 패킷은 확실히 상당한 추가 로드를 생성합니다.
또한 일주일 동안 녹화한 후에 알아야 할 모든 것을 알게 될 것이라고 가정하지 마십시오. 사이트에 따라 월말 또는 매 분기에만 발생하는 일부 연결이 있을 수 있습니다.