我需要调整networking应用程序的networking特定的东西,如:
我知道只要修改/etc/resolv.conf并编写一些iptables规则就可以避开,但对于输出IP数据包,使用默认的DENY防火墙策略可能会触发服务器上运行的其他服务中的故障。
我知道我可以设置一个整个操作系统的虚拟机,并在那里运行我的应用程序,但似乎有点矫枉过正。
是否有可能为一个单一的应用程序(认为单一的Linux进程)的networking“监狱”,可以接受iptables的规则,允许和从这个特定的应用程序的networkingstream量(以IP数据包和以上的方式考虑)? 也许这可以通过一些dynamic加载的库来实现,它可以处理networking层,就像tsocks所做的那样,但是更精细?
尝试使用OpenVZ容器。 它比chroot提供更好的隔离,但比虚拟机less得多的开销。 容器可以有自己的文件系统,用户,IP地址和iptables规则。 开销很小,因为容器不运行它自己的内核。
如果你可以作为一个特定的用户运行应用程序,你可以写一些iptables规则
--uid-owner <user>
标志匹配该特定用户。