이를 사용하여 열린 모든 포트의 전체 목록을 표시하는 쉬운 방법이 있습니까 firewalld
?
명령에 대해 알고 있지만 firewall-cmd --list-all
해당 서비스가 열린 것으로 정의된 포트가 아닌 서비스 이름만 표시합니다.
예를 들어:
[root@myserver log]# firewall-cmd --list-all
dmz (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: ssh squid my-icap
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
각 서비스의 정의 파일에 가서 어떤 포트가 열려 있는 것으로 정의되어 있는지 확인할 수 있다는 것을 알고 있지만 이를 수행하려면 한 줄 방법이 있어야 하는데 누락된 것 같습니다.
나는 찾고 있지 않습니다 netstat
: 이것은 포트에서 무언가가 수신 대기 중인지 알려줍니다. 이는 다른 호스트에서 포트에 액세스할 수 있는지 여부와는 다른 질문입니다.
답변1
나는 또한 이것을 찾고 있었고 현재 나는 이 bash oneliner를 생각해 냈습니다.
for s in $(firewall-cmd --list-services); do firewall-cmd --permanent --service "$s" --get-ports; done;
일반 포트의 경우 다음을 사용하십시오.
$ firewall-cmd --list-ports
그렇지 않으면
$ firewall-cmd --list-all
답변2
이 줄은 직접 인터페이스 서비스와 풍부한 언어 규칙 모두에 적용되어야 하며 포트 번호, 프로토콜 등과 함께 서비스 이름을 표시해야 합니다.
firewall-cmd --list-all | egrep "services|service.*accept" | sed -e 's/.*="\(.*\)".*/\1/g' | sed -e 's/\s\+services:\s\+//g' | tr ' ' '\n' | xargs -I '{}' firewall-cmd --info-service={}
임시로 서비스의 포트 정의를 조회한다는 사실을 쉽게 기억하고 싶다면 다음을 수행하세요.
방화벽-cmd --정보-서비스=서비스 이름