특정 IP 주소에서 어떤 인터페이스 트래픽이 통과하는지 감지

특정 IP 주소에서 어떤 인터페이스 트래픽이 통과하는지 감지

어떤 인터페이스를 통해 IP 트래픽을 감지해야 하는 스크립트를 만들고 있습니다. 이는 아키텍처에서 IP 주소가 4개의 NIC 중 하나만 사용되지만 4개 중 어느 것이든 사용될 수 있기 때문입니다.

내가 한 수동 방법은 tcpdump를 실행하는 것이었습니다. 패킷이 보이면 그것이 인터페이스이고, 그렇지 않으면 tcpdump를 취소하고 다른 인터페이스에서 또 다른 tcpdump를 수행합니다.

저는 FreeBSD를 실행하고 있습니다.

답변1

부르다route get.

route get 192.0.2.42 | awk '$1 ~ /interface/ {print $2}'

답변2

netstat -tau프로그램에서 사용하는 로컬 주소와 포트를 표시합니다. 각 인터페이스에는 바인딩 등을 제외하고 자체 주소가 있습니다. 이것이 필요한 정보입니까?

그렇다면 스크립트에서 활용해서 grep출력하면 편합니다.cut

예: netstat -taunpe | grep firefox | awk '{print $4}' | cut -d ':' -f 1 "firefox" 설정된 연결에 사용되는 로컬 주소를 검색합니다.

답변3

*BSD에 대해서는 잘 모르겠지만 Linux에서는 route -n플래그(기본 경로로 표시된 줄을 검색할 수도 있음)와 장치 이름을 알려줍니다.

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.100.63.254   0.0.0.0         UG    0      0        0 eth0
10.100.0.0      0.0.0.0         255.255.192.0   U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

또는:

$ ip route
default via 10.100.63.254 dev eth0 
10.100.0.0/18 dev eth0  proto kernel  scope link  src 10.100.12.38 
127.0.0.0/8 dev lo  scope link 
169.254.0.0/16 dev eth0  scope link

관련 정보