¿Puede Python seleccionar qué adaptador de red al abrir un socket?

La máquina de destino que ejecuta la aplicación Python tendrá tres interfaces de red disponibles. En general, las tres redes serán muy diferentes, sin embargo, existe la posibilidad de que dos de las tres estén en redes similares.

En el ejemplo a continuación, no tengo control sobre la dirección de destino en ETH 2 (ya que es un sistema preconfigurado), así que me vi obligado a seleccionar qué adaptador usar programáticamente.

Estoy bastante seguro de que esto dependerá de cómo funciona el sistema operativo con el enrutamiento de las conexiones. Espero que haya una forma independiente de la plataforma para resolver el problema usando python, porque existe la posibilidad de que esta aplicación deba ejecutarse en Windows 7 y en una máquina Linux.

Código de ejemplo

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.0.2', 8000)) # Which device will this connect to??

Caso normal

ETH 0 Fuente: 192.168.0.1ETH 0 Destino: 192.168.0.2ETH 1 Fuente: 10.20.30.1ETH 1 Destino: 10.20.30.2ETH 2 Fuente: 60.50.40.1ETH 2 Destino: 60.50.40.1

Caso de posible problema

ETH 0 Fuente: 192.168.0.1ETH 0 Destino: 192.168.0.2ETH 1 Fuente: 10.20.30.1ETH 1 Destino: 10.20.30.2ETH 2 Fuente: 192.168.0.3ETH 2 Destino: 192.168.0.2

Información Adiciona
os adaptadores ETH0,1 y 2 están conectados a diferentes redes físicas

Respuestas a la pregunta(6)

Su respuesta a la pregunta