У меня есть ноутбук с двумя сетевыми картами, одна проводная и одна беспроводная. Оба интерфейса находятся в одной подсети. Я смог использовать интерфейс Wi-Fi для веб-навигации и проводной интерфейс для внутреннего сетевого трафика, изменяя таблицу локальных маршрутов и включая шлюз по умолчанию только для интерфейса Wi-Fi. Это была легкая часть. Моя цель состоит в том, чтобы поддерживать точно такие же существующие внутренние соединения локальной сети, перенаправляя их с интерфейса локальной сети на беспроводной интерфейс, когда я отсоединяю ноутбук. Насколько я понимаю, сокет Windows описывается уникальным 4-кортежем, состоящим из IP-адресов источника и назначения и номеров портов, то есть адресов локальных и удаленных сокетов. Я попытался перехватить событие расстыковки и запустить скрипт, который удалял адреса проводного интерфейса и устанавливал адреса интерфейсов Wi-Fi точно так же, как и у проводного интерфейса. К сожалению, внутренние сетевые сокеты воссоздаются с использованием интерфейса Wi-Fi, то есть исходные порты отличаются от тех, которые используются проводным интерфейсом, даже если адрес источника и удаленный адрес и порты ранее использовались проводным интерфейсом. , Можно ли перенаправить существующие соединения TCP на другой интерфейс? Большое спасибо за любое предложение

Поскольку это может быть не так читаемо, я приведу конкретный пример:

Допустим, мой проводной интерфейс назначил адрес 192.168.1.2, а беспроводной интерфейс назначил адрес 192.168.1.3, и оба интерфейса одновременно активны.

Я устанавливаю tcp-соединение, используя адрес 192.168.1.2 и номер порта 50885 в качестве адреса источника и порта источника, а также адрес 192.168.1.5 и номер порта 445 в качестве удаленного адреса и удаленного порта.

После установления вышеуказанного tcp-соединения я отсоединяю ноутбук (что эквивалентно отключению кабеля Ethernet).

Я хочу знать, возможно ли поддерживать точно указанное выше tcp-соединение, сначала отключив интерфейс Ethernet (или освободив IP-адрес Ethernet и удалив его, чтобы запретить Windows уничтожать tcp-подключения, отключив проводной интерфейс), а затем назначив адрес 192.168 .1.2 к беспроводному интерфейсу.

Мой тест говорит мне, что это невозможно, но я действительно хотел бы сделать это возможным.

0