Разумеется, вы можете привязать сокет к определенному устройству.
Я не знаю, как это сделать на python, но, используя api-сокет berkeley (в C), вам нужно вызвать setsockopt()
, используя опцию SO_BINDTODEVICE
.
Вы передаете дескриптор интерфейса, который имеет тип struct ifreq
. В идеале вы должны получить содержимое дескриптора интерфейса, используя ioctl()
и запрашивая SIOCGIFINDEX
- передавая имя интерфейса (например, eth0) в качестве аргумента.
edit: только что сделал быстрый поиск и нашел эту документацию по методам сокетов в python. setsockopt()
среди них.