방화벽이 전달한 포트에 대한 연결을 어떻게 나열합니까?

방화벽이 전달한 포트에 대한 연결을 어떻게 나열합니까?

Firewalld를 사용하여 포트를 전달했는데 모든 것이 잘 작동합니다. 그러나 "netstat" 및 "ss" 명령은 Firewalld에 의해 열린 포트나 연결을 표시하지 않습니다. 전달은 커널 수준에서 처리되므로 "netstat" 및 "ss"에는 연결 또는 포트 상태가 표시되지 않습니다. "nmap"에 의존하지 않고 연결을 나열하고 포트가 열려 있는지 확인하는 방법을 알고 싶습니다. 설명해 주시면 감사하겠습니다.

답변1

일반적인 네트워크 스택 관점에서 볼 때 관련된 로컬 연결이 없으므로 연결된 소켓이 없으며(따라서 ss아무것도 보고되지 않음) 경로에는 연결된 상태가 필요하지 않으므로 알 필요도 없습니다.

그러나 NAT를 수행하려면 모든 후속 패킷이 동일한 변환("변환되지 않은" 응답 패킷 포함)을 얻도록 이러한 상태를 기억해야 합니다. 이는 다음으로 인해 발생합니다.웹 필터그리고 그것의연결하다그러한 연결 상태를 추적하는 기능을 담당하는 시설입니다.연결하다의 일부입니다웹 필터쌍방이 사용하는 시설입니다iptables그리고nftables: 어떤 백엔드를 사용하든 관계 없음방화벽NAT는 항상 추적됩니다.연결하다.

이 명령(일반적으로 대부분의 Linux 배포판에서 패키지와 함께 제공됨 conntrack)은 쿼리(커널 메모리)를 수행할 수 있습니다.conntrack-toolsconntrack연결하다테이블. 충분한 필터를 사용하세요:--dst-nat, DNAT로 변환된 연결(응답 소스가 쿼리 대상과 다른 항목)만 표시됩니다.

현재 사용 중인 추적 연결을 모두 표시합니다(다음으로 실행).뿌리):

conntrack -L --dst-nat

상태 변경에 대한 이벤트를 모니터링하려면 다음을 수행하세요.

conntrack -E --dst-nat

이 명령은 그러한 변환을 생성하는 규칙 자체가 아니기 때문에 표시할 수 없습니다.연결하다상태이지만 해당 상태의 향후 동작을 정의합니다. 이러한 규칙은 NAT 후크된 체인의 방화벽 규칙의 일부입니다. ~에 따르면방화벽백엔드(iptables또는nftables), 기본 설정에서 이 명령을 실행한 결과:

firewall-cmd --add-forward-port=port=5555:proto=tcp:toport=6666:toaddr=10.3.3.2

볼 수 있다

  • 그리고iptablesNAT 테이블의 체인 백엔드:

    # iptables -t nat -S | grep -w 5555
    -A PRE_public_allow -p tcp -m tcp --dport 5555 -j DNAT --to-destination 10.3.3.2:6666
    
  • 그리고nftables백엔드에도 비슷한 이름의 체인이 있습니다.INET 방화벽nat 유형에 연결된 기본 체인에서 호출되는 테이블:

    # nft list chain inet firewalld nat_PRE_public_allow
    table inet firewalld {
      chain nat_PRE_public_allow {
          meta nfproto ipv4 tcp dport 5555 dnat ip to 10.3.3.2:6666
      }
    }
    

실제로 "켜져" 있다는 사실은 확인하기가 더 어려울 것입니다. 믿어야 합니다.방화벽이에 필요한 작업이 완료되었습니다. 현재 구현됨방화벽쿼리를 통해 일반적인 방식으로 이 작업을 수행합니다.연결하다시설:

  • 그리고iptables백엔드에서는 DROP 규칙이 있는 각 내장 체인의 허용된 상태에 DNAT 상태를 추가하여 이를 수행합니다. 따라서 이는 (다른 허용된 상태와 함께) 다음과 같이 나타납니다.

    -A <built-in> -m conntrack --ctstate RELATED,ESTABLISHED,DNAT -j ACCEPT
    
  • 보통nftables백엔드에서는 다음을 포함하는 모든 기본 체인을 사용하여 수행됩니다.줄이다규칙:

    ct status dnat accept
    

두 경우 모두 동일한 효과를 갖습니다. 즉, 패킷(다른 가능성 중에서)이 DNAT 변환을 겪는 경우(이는 규칙 세트의 결과로만 발생할 수 있으므로방화벽) 그리고 그것을 받아들입니다. 어떤 특정 포트가 허용되는지 다시 반복할 필요가 없습니다.

장로방화벽버전이 사용되었을 수 있습니다.방화벽 태그바꾸다연결하다상태는 동일한 일을 하는 메모리 역할을 합니다.

관련 정보