예를 들어 tomcat
(PID는 4739
) 은 클라이언트 ()로부터 요청이 수신되었기 postgress
때문에 데이터베이스에서 데이터를 검색하기 위해 (다른 서버)에 대한 연결을 시작합니다 . 여기서는 임의의 TCP를 사용하여 연결합니다 . 이제 tomcat으로 생성된 이러한 콘텐츠를 얻을 수 있는 방법이 있습니까 ?tomcat
curl 192.168.1.12:8088/get
tomcat
source port
postgress
source ports
PID
사용했는데 연결이 netstat -tp
안되네요 PID
. PID
내가 사용한 것에서 만 l - Listening
좋아요를 받았습니다 netstat -tlp
. PID
소켓에서 읽은 /proc/PID/fd
다음 에 연결하려고 시도했지만 /proc/net/tcp
아무 것도 표시되지 않았습니다 /proc/net/tcp
.
노트:토폴로지는 다음과 같습니다.
My requests(server1)
<---------> tomcat(server2)
<--------->postgress(server2)
업데이트 1
netstat -tepn
산출
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp6 0 1 172.25.30.21:36598 xx.xx.xx.91:4343 SYN_SENT 0 42955126 9661/java
tcp6 0 0 172.25.30.21:38340 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:38064 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:38282 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:37520 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:38286 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:37654 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:37906 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:38152 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:38124 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:37412 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:37374 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:38126 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:38252 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:37224 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:37800 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:37780 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:38274 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:37244 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:37880 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:38230 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:38118 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:37496 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:1099 172.25.30.21:47496 ESTABLISHED 0 42954824 4738/java
tcp6 0 0 172.25.30.21:37474 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:38200 172.25.30.12:5432 TIME_WAIT 0 0 -
tcp6 0 0 172.25.30.21:38102 172.25.30.12:5432 TIME_WAIT 0 0 -
PID
grep
출력 편집
veeru@localhost:~/veeru# netstat -tepn | grep 4738
tcp6 0 0 127.0.1.1:41095 127.0.0.1:45180 ESTABLISHED 0 42960213 4738/java
tcp6 0 0 172.25.30.21:1099 172.25.30.21:49984 ESTABLISHED 0 42963153 4738/java
답변1
netstat -tep | grep <pid of server2>
그러면 postgress에 연결할 때 server2가 사용하는 소스 포트가 제공됩니다.
답변2
리눅스에서
netstat -atp
ss -atp
lsof -i tcp
TCP 소켓 목록과 netcat
fd가 열려 있는 프로세스의 pid(및 그 이외의 fd)를 제공합니다(자신에게 속하지 않은 프로세스에 대한 정보를 얻으려면 수퍼유저 권한이 필요합니다). 그들은 공개 FD를 가지고 있습니다.
프로세스가 fd-소켓 연결 또는 shutdown() 연결을 닫은 후에는 쓰기 방향에서만이라도 더 이상 이 정보를 얻을 수 없습니다. 또는 의 출력에서 일부 상태의 소켓을 계속 TIME_WAIT
볼 수 있지만 내가 아는 한 파일 설명자를 사용하여 프로세스로 돌아갈 수 있는 방법은 없습니다.netstat
ss
이 경우 가장 좋은 옵션은 auditctl
감사 로그 connect()
시스템 호출 등을 사용하여 발생하는 모든 TCP 연결을 기록하는 것입니다.