EDIT: Come sottolineato da mak, è infatti possibile specificare un'interfaccia di rete da un processo utente. Sono corretto. Tuttavia, non ho ancora trovato un modulo che lo consenta con il nodo.
Per impostazione predefinita, l'interfaccia di rete è determinata dalla tabella di routing del sistema operativo.
È possibile elencare questa tabella con netstat -r
su sistemi Unix (incluso OSX). Basta aprire un terminale e digitare il comando. Si otterrà una lista come:
laurent ~ $ netstat -r
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.1 UGSc 153 0 en0
127 localhost UCS 0 0 lo0
localhost localhost UH 2 42 lo0
...
Il campo Netif
fornisce l'interfaccia di rete utilizzata per il percorso. È inoltre possibile ottenere l'interfaccia utilizzata per raggiungere un hostname con route
:
laurent ~ $ route get google.fr
route to: par03s02-in-f23.1e100.net
destination: default
mask: default
gateway: 192.168.1.1
interface: en0
flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 1500 0
Questo è più una cosa serverfault, ma è possibile modificare le rotte con il comando route
. Ad esempio, questo il traffico volontà di X.Y.Z. [0-254] per X.Y.Z.254 su eth0:
route add -net X.Y.Z.0/24 gw X.Y.Z.254 dev eth0
Se si desidera percorsi a persistere un riavvio, è possibile aggiungerli al /etc/network/interfaces
. Se si desidera caricare il bilanciamento tra diversi percorsi, è necessario controllare anche MPLS.
fonte
2012-11-28 11:20:35
Dopo il tempo in cui ho posto questa domanda, ho trovato che questo è probabilmente l'approccio migliore. Posso raggruppare gli indirizzi di os.networkInterfaces(). – Vicary