小编Hav*_*c P的帖子

在 Linux 上“离线”(无外部网络)运行子进程的命令

我有一个程序,我想在不关闭实际网络的情况下在离线模式下进行测试。该程序仍需要连接到本地套接字,包括 unix 域套接字和环回。它还需要侦听环回并对其他应用程序可见。

但是尝试连接到远程机器应该会失败。

我想有一个工具,它的工作原理是strace/ unshare/ sudo,只是运行在互联网(和LAN)隐蔽和一切仍在工作的命令:

$ offline my-program-to-test
Run Code Online (Sandbox Code Playgroud)

这个问题暗示了答案:阻止进程的网络访问?

那里有一些建议,例如以另一个用户身份运行然后操作 iptables,或unshare -n. 但在这两种情况下,我都不知道让 unix 域套接字和环回与主系统共享的咒语 - 该问题的答案只告诉我如何取消共享整个网络。

我正在测试的程序仍然需要连接到我的 X 服务器和 dbus,甚至能够监听来自系统上其他应用程序的环回连接。

理想情况下,我想避免创建 chroot 或用户或 VM 等,因为它变得和拔掉网线一样烦人。即问题的重点是我怎样才能使它像sudo.

我希望该过程能够 100% 正常运行,除非指定非本地地址的网络调用会失败。理想情况下,保持相同的 uid、相同的 homedir、相同的密码、相同的所有内容,除了...离线。

我正在使用 Fedora 18,因此不可移植的 Linux 答案很好(甚至是预期的)。

我什至很高兴通过编写 C 程序来解决这个问题,如果涉及到的话,那么涉及编写 C 的答案就很好。我只是不知道 C 程序需要进行哪些系统调用才能在保留本地网络的同时撤销外部网络访问。

任何试图支持“离线模式”的开发人员都可能会喜欢这个实用程序!

linux networking lxc capabilities namespace

18
推荐指数
1
解决办法
3697
查看次数

标签 统计

capabilities ×1

linux ×1

lxc ×1

namespace ×1

networking ×1