lsof를 사용하여 들어오는 TCP 연결을 식별하는 방법은 무엇입니까?

lsof를 사용하여 들어오는 TCP 연결을 식별하는 방법은 무엇입니까?

내 서버가 원격 서버와 연결을 설정했는지 또는 원격 서버가 내 서버에 액세스하려고 하는지 알고 싶습니다. 출력을 읽고 lsof다음 정보를 얻으려고 합니다 .

lsof -i TCP:25 
 USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
master   2657    root   12u  IPv4     8086      0t0  TCP *:smtp (LISTEN)
smtpd   12950 postfix    6u  IPv4     8086      0t0  TCP *:smtp (LISTEN)
smtpd   12950 postfix    9u  IPv4 35762406      0t0  TCP hostname:smtp->spe.cif.ic.IP:55277 (ESTABLISHED)
smtp    13007 postfix   13u  IPv4 35762309      0t0  TCP hostname:34434->fake.VVVVV.fr:smtp (ESTABLISHED)
smtpd   14188 postfix    6u  IPv4     8086      0t0  TCP *:smtp (LISTEN)
smtpd   14188 postfix    9u  IPv4 35748921      0t0  TCP hostname:smtp->XX.XX.XX.XX:55912 (ESTABLISHED)
smtpd   14897 postfix    6u  IPv4     8086      0t0  TCP *:smtp (LISTEN)

spe.cif.ic.IP이 메시지가 내 서버가 연결을 시도하고 있다는 뜻인지, 아니면 그 반대인지 궁금합니다 .
이 플래그가 ->관련되어 있습니까? 아니면 다른 명령을 사용해야 합니까?

답변1

단서는 포트 번호에 있는 것 같습니다. 이 두 항목을 얻으세요.

smtpd   12950 postfix    9u  IPv4 35762406      0t0  TCP hostname:smtp->spe.cif.ic.IP:55277 (ESTABLISHED)
smtp    13007 postfix   13u  IPv4 35762309      0t0  TCP hostname:34434->fake.VVVVV.fr:smtp (ESTABLISHED)

smtpd는 smtp(25) 포트의 고급 포트로부터 연결을 수신하고 smtp는 로컬 고급 포트를 사용하여 원격 포트 smtp(25)에 연결합니다.

그러니까 ->그 뜻은연결됨

답변2

lsof적어도 Linux에서는 정보를 얻을 수 없는 곳에서 목록을 가져오기 때문에 어느 쪽에서 연결을 시작했는지 알 수 있는 방법이 없습니다 . /proc/net/tcp첫 번째 주소는 항상 다음을 참조합니다.현지의끝점.

ss연결 정보를 검색하기 위해 다른 커널 API를 사용하는 이 유틸리티의 최신 버전은 -e지침을 제공하지만 안타깝게도 TCP 연결에서는 작동하지 않습니다.

~처럼@XTian이 말했습니다., TCP/SCTP/UDP를 사용하면 일반적으로 연결 개시자가 높은 포트를 사용하고 대상은 일반적으로 잘 알려진 낮은 포트이기 때문에 어느 것인지 추측할 수 있습니다. 그러나 보장은 없습니다. 기계를 사용할 수 있는지 확인하십시오.듣다동일한 포트에 있는 소켓을 사용하면 해당 방향에 대한 아이디어도 얻을 수 있습니다. 예를 들어, 귀하의 경우 port 에서는 수신 대기 smtp/25하지만 port 에서는 수신 대기하지 않는 프로세스가 있을 수 있습니다 unknown/34434. fake.VVVVV.fr특히 소스 포트 25/smtp를 사용하여 컴퓨터의 포트 34434에 대한 연결을 시작했을 가능성은 거의 없습니다 (가능성은 낮지만 완전히 가능함).

신뢰성을 높이기 위해 연결 추적기를 쿼리할 수 있습니다.

시스템의 방화벽 연결 추적기는 연결을 시작한 끝(또는 UDP와 같은 비연결 전송 프로토콜에 대해 첫 번째 패킷을 보낸 끝)을 추적합니다. conntrack명령줄 유틸리티나 top 과 같은 명령을 사용하여 연결 추적 테이블을 쿼리 할 수 있습니다 iptstate.

여기서 각 줄의 첫 번째 주소는 연결이 시작된 주소가 됩니다.

여기에는 추적된 모든 연결이 포함되므로 시스템(예: 라우터)을 통해 전달된 연결도 포함될 수 있습니다.

관련 정보