Netcat 带有设备或接口标志?

Netcat 带有设备或接口标志?

Traceroute 有一个-i标志,

-i接口,--interface=interface指定traceroute 应通过其发送数据包的接口。默认情况下,根据路由表选择接口。

ping还提供了这个-I。 Netcat 没有这样的标志。有一个简单的解决方法吗nc

答案1

一个很好的解决方法网猫:socat。这个工具可以做任何事网猫可以做的,还有更多。

在Linux上socat提供了与socket选项so-bindtodevice=相匹配的选项SO_BINDTODEVICE

例如,监听绑定到接口的 tcp 端口 4444veth0(强制操作系统使用与此接口相关的路由),其他选项类似于使用(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选项来激活它(在从足够的常量中检索足够的常量之后)包括文件)。

相关内容