LD_PRELOAD 或类似的方法来阻止网络访问

LD_PRELOAD 或类似的方法来阻止网络访问

我想启动一个与网络断开连接的程序(因为启动后它会立即尝试下载大量数据,这可以通过在稳定后立即更改设置来阻止)。然而,我真的不想使网络瘫痪对于这个节目。

是否有一些 LD_PRELOAD 或类似的东西给程序留下网络已关闭的印象?我宁愿不创建虚拟机。

答案1

在Linux下,尝试使用网络命名空间,例如:

sudo ip netns add namespace-name
sudo ip netns exec namespace-name executable

这应该会阻止程序访问网络。

答案2

如果您使用的是最新的 Linux 并且具有超级用户访问权限,@Ulrich 的网络命名空间解决方案是一个完美的解决方案。如果没有,另一种选择是使用 SOCKS 包装器,例如dantesocksifytsocks请注意,它们与 一起使用LD_PRELOAD)。

与 with 一样tsocks,创建一个tsocks.confwith 实例:

path {
    reaches = 0/0
    server = 127.0.0.1
    server_port = -1
    server_type = 5
}
fallback = no

并通过以下方式调用您的应用程序:

TSOCKS_CONF_FILE=/path/to/that/tsocks.conf tsocks your-application

这仅适用于 TCP 连接和 IPv4。另一方面,这意味着您可以有选择地指定要允许连接的 IP 地址。

相关内容