Таблица маршрутизации ядра определяет, через какой интерфейс отправлять пакеты, и, следовательно, возможность связывать устройства. Беглый взгляд на «Программирование на сокете Linux, Уоррен У. Гей» показывает, что указание интерфейса - это плохо, и что из-за динамики ядра (брандмауэр, переадресация) он более сложен.
Я бы предложил изменить вашу схему IP таким образом, чтобы информация об IP сообщала вам о вашем интерфейсе (ах) через поиск аналогичным образом, если это делает ifconfig, в противном случае вы стреляете сами в дизайне ноги.
1) Получите информацию об IP из сеанса TCP
2) Поиск, какой интерфейс (ы) это может быть действительным для
Хотя я продолжу искать в API ядра. Вам не нужно знать об этом, абстракция существует по множеству веских причин.
Дополнительная мысль
Размышляя над этим, кажется, что если оба интерфейса используют один и тот же IP-адрес, тогда должна быть разница маршрутизации диапазона адресов клиента (в противном случае будут использоваться оба интерфейса). Ваш сервер может проверить таблицу маршрутизации на основе IP-адреса клиента