
Сообщение от
b2m
Я не понял, так ты разобрался, как работать с TAP-драйвером? Или всё-таки нет?
Пока нет.
Но других путей не вижу.
Все виртуалки на РС (которые по сути - эмуляторы) работают с сеткой через TAP или его проприетарный аналог.
---------- Post added at 23:29 ---------- Previous post was at 22:11 ----------

Сообщение от
Ramiros
Сеть я делать врятли буду, нифига в этом непонимаю.
Дык никто не понимает. Надо разбираться. 
---------- Post added 15.02.2011 at 00:46 ---------- Previous post was 14.02.2011 at 23:29 ----------
Некоторые приемы работы с TAP прогуглил. Ничего особенного - открыл, читаешь/пишешь. 
http://www.rsdn.ru/forum/network/3842938.flat.aspx
http://www.rsdn.ru/forum/winapi/2724711.aspx
А вообще, все сразу посылают в исходники OpenVPN - дескать "иди и смотри".
А сама концепция пока не ясна. Неясно главным образом почему при объединении в бридж, и реальные адаптеры и TAP-ы перестают энумероваться (например из NDIS по ndisprotQueryBinding, да везде - даже по ipconfig, т.е. по GetAdaptersInfo) .
Ну, тоесть в man-ax на OpenVPN конечно написано, что в Винде после объединения в бридж адаптеры теряют идентичность, и "сущность адаптера" остается только у бриджа, но нафига это так сделано и как это уложить в башке - пока не понятно. Что самое интересное, в Линухе виртуальные адаптеры после объединения в бридж никуда не деваются, как это происходит в Винде.
Поэтому, хотя с бриджем было бы и проще (если бы оно работало как я представляю себе), но схема по прочтении людей по ссылкам похоже вырисовывается такая (несколько отличается от того что я сочинял двумя постами ранее):
Код:
эмулятор<-------+------->TAP1<-------+-------->router<-----+--->RealEthAdapter
(IP-subnet1) | | is our | (IP-subnet2)
| | PC |
WinAPI (CreateFile, Windows IP stack Windows IP stack
WriteFile, ReadFile,
DeviceIoControl)
Как видим, никакого NDIS.
А РС, на котором будет работать эмулятор, сам будет роутить из сети где находится TAP1 в сеть реального адаптера, надо только галку поставить где надо. Или не ставить, если выход во внешнюю сеть не нужен - тогда взаимодействующий IP-софт (telnet, к примеру) просто запускаем на своем же РС - там же где и эмулятор, натравив его на TAP1.
При этом TAP1 не обслуживается двумя стеками. "IP-стек кода на Z80" транслируется на выходе эмулятора в вызовы WinAPI, которые просто являются симметричной ответной частью для IP-стека Винды (имитирую ответные-парные "отправки и прием пакета" в/из эмулятор).