TCP 포트 53, LinuxMint Victoria에서 수신 대기하는 이상한 초기화 프로세스

TCP 포트 53, LinuxMint Victoria에서 수신 대기하는 이상한 초기화 프로세스

실행하면 netstat -nptl다음과 같은 이상한 결과가 나타납니다.

tcp        0      0 127.0.2.1:53            0.0.0.0:*               LISTEN      1/init

이는 dnscrypt-proxyDoH 서비스의 기본 구성입니다.

ps uww 1
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.1  0.0 166580 11936 ?        Ss   12:15   0:01 /sbin/init splash

왜 PID 1이 지금은 의미가 없는지 궁금합니다.

답변1

Linux에서는 더 많은 정보를 제공하므로 using을 netstatusing으로 바꿔야 합니다 . ss이 경우 다음을 제공합니다.모두소켓을 공유하는 프로세스는 netstat첫 번째 프로세스와 동시에 중지됩니다. commname( systemd) 대신 cmdname( ) 을 제공하는 등 미묘한 차이점도 있습니다 init. 이것은 Debian 12이지만 모든 systemd 기반 Linux 시스템은 비슷합니다.

# netstat -tnlp | awk 'NR <=2 || /127.0.2.1:/'
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.2.1:53            0.0.0.0:*               LISTEN      1/init              
# ss -nptl src 127.0.2.1
State   Recv-Q  Send-Q   Local Address:Port     Peer Address:Port  Process  
LISTEN  0       4096         127.0.2.1:53            0.0.0.0:*      users:(("dnscrypt-proxy",pid=6245,fd=8),("systemd",pid=1,fd=49))

둘 다 동일한 소켓을 systemd공유하는 것을 볼 수 있습니다 .dnscrypt-proxy

왜? 왜냐면 dnscrypt-proxy실행 중이기는 하지만체계~의소켓 활성화: 유사한 메커니즘인트라넷그러나 데몬이 실제로 실행되기 전에 소켓 수신 대기를 허용하여(구성된 경우) 데몬이 첫 번째 호출에서 시작되도록 준비하도록 개선되었습니다. 언제체계 서비스 구성관련이 있습니다체계 소켓 구성(여기서는 충분한 종속성이 있음 Requires=dnscrypt-proxy.socket) 이는 소켓 활성화를 사용하고 있음을 의미합니다.

# systemctl status dnscrypt-proxy.socket 
* dnscrypt-proxy.socket - dnscrypt-proxy listening socket
     Loaded: loaded (/lib/systemd/system/dnscrypt-proxy.socket; enabled; preset: enabled)
     Active: active (running) since Tue 2024-01-09 18:16:11 UTC; 23min ago
   Triggers: * dnscrypt-proxy.service
       Docs: https://github.com/DNSCrypt/dnscrypt-proxy/wiki
     Listen: 127.0.2.1:53 (Stream)
             127.0.2.1:53 (Datagram)
      Tasks: 0 (limit: 18402)
     Memory: 12.0K
        CPU: 1ms
     CGroup: /system.slice/dnscrypt-proxy.socket

[...]
# systemctl status dnscrypt-proxy.service
* dnscrypt-proxy.service - DNSCrypt client proxy
     Loaded: loaded (/lib/systemd/system/dnscrypt-proxy.service; enabled; preset: enabled)
     Active: active (running) since Tue 2024-01-09 18:38:54 UTC; 1min 20s ago
TriggeredBy: * dnscrypt-proxy.socket
       Docs: https://github.com/DNSCrypt/dnscrypt-proxy/wiki
   Main PID: 6245 (dnscrypt-proxy)
      Tasks: 12 (limit: 18402)
     Memory: 10.6M
        CPU: 60ms
     CGroup: /system.slice/dnscrypt-proxy.service
             `-6245 /usr/sbin/dnscrypt-proxy -config /etc/dnscrypt-proxy/dnscrypt-proxy.toml

[...]

소켓 생성은 해당 섹션과 연관된 섹션을 systemd통해 직접 처리되며 청취 소켓은 상속됩니다 (이 메서드를 알아야 함)..socket.servicednscrypt-proxy

이 접근 방식에는 여러 가지 장점이 있습니다. 적어도 다음 두 가지(다른 것들은소켓 활성화링크):

  • 데몬은 시작할 때에도 권한 있는 포트를 열기 위한 권한으로 실행할 필요가 없습니다.
  • 데몬은 일정 기간 동안 활동이 없으면 중지하여 시스템 리소스를 확보할 수 있습니다.체계새로운 쿼리가 수신되면 연결을 거부하지 않고 다시 시작됩니다.

관련 정보