Traceroute에는 -i
로고가 있습니다.
-i
인터페이스는--interface=interface
Traceroute가 패킷을 보내야 하는 인터페이스를 지정합니다. 기본적으로 인터페이스는 라우팅 테이블을 기반으로 선택됩니다.
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
사용하여 활성화할 수 있습니다 (충분한 상수에서 검색한 후). 충분한 상수 이후) 파일을 포함합니다.setsockopt
setsockopt-listen