heor
Интересующийся
Offline
Пол:
|
|
« : 12-01-2009 14:41 » |
|
Хочу написать программу которая будет создавать туннель между 2 и более компьютерами. Здесь насколько я понял нужно перехватывать пакеты, идущие в определенную заренее известную сеть, менять его содержимое, и отправлять далее.
у меня вопрос: 1. Нужно ли писать драйвер для перехвата пакета, или можно обойтись без него. Если да то какое по использовать? 2. Для тунеля навернека потребуеться виртуальный интернет адаптер, на него будут отправляться пакеты, а я ловить. Какой адаптер подойдет для этой цели?
|
|
« Последнее редактирование: 13-01-2009 07:56 от Алексей1153++ »
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #1 : 13-01-2009 06:52 » |
|
а что подразумевается под словом тунель?) функции какие?
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
heor
Интересующийся
Offline
Пол:
|
|
« Ответ #2 : 13-01-2009 07:21 » |
|
а что подразумевается под словом тунель?) функции какие? Нет. Может я неправильно выразился.Я хочу создать VPN(virtual private network). Которые обьединила бы компьютеры в одну сеть, фактически я создам тунели между компами, и скажу то что это сеть. Физически эти компьютеры находяться в интернете, в разных сетях. Я видел некоторые реализации VPN, особенно openvpn, но в них нужен сервер и клиент, а мне сервер некуда ставить. Поэтому я придумал способ обойтись без него. вот и хочу написать прогу, к-я это делала.
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #3 : 13-01-2009 08:17 » |
|
heor, вопрос: теорию построения сетей и маршрутизации ты знаешь хорошо?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
heor
Интересующийся
Offline
Пол:
|
|
« Ответ #4 : 13-01-2009 08:55 » |
|
heor, вопрос: теорию построения сетей и маршрутизации ты знаешь хорошо? Немножко знаю. какие бывают сети, и что такое маршрутизация. А причем здесь это?
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #5 : 13-01-2009 10:01 » |
|
При том: как ты себе представляешь структуру такой сети? Каждый с каждым?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
heor
Интересующийся
Offline
Пол:
|
|
« Ответ #6 : 13-01-2009 10:30 » |
|
Да. а как иначе?
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #7 : 13-01-2009 11:30 » |
|
heor, как машина, которая должна войти в эту сеть, узнает список всех узлов? Ведь, чтобы добавить новый узел, его придется прописывать на всех существующих узлах.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
heor
Интересующийся
Offline
Пол:
|
|
« Ответ #8 : 13-01-2009 13:36 » |
|
Это не вопрос. Я думаю сервер все таки будет, пока незнаю что это за сервер. Я хочу как-то связать 2 машины, ip адреса которых заранее известны. Организовать список ip я думаю не проблема, чтоб машина получала его. Труднее будет с широковешательными пакетами. Пробовал написать драйвер. Но у меня выдает ошибку error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl NdisInitializeWrapper(void * *,void *,void *,void *)" (__imp_?NdisInitializeWrapper@@YAXPAPAXPAX11@Z) referenced in function "long __cdecl DriverEntry(struct _DRIVER_OBJECT *,struct _UNICODE_STRING *)" (?DriverEntry@@YAJPAU_DRIVER_OBJECT@@PAU_UNICODE_STRING@@@Z) Насколько я понял надо подключить модуль ndis.lib. я его прописал в Additional Dependencies, и скопировал в папку. Все равно он выдает эту же ошибку. Что делать?
|
|
|
Записан
|
|
|
|
heor
Интересующийся
Offline
Пол:
|
|
« Ответ #9 : 13-01-2009 17:11 » |
|
Разобрался. Надо откомпилировать как Compile as C Code (/TC), а не Compile as C++ Code (/TP). Есть ли другой способ, кроме написания драйвера, перехватить пакет?
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #10 : 13-01-2009 17:19 » |
|
heor, зачем писать драйвер - вот это не понятно. Создается ощущение, что задача не проработана.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #11 : 13-01-2009 18:42 » |
|
heor, Если у тебя будут только статические адреса у всех хостов, тогда я понимаю примерно твою мыслю Но для динамических IP адресов, как ты примерно видиш картину построения VPN сети без серверов? Даже в концепции ּSkype есть понятие сервера в той или иной мере.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
heor
Интересующийся
Offline
Пол:
|
|
« Ответ #12 : 14-01-2009 07:04 » |
|
heor, зачем писать драйвер - вот это не понятно. Вот и я о том же. Можно без драйвера, перехватить пакет, изменить его содержимое, и отправить по другому адресу. Finch, я пришел к выводу что без сервера никак, так что все таки сервер будет, но не ввиде программы, а ввиде веб сервера, скорее всего так, это дешевле, чем брать отдельный компьютер и ставить на него vpn.
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #13 : 14-01-2009 07:08 » |
|
heor,
1. ты ничего о перехвате пакетов и подмене данных в них не говорил, а говорил лишь то что тебе нужно соединить два компа во wi-fi. 2. а причем тут веб сервер?
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
heor
Интересующийся
Offline
Пол:
|
|
« Ответ #14 : 14-01-2009 08:28 » |
|
ты ничего о перехвате пакетов и подмене данных в них не говорил. А как ты представляешь тунелирование? Вот как я представляю: Есть виртуальная сеть 10.0.0.0/8, есть компьютеры в этой сети, и мы знаем для них реальные адреса в интернете. Мы перехватываем паке идущий в эту сеть, меняем заголовок, и отправляем его на соответсвующий реальный адрес. Я прочитал здесь http://www.ntoskrnl.com/wpfk-help/whatis.htm. Packets tunneling. Example: packets captured from the network (or from MSTCP) delivered into the user mode and tunneled to the remote system inside SSL stream. Remote system can indicate them to MSTCP (or send over network) after extracting packets from the SSL stream. Classic approaches like ‘IP in IP’ can also be implemented. Веб сервер нужен чтоб узнать IP адреса.
|
|
« Последнее редактирование: 14-01-2009 08:30 от heor »
|
Записан
|
|
|
|
McZim
|
|
« Ответ #15 : 14-01-2009 08:32 » |
|
ты ничего о перехвате пакетов и подмене данных в них не говорил. А как ты представляешь тунелирование? так это я заработался, перепутал темы
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
McZim
|
|
« Ответ #16 : 14-01-2009 08:33 » |
|
Веб сервер нужен чтоб узнать IP адреса.
а почему Веб? Как допустим Apache тебе в этом поможет?
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
heor
Интересующийся
Offline
Пол:
|
|
« Ответ #17 : 14-01-2009 08:37 » |
|
а почему Веб? Как допустим Apache тебе в этом поможет? Надо просто создать сайт на php, который делал всю работу по добавлению, и удалению пользователей. Как это сделано в torrent. Торренты тоже обращаються к веб серверу, берут оттуда инфу, и качают, все работает и причем неплохо. Ну а можно написать программу сервер, вместо веб сервера.
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #18 : 14-01-2009 08:42 » |
|
heor, видимо ты не о том говоришь. Сервер смотрящий сетевым интерфейсом в интернет не называется Веб сервером. Зачем целый сайт на php, почему именно php?
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
heor
Интересующийся
Offline
Пол:
|
|
« Ответ #19 : 14-01-2009 08:54 » |
|
Зачем целый сайт на php, почему именно php. Целый сайт не обязателен, хотя можно и создать. Поидее можно обойтись одним php скриптом. Главное чтобы апаче поддерживал сокеты, и мог отправлять пакеты, иначе ничего не выйдет. Почему php. php легче. Да и потому что больше я незнаю другого. слышал что есть cgi скрипты и еще perl. Можно через них.
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #20 : 14-01-2009 08:56 » |
|
perl было бы лучше, потому как не нужно поднимать Apache, достаточно подключить необходимые модули.
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
heor
Интересующийся
Offline
Пол:
|
|
« Ответ #21 : 14-01-2009 09:06 » |
|
1. а будут работать сокеты? или это зависит от того какой хост будет? 2. если напишу драйвер, будет ли он перехватывать IPX пакеты (NETBIOS), а то некоторые старые игрушки поддерживают его?
|
|
|
Записан
|
|
|
|
McZim
|
|
« Ответ #22 : 14-01-2009 09:07 » |
|
1. это ты сейчас о чем? Если написать на perl? Так все зависит от того как ты напишешь. 2. опять таки, зависит от того как ты напишешь.
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
heor
Интересующийся
Offline
Пол:
|
|
« Ответ #23 : 14-01-2009 09:17 » |
|
1. Да я имел ввиду perl. 2. а passThru из DDK перехватывает IPX Пакеты?
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #24 : 17-01-2009 21:47 » |
|
увы, сетевыми никогда не занимался - поэтому на вскидку не скажу... сам пример смотреть надо, а времени сейчас совсем нет( сердцем чувствую что скорее всего да... но могу ошибаться)
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
|