我有一个程序要在脱机模式下进行测试,而又不中断我的实际网络。该程序仍然需要连接到本地套接字,包括Unix域套接字和环回。它还需要侦听回送并且对其他应用程序可见。
但是尝试连接到远程计算机应该失败。
我想有一个工具,它的工作原理是strace
/ unshare
/ sudo
,只是运行在互联网(和LAN)隐蔽和一切仍在工作的命令:
$ offline my-program-to-test
该问题的答案提示:阻止进程的网络访问?
那里有一些建议,例如以其他用户身份运行然后操纵iptables或unshare -n
。但是在两种情况下,我都不知道要与主系统共享unix域套接字和环回的诱惑-该问题的答案仅告诉我如何取消共享整个网络。
我正在测试的程序仍然需要连接到我的X服务器和dbus,甚至还能够在环回侦听来自系统上其他应用程序的连接。
理想情况下,我想避免创建chroot或用户或VM等,因为它就像拔掉网络电缆一样令人讨厌。即问题的关键是我怎样才能使它简单如一个sudo
。
我希望该过程能够正常运行100%,除了指定非本地地址的网络调用会失败。理想情况下,保持相同的uid,相同的homedir,相同的pwd,相同的所有内容,除了...离线。
我使用的是Fedora 18,因此无法移植的Linux回答就很好(甚至期望)。
我什至很乐意通过编写C程序来解决此问题,如果涉及到这一点,那么涉及编写C的答案就可以了。我只是不知道C程序在保留本地网络的同时撤销外部网络访问权限时需要执行什么系统调用。
任何尝试支持“离线模式”的开发人员都可能会喜欢此实用程序!