어느 프로세스가 포트를 듣고 있는지 보기
듣고 있는 TCP 소켓을 프로세스와 함께 보고, 포트 하나로 좁히고, firewalld 가 그 포트를 통과시키는지 확인합니다.
요즘 배포판에서는 ss 가 netstat 을 대신하며 기본으로 깔려 있습니다. 1~2단계 출력은 Ubuntu 24.04 서버에서 돌린 실제 결과이고(호스트에 따라 프로세스는 다릅니다), 3단계 firewalld 는 공식 문서를 따랐습니다.
[1] 듣고 있는 TCP 소켓을 그 프로세스와 함께 봅니다. -t TCP, -l 듣는 소켓, -n 숫자 그대로, -p 프로세스. 프로세스 칸은 root 로 돌려야 다 나옵니다.
# ss -tlnpState Recv-Q Send-Q Local Address:Port Peer Address:Port ProcessLISTEN 0 4096 127.0.0.54:53 0.0.0.0:* users:(("systemd-resolve",pid=668,fd=17))LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=668,fd=15))LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=883,fd=3))LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=883,fd=4))[2] 포트 하나만 봅니다.
# ss -tlnp 'sport = :22'State Recv-Q Send-Q Local Address:Port Peer Address:Port ProcessLISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=883,fd=3))LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=883,fd=4))[3] 프로세스가 듣고 있어도 방화벽이 막을 수 있습니다. firewalld 가 기본 존에서 허용한 서비스를 봅니다. 공식 문서의 예시 출력은 아래와 같습니다.
# firewall-cmd --list-servicesssh dhcpv6-client[4] 서비스를 추가합니다. --permanent 변경은 reload 해야 적용되고, reload 는 이미 연결된 서비스를 끊지 않습니다.
# firewall-cmd --permanent --add-service=http# firewall-cmd --reload