![配置进程以使用特定 NIC](https://linux22.com/image/103468/%E9%85%8D%E7%BD%AE%E8%BF%9B%E7%A8%8B%E4%BB%A5%E4%BD%BF%E7%94%A8%E7%89%B9%E5%AE%9A%20NIC.png)
我有两个网卡(一个以太网和一个移动网络共享)。我的以太网互联网连接经过端口过滤,因此我无法在其上使用某些应用程序。所有应用程序都可以在我的移动网络共享上运行,但由于我只有有限的数据,我只希望某些选定的应用程序使用该 NIC。
所以问题是:如何强制只有某些进程使用特定的网卡?
答案1
基本上,您想要“监禁”您的进程并强制它绑定到特定的网卡。很多人使用 LD_PRELOAD,但 LD_PRELOAD 不控制进程使用的路由。它将使用第一条路线。一种可能的解决方案是超级用户https://superuser.com/questions/241178/how-to-use- Different-network-interfaces-for- Different-processes/241215#241215
ip netns 可以做到这一点。
TL;DR:创建网络命名空间,将接口与其关联,然后运行“ip netns exec NAME cmd...”
只需检查您的发行版是否支持 ip netns...(Backtrack 5r3 不支持,而 Kali 支持;))
更多细节:
#create netns
ip netns add myNamespace
#link iface to netns
ip link set eth0 netns myNamespace
#set ip address in namespace
ip netns exec myNamespace ifconfig eth0 192.168.0.10/24 up
#set loopback (may be needed by process run in this namespace)
ip netns exec myNamespace ifconfig lo 127.0.0.1/8 up
#set route in namespace
ip netns exec myNamespace route add default gw 192.168.0.1
#force firefox to run inside namespace (using eth0 as outgoing interface and the route)
ip netns exec myNamespace firefox