I have two NIC's (one Ethernet and one tethering from mobile). My Ethernet internet connection is port filtered, so I can't use some applications on that. All applications can run on my mobile tethering,  but as I have only limited data I only want some selected applications to use that NIC. So the question is: how can I force only some process to use a specific NIC?
Configure a process to use specific NIC
linux;networking;process;network interface
Basically you want to jail your process and force it to bind to a specific NIC.  Lots of people use LD_PRELOAD but LD_PRELOAD does not control the route that the processes uses. It will use the first route. One possible resolution was on SuperUser https://superuser.com/questions/241178/how-to-use-different-network-interfaces-for-different-processes/241215#241215ip netns can do this.TL;DR: Create network namespaces, associate interfaces to them and then run ip netns exec NAME cmd...Just check if your distro supports ip netns... (Backtrack 5r3 does not, whereas Kali does ;) )IN MORE DETAILS:#create netnsip netns add myNamespace#link iface to netnsip link set eth0 netns myNamespace#set ip address in namespaceip 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 namespaceip 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