장치 또는 인터페이스 플래그가 있는 Netcat이 있습니까?

장치 또는 인터페이스 플래그가 있는 Netcat이 있습니까?

Traceroute에는 -i로고가 있습니다.

-i인터페이스는 --interface=interfaceTraceroute가 패킷을 보내야 하는 인터페이스를 지정합니다. 기본적으로 인터페이스는 라우팅 테이블을 기반으로 선택됩니다.

ping이것 역시 제공됩니다 -I. Netcat에는 그러한 플래그가 없습니다. 간단한 해결책이 있습니까 nc?

답변1

좋은 해결책인터넷 고양이:socat. 이 도구는 무엇이든 할 수 있습니다인터넷 고양이할 수 있는 일은 훨씬 더 많습니다.

Linux에서는 socat소켓 옵션 so-bindtodevice=과 일치하는 옵션 이 제공됩니다 SO_BINDTODEVICE.

예를 들어 인터페이스에 바인딩된 TCP 포트 4444를 수신합니다.veth0(운영 체제가 이 인터페이스와 관련된 경로를 사용하도록 강제합니다.) 다른 옵션은 (OpenBSD 변형)을 사용하는 것과 유사합니다 nc -k -l -p 4444.

socat tcp4-listen:4444,so-bindtodevice=veth0,reuseaddr,fork -

예를 들어 다음과 같이 확인할 수 있습니다.

$ ss -tln sport == 4444
State    Recv-Q   Send-Q     Local Address:Port      Peer Address:Port   
LISTEN   0        5          0.0.0.0%veth0:4444           0.0.0.0:*     

원하는 경우 클라이언트로 바인딩할 수도 있고, 두 개의 소켓을 매개 변수로 사용하는 경우 왼쪽 및 오른쪽 소켓에 다르게 바인딩할 수도 있습니다.


다른 *NIX 유사 운영 체제에서 동일한 기능을 달성하는 다른 동등한 소켓 옵션이 있다는 것이 알려져 있고 명시적으로 구현되지 않은 경우에도 일반 및 옵션을 socat사용하여 활성화할 수 있습니다 (충분한 상수에서 검색한 후). 충분한 상수 이후) 파일을 포함합니다.setsockoptsetsockopt-listen

관련 정보