옵션 1

옵션 1

Linux 기반 라우터(Debian 배포판)에 많은 NIC가 있다고 상상해 보십시오. 특정 NIC에 대해 열린 연결 수를 인쇄하는 방법은 무엇입니까? (해결 방법은 허용되는 답변입니다)

답변1

옵션 1

netstat | awk '$4 ~ /xxx.xxx.xxx.xxx/ { ++count } END { print count }'

어디xxx.xxx.xxx.xxxNIC의 IP 주소입니다.

  • netstat열려있는 모든 연결을 찾습니다
  • awkNIC의 IP 주소와 일치합니다.
    • $4awk우리가 4번째 열을 보게 될 것이라고 말해줍니다
    • { ++count } END { print count }awk일치하는 항목을 찾을 때마다 카운트하도록 지시합니다 . 완료되면 최종 개수를 인쇄합니다.

옵션 2

netstat | grep xxx.xxx.xxx.xxx -c

어디xxx.xxx.xxx.xxxNIC의 IP 주소입니다.

  • netstat열려있는 모든 연결을 찾습니다
  • grepNIC의 IP 주소와 일치합니다.
    • -cgrep인쇄하는 대신 일치하는 항목의 수를 세도록 요청합니다 .

옵션 1은 다른 곳이 아닌 로컬 주소 필드에서만 일치하는 이점이 있습니다. 옵션 2는 원격 주소가 로컬 호스트를 가리키는 열린 연결이 있는 경우 두 배로 계산될 수 있습니다.

답변2

당신은 할 수 없습니다. 기본 IP 라우터는 IP 계층만 확인하면서 상태 없이 데이터그램을 전달합니다. 그들은 엔드포인트가 아닌 연결에 대해서는 아무 것도 모릅니다.

SPI 방화벽이나 NAT 게이트웨이는 다른 이야기입니다.

답변3

라우터는 연결을 추적하지 않습니다. 방화벽에 문의해야 합니다.

Linux 방화벽은 상태 저장 "연결" 추적을 지원하지만 기본적으로 반드시 활성화되어 있는 것은 아닙니다.만약에당신은 다음 중 하나를 가지고 있습니다 :

  • -m state또는를 -m conntrack사용 하는 iptables 규칙
  • 또는 다음을 사용하는 nftables 규칙 ct state,
  • 또는 iptables/nftables NAT 테이블의 모든 규칙(예: nat/prerouting 체인)

그러면 방화벽의 conntrack 시스템이 활성화되고 다음을 사용하여 "상태 테이블"을 볼 수 있습니다.

conntrack -L

그러나 이 작업은 라우터가 아닌 방화벽에 의해 수행되므로 상태는 특정 인터페이스와 관계가 없으며 L3/L4 주소 지정에만 관심이 있습니다.

관련 정보