我想启动一个与网络断开连接的程序(因为启动后它会立即尝试下载大量数据,这可以通过在稳定后立即更改设置来阻止)。然而,我真的不想使网络瘫痪对于这个节目。
是否有一些 LD_PRELOAD 或类似的东西给程序留下网络已关闭的印象?我宁愿不创建虚拟机。
答案1
在Linux下,尝试使用网络命名空间,例如:
sudo ip netns add namespace-name
sudo ip netns exec namespace-name executable
这应该会阻止程序访问网络。
答案2
如果您使用的是最新的 Linux 并且具有超级用户访问权限,@Ulrich 的网络命名空间解决方案是一个完美的解决方案。如果没有,另一种选择是使用 SOCKS 包装器,例如dante
或socksify
(tsocks
请注意,它们与 一起使用LD_PRELOAD
)。
与 with 一样tsocks
,创建一个tsocks.conf
with 实例:
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 地址。