ics automation trouble

Вопросы по программированию, не подходящие в другие разделы.

Модераторы: Naeel Maqsudov, C_O_D_E

Ответить
versus
Сообщения: 45
Зарегистрирован: 12 май 2004, 01:37

19 май 2004, 17:47

Всем привет!

Помогите, пожалуйста, разобраться с такой задачкой:

На компьютере стоит два сетевых интерфейса, один сконфигурирован как
нормальное подключение (public connection), другой смотрит во внутреннюю сеть
192.168.0.0 и выступает в качестве шлюза для всех компьютеров этой
внутренней сети (private connection). Картинка вот такая:

Код: Выделить всё

компьютер во
внутренней сети       windows-комьютер
                |
192.168.0.2     |    192.168.58.7 (public ip-адрес)
|----------|    |    |---------------|
|          |---------|               |--> на сетевой маршрутизатор
|----------|    |    |---------------|
                |    192.168.0.1 (шлюз для комьютеров внутренней сети)
                |
Нужно обеспечить беспрепятсвенный выход из компьютера во внутренней
сети во внешнюю через сетевой маршрутизатор. В windows xp/2k это
стандартная фича называется Internet Connection Sharing.

Так если у тебя на компьютере есть два интерфейса то можно
организовать эту схему сделав следующие шаги:

start -> панель управления -> сеть и удаленный доступ к сети -> правый
клик по public connection -> общий доступ
-> "разрешить общий доступ для этого подключения"

Мне необходимо этот процесс автоматизировать. Можно конечно написать
программку которая бы имитировала нажатия tab`a, enter`а и т.д., но
мне такое решение не нравится.

Потенциально есть другое решение с развертыванием NAT сервера на public машине и конфирурированием его стандартными утилитами win2k/xp типа netsh или через WMI, ибо ICS это по сути тот же NAT только значительно упрощенный. В windows2000 есть гуй для настройки NAT сервера среди сервисов и приложений - "Маршуртизация и удаленный доступ". Изменения которые можно произвести с помощью этого интерфейса, потом отображаются в контексте

Код: Выделить всё

netsh routing ip nat
где netsh это стандартная утилитика в windows xp/2k

Таким образом если удастся решить эту задачу в гуе, теоретически можно будет, поняв какие изменения нужно внести, решать ее из консоли тем же netsh.
Пытался настроить NAT-сервер по инструкциям хелпа, но безуспешно. То ли руки кривые, то ли Microsoft не умеет писать хелпы.

Еще недавно нашел в msdn`e статейку о том как все таки ICS можно
включить программно:

http://msdn.microsoft.com/library/defau ... erence.asp

а именно вот здесь:
http://msdn.microsoft.com/library/defau ... haring.asp

И хоть бы один примерчик работающей программы включающую ICS привели :-(
Это решение кажется наиболее правильным, но у меня к сожалению очень мало опыта разработки приложений работающих с win api. Может быть кому нибудь приходилось работать с этой библиотечкой?
Чего делать то надо? :-(


Спасибо.
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

19 май 2004, 17:57

Чего делать то надо?
Это у тебя спросить надобно :)

NAT настраивается не очень тривиально - на win2K нужно установить и запустить RRAS выполнить кучу щелчков по правой и левой почкам мыши. В winXP вообще говорят что RRAS'а нет. Может тебе сгодится NAT сторонних производителей? Например Kerio Winroute?
Даже самый дурацкий замысел можно воплотить мастерски
versus
Сообщения: 45
Зарегистрирован: 12 май 2004, 01:37

19 май 2004, 18:08

Сгодится, но тогда он должен быть freeware, настраиваться из консоли или с помощью конфигурационных файлов (ибо всю настройку надо автоматизировать). WinRoute насколько я знаю не обладает ни тем ни другим свойством. Вообще я нашел подходящий этим условиям прокси сервер и использую его для обеспечения роутинга портов с windows машины на машину в приватной сети:

http://www.esproxy.org.ua/

С этим он прекрасно справляется, но задачи NAT/ICS не решает :-(

[вообще говоря можно и без него обойтись, использовать Internet Connection Firewall или какую нибудь еще стандартную приблуду обеспечивающую роутинг портов.]

зы: привет, кстати :) и мои поздравления с переездом :)
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

19 май 2004, 18:18

но тогда он должен быть freeware, настраиваться из консоли или с помощью конфигурационных файлов
Ну тут тебе все резко начнут советовать установить какой-нибудь FreeBSD в качестве шлюза.
А WinRoute вроде как в персональной редакции бесплатен. На счёт настройки конфигами не уверен, но скорее всего есть.
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

19 май 2004, 18:31

зы: привет, кстати и мои поздравления с переездом
Привет, привет. а поздравления будем принимать только после регистрации 1000-го учасника форума. СЗОТ.
Даже самый дурацкий замысел можно воплотить мастерски
versus
Сообщения: 45
Зарегистрирован: 12 май 2004, 01:37

19 май 2004, 18:45

AiK писал(а):
но тогда он должен быть freeware, настраиваться из консоли или с помощью конфигурационных файлов
Ну тут тебе все резко начнут советовать установить какой-нибудь FreeBSD в качестве шлюза.
А WinRoute вроде как в персональной редакции бесплатен. На счёт настройки конфигами не уверен, но скорее всего есть.
Причем здесь FreeBSD? Нет, в условии ясно сказано шлюз -- windows машина. И с WinRoute`ом мы тоже, мне кажется несколько отошли от темы, в windows достаточно встроенных стандартных средств для развертывания приведенной выше схемы, у меня проблема только с тем чтобы сделать это автоматически...
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

19 май 2004, 18:50

versus, вот ты слов всяких разных много написал, а что ты хочешь - понять тяжко. В моём понимании NAT и ICS не только разными словами записываются, но ещё и _разные_ технологии обозначают. Тебе что требуется: как-нибудь разрулить проблемму или научиться управлять именно ICS программно?
Даже самый дурацкий замысел можно воплотить мастерски
versus
Сообщения: 45
Зарегистрирован: 12 май 2004, 01:37

19 май 2004, 18:59

AiK писал(а):versus, вот ты слов всяких разных много написал, а что ты хочешь - понять тяжко. В моём понимании NAT и ICS не только разными словами записываются, но ещё и _разные_ технологии обозначают.
ICS насколько я знаю это подмножество NAT`a. Эдакий юзер-френдли интерфейс в котором "все делается одним флажком". В windows они действительно реализуются по-разному, но обе эти технологии в сущности очень похожи.
AiK писал(а):Тебе что требуется: как-нибудь разрулить проблемму или научиться управлять именно ICS программно?
Мне необходимо любым (желательно надежным) образом на некоторой windows машине реализовать такую схему. Выше я приводил несколько потенциальных путей решения, из которых только два последних мне кажутся действительно работоспособными. Но с NAT возникли трудности в настройке (может быть кто нибудь организовывал что нибудь похожее и у него получилось?), а с программным интерфейсом с msdn`а есть трудности в связи с малым опытом программирования win api и отстуствием готовых примеров использования этого интерфейса...

В ручную то никаких проблем -- поставить флажок ICS`а и этого будет достаточно!
Аватара пользователя
AiK
Сообщения: 2274
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

19 май 2004, 20:28

Но с NAT возникли трудности в настройке (может быть кто нибудь организовывал что нибудь похожее и у него получилось?)
Ровно такое. Сосед выходит в интернет через машину, с которой я пишу это соообщение.
но обе эти технологии в сущности очень похожи.
Ты это злобному провайдеру расскажи, который и-нет шарить запрещает :)
Даже самый дурацкий замысел можно воплотить мастерски
Ответить