Linux

配置程序以使用特定的 NIC

  • January 23, 2017

我有兩個 NIC(一個乙太網和一個來自移動設備的網路共享)。我的乙太網網際網路連接是埠過濾的,所以我不能在上面使用一些應用程序。所有應用程序都可以在我的移動網路共享上執行,但由於我只有有限的數據,我只希望某些選定的應用程序使用該 NIC。

所以問題是:我怎樣才能強制某些程序使用特定的 NIC?

基本上,您想“監禁”您的程序並強制它綁定到特定的 NIC。很多人使用 LD_PRELOAD 但 LD_PRELOAD 不控制程序使用的路由。它將使用第一條路線。一種可能的解決方法是在 SuperUser 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

引用自:https://unix.stackexchange.com/questions/338338