Linux
配置程序以使用特定的 NIC
我有兩個 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