Configure um processo para usar um NIC específico

3

Eu tenho dois NICs (um Ethernet e um tethering de celular). Minha conexão de internet Ethernet é filtrada por porta, por isso não posso usar alguns aplicativos sobre isso. Todos os aplicativos podem ser executados no compartilhamento de dispositivos móveis, mas como tenho apenas dados limitados, quero apenas que alguns aplicativos selecionados usem esse NIC.

Portanto, a questão é: como posso forçar apenas alguns processos a usar uma NIC específica?

    
por nithin 18.01.2017 / 15:45

1 resposta

5

Basicamente, você quer "prender" seu processo e forçá-lo a vincular-se a uma NIC específica. Muitas pessoas usam LD_PRELOAD, mas LD_PRELOAD não controla a rota usada pelos processos. Ele usará a primeira rota. Uma possível resolução estava em SuperUser link

ip netns pode fazer isso.

TL; DR: crie namespaces de rede, associe interfaces a eles e execute "ip netns exec NAME cmd ..."

Basta verificar se sua distro suporta ip netns ... (Backtrack 5r3 não, enquanto Kali faz;))

EM MAIS DETALHES:

#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
    
por 18.01.2017 / 16:55