
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.3] |
![]() |
|
Сообщ.
#1
,
|
|
|
Доброго времени суток!
Такая проблема или вопрос: есть настройки сетевой карты, их нужно пропинговать, я пингую с помощью IcmpSendEcho. Пингует все, кроме шлюза, при том даже если указывать шлюз другой, то тоже не пингует. Пожалуйста, объясните этот случай ибо я уже сломал мозг )) Вот что функция возвращает: IcmpSendEcho returned error: 11010 |
Сообщ.
#2
,
|
|
|
начинаем с выключения фаервола
|
Сообщ.
#3
,
|
|
|
Цитата Silver Soft @ Пингует все, кроме шлюза Цитата IcmpSendEcho returned error: 11010 : Request timed out Элементарно Ватсон. У вас наверняка ADSL-модем и шлюз запрещает эхо-пакеты, чтобы избежать атаки "SYN-flood". У нашего прова именно так. Возможно это же делают на шлюзах других видов связи - UTP и т.д. |
Сообщ.
#4
,
|
|
|
Цитата nemez @ начинаем с выключения фаервола ...и шлюз начинает пинговаться... спасибо, я чего сразу не догадался....старею, видимо ))) Цитата ValterG @ Элементарно Ватсон. У вас наверняка ADSL-модем и шлюз запрещает эхо-пакеты, чтобы избежать атаки "SYN-flood". У нашего прова именно так. Возможно это же делают на шлюзах других видов связи - UTP и т.д. отключение файрвола помогло, но вопрос интересный. Значит заблокировано было не на уровне провайдера, а если это так, то почему файрвол не запрещает пинговать DNS? |
Сообщ.
#5
,
|
|
|
Silver Soft
на роутере есть свой фаервол, как правило ipchains или iptables он тоже имеет полное моральное право коцать трафик провайдер траф блокирует, как правило, в соотв. с договором - есть перечень сервисов, которые пров запрещает использовать - воип, хттп, напр., но это только некоторые. Ицмп как правило никто не блокирует. но это лирика |
Сообщ.
#6
,
|
|
|
Цитата nemez @ на роутере есть свой фаервол, как правило ipchains или iptables У меня, да и в многих ADSL-модемах и роутерах iptables Цитата nemez @ Ицмп как правило никто не блокирует. но это лирика Вот именно лирика. Пинг вообще блокировать нельзя, т.к. много сайтов его используют для проверки жив или нет клиент :-) Я говорю - закрыт пинг именно шлюза!!! Есть и сайты которые нельзя пинговать. И то и другое не КРИМИНАЛ. У нас например еще и 25-й порт закрыт. Как хочешь, так и работай с внешней почтой(хорошо что популярные почтовики ввели запасной порт). Зато горе-спаммеры ЗАКРЫТЫ. |
Сообщ.
#7
,
|
|
|
ValterG
имел ввиду что не блокирует провайдер на магистрали. что происходит далее на шлюзе локалки и в локалке непосредственно - каждый сам себе хозяин положения |
Сообщ.
#8
,
|
|
|
немного переписал пинг, теперь он с включенным файрволом отказывается пинговать все ))) оказалось, что мой долбанный NOD32 поставил абсолютную защиту(незнаю, как выключить) и жестко рубит все пинги....
|
Сообщ.
#9
,
|
|
|
Silver Soft
там есть опция называется отключить межсетеовй экран |
Сообщ.
#10
,
|
|
|
nemez, это я понял... я а как включить опцию "разрешить сетевой доступ" вместо "абсолютная защита"
хотя это походу уже к программированию никак не относится )) Кстати, есть идеи как прописать прогу в исключения знаменитых файрволлов? а то предполагаемые пользователи от одно слова "файрволл" падают в обморок!)) |
Сообщ.
#11
,
|
|
|
Цитата Silver Soft @ как прописать прогу в исключения знаменитых файрволлов? а Думаю только интерактивно. Иначе трояны тоже легко прописывали бы себя. Зачем тебе нужно прописывать? Пинг нормально разрешен |
Сообщ.
#12
,
|
|
|
ну стандартный пинг разрешен, но вот эхо-пакеты от других программ могут восприниматься некоторыми файрволами как опасность и блокировать... итог я не могу пропинговать шлюз и программа сообщает пользователю неверную информацию о состоянии сети)
|
Сообщ.
#13
,
|
|
|
что значит "эхо пакеты от некоторых программ?", "стандартный пинг"
если на нем перекрыт ICMP это значит что любой пакет, который принадлежит к заданному протоколу, будет дропнут. пинговать шлюз дело неблагодарное, потому как сам шлюз может быть с заблокированным ICMP, и тогда софтина вообще не будет работать никак. Скажем, в крупных корпоративных сетях, где политикой безопасности занимаются целые департаменты дармоедов, а таковые имеются, убедить их включить ицмп на шлюзах безопасности нереально - только исключительно через уйму бюрократии Да и мне чего-то внутреннее чутье подсказывает, что автор не туда движется. задача я так понял состоит в том, чтобы убедиться, что для заданного эзернет адаптера есть подключение Интернет. Для этого нет необходимости пинговать шлюз, да и совсем не факт, что эти пинги будут проходить. Существуют другие, более элегантные пути решения этого вопроса! |
Сообщ.
#14
,
|
|
|
nemez Скорее всего он хочет проверять оффлайн, что Интернет правильно настроен, чтобы не ходить к юзерам лишний раз, а починить по телефону :-)
|
Сообщ.
#15
,
|
|
|
ValterG, да, частично верно. Чтобы разгрузить тех.поддержку, нужно:
1) определить правильно ли настроен адаптер. 2) проверить есть ли интернет (банально пингуем ya.ru) п1. если пинга нет, то смотрим до шлюза есть ли пинг (может у пользователяя просто кончились деньги) п2. если пинг до шлюза есть, то сообщаем, чтобы проверил состояние своего счета. п3. если нету, то пишем, чтоб звонил в тех.поддержку Вроде все просто, но вот из-за траблов с пингом шлюза, нет уверенности в правильности определения. nemez, какие более элегантные методы есть? для общего развития интересно. P.S. программа рассчитана для использования в сетях двух провайдеров, там на шлюзе нет фильтрации, так как отключая файрвола пинги идут на ура. |
Сообщ.
#16
,
|
|
|
Silver Soft
есть такое понятие как маршрут по умолчанию. Или маршрутизация вообще. Что это такое, не буду на этом останавливаться, везде вдоль и впоперек в интернете расписано что это за механизм и как оно работает. По сути - маршрутизатор это как раз и есть то устройство, которое выполняет перенаправление трафика. Такой механизм также есть в винде, встроенный, он предусматривает направление того или иного трафика на определенный сетевой адаптер в частности. Как узнать, есть ли интернет на сетевом подключении? ведь даже если шлюз будет пинговаться, это еще совсем не факт, что у него установлено сетевое соединение и интернет на нем работает - например, кончились бабки или в кабельный шкаф провайдера попала молния образно говоря. Шлюз при этом будет пинговаться, но инета при этом не будет! Тогда всю эту затею с попингуйством шлюзов можно выбросить коту под хвост! Правильно было бы сделать следующим образом. А. Строим таблицу. Она должна состоять из следующих полей: 1) Наименование сетевого подключения 2) Айпи адрес 3) Маска подсети 4) Шлюз по умолчанию. 5) ДНС сервер 6) ИДЕНТИФИКАТОР_СЕТЕВОГО_АДАПТЕРА 7) .... . ну какбы стандартные настройки для сетевого подключения. Как это сделать? Элементарно, вот там есть пример http://msdn.microsoft.com/en-us/library/aa365917(v=vs.85).aspx Б. Выбираем айпи адрес, который 200% есть в интернете. Это какой-нибудь может быть собственный сервак, или еще какая-нибудь ерундовина типа http://whatismyip.org/ Получаем адрес - ну скажем, разрешаем имена при помощи gethostbyname Вот у нас есть ip, куда надо слать траф теперь нам надо выполнить команду которая направит трафик на заданный нами ресурс (ip) через определенный сетевой адаптер route add ip mask 255.255.255.255 if ИДЕНТИФИКАТОР_СЕТЕВОГО_АДАПТЕРА на сиплюсплюсе ![]() ![]() logprintf("Adapter index : %d\n", iAdapterIndex); char acCmdLine[1024]; STARTUPINFO cif; PROCESS_INFORMATION pi; char acRoute[512]; memset( acRoute, 0x00, sizeof(acRoute) ); // Getting windows directory GetWindowsDirectory( acRoute, sizeof (acRoute) ); strcat( acRoute, "\\system32\\route.exe" ); logprintf("executable: %s\n", acRoute ); ZeroMemory(&cif, sizeof(cif)); cif.cb = sizeof(cif); ZeroMemory(&pi, sizeof(pi)); cif.dwFlags |= STARTF_USESHOWWINDOW; cif.wShowWindow = SW_HIDE; memset(acCmdLine,0x00,sizeof(acCmdLine)); sprintf( acCmdLine, " add %s mask %s %s if %d", Secret.RouteAddr, Secret.RouteMask, Secret.LocalAddr, iAdapterIndex ); logprintf("cmdline: %s\n", acCmdLine); if ( CreateProcess( acRoute, acCmdLine,NULL,NULL,FALSE,NULL,NULL,NULL,&cif,&pi)==TRUE ) { // // printf("waiting...\n"); WaitForSingleObject( pi.hProcess, INFINITE ); // printf("end"); } В. Коннектимся на указанный айпишник. Трафик должен побежать через указанный адаптер. Мы можем законнектиться по тисипи, на 80й порт, скажем, или же погнать пинг - как душа пожелает. Если коннект произошел успешно, или там приходит эхо - интернет есть. Если нет - так извинте, интернет кончился. Г. С точностью до наоборот удаляем за собой маршрут. Д. Затею повторяем для каждого из адаптеров. Результаты коннекта помещаем в таблицу Е. Имеем таблицу для всех адаптеров, где есть интернет а где нету интернета. Собственно все. Направить весь сетевой поток можно при помощи того же самого route add 0.0.0.0 mask 0.0.0.0 ..... блаблабла - весь сетевой траф побежит через указанный адаптер. Да, программа должна запускаться от имени администратора под семерками и вистами |
Сообщ.
#17
,
|
|
|
nemez, спасибо! интересный метод! Такую таблицу адаптеров я имею, но вот проверяю я банальным пингом ) исправлю )
|
Сообщ.
#18
,
|
|
|
Silver Soft
ты по сути пинговал шлюз, но факт присутствия шлюза не является фактом присутствия интернета на нем ))) по большому счету пинговать нада интернет через заданный шлюз ![]() если что не понятно будет - пиши |
Сообщ.
#19
,
|
|
|
да, провайдеры объяснили, что нужно пинговать шлюз, вот я и пинговал )) походу они сами не понимают))
|
Сообщ.
#20
,
|
|
|
провайдеры говорят все правильно. У маршрутизатора есть свой шлюз по умолчанию. Он находится где-то на удаленной технической площадке провайдера. Маршрутизатор как раз направляет весь трафик на него. Вот его то провайдер и предлагал тебе пинговать.
Но тебе такой вариант не подходит - напр., в случае DSL у тебя будет роутер, и настройки с дефолтовым маршрутом будет скрыт внутри некоторой абстрактной черной коробки на которой написано зиксел образно говоря, тебе она выдает порт rj 45 с адресом 192.168.1.1. Этот 192.168.1.1 и будет шлюзом по умолчанию для твоего сетевого адаптера. То же касается DOCSIS и прочего хлама, который пользуют провайдеры. То, что говорят провайдеры - актуально если нету дополнительного маршрутизирующего оборудования. Если оно есть Можно пинговать также dns сервер провайдера или скажем открытые dns сервера - это будет более эффективно! ))) например opendns 208.67.222.222 208.67.220.220 или другие адреса, для которых заведомо извстно, что они живые розовые и теплые |
Сообщ.
#21
,
|
|
|
nemez, хм... интересно... тут еще вопрос такой, как можно пинговать VLAN?
|
Сообщ.
#22
,
|
|
|
Виртуальные Локальные Сети: VLAN
Сети не пингуются........тем более, виртуальные ![]() |
Сообщ.
#23
,
|
|
|
Oleg2004, а есть способ определения их наличия? )
|
Сообщ.
#24
,
|
|
|
Это на мой взгляд весьма проблематично
Вот что пишут - здесь Управление виртуальными сетями Виртуальные локальные сети VLAN порождают проблемы для традиционных систем управления на платформе SNMP как при их создании, так и при наблюдении за их работой. Как правило, для создания виртуальных сетей требуется специальное программное обеспечение компании-производителя, которое работает на платформе системы управления, например HP Open View. Сами платформы систем управления этот процесс поддержать не могут в основном из-за долгого отсутствия стандарта на виртуальные сети. Можно надеяться, что появление стандарта 802.1Q изменит ситуацию в этой области. Наблюдение за работой виртуальных сетей также создает проблемы для традиционных систем управления. При создании карты сети, включающей виртуальные сети, необходимо отображать как физическую структуру сети, так и ее логическую структуру, соответствующую связям отдельных узлов виртуальной сети. При этом по желанию администратора система управления должна уметь отображать соответствие логических и физических связей в сети, то есть на одном физическом канале должны отображаться все или отдельные пути виртуальных сетей. К сожалению, многие системы управления либо вообще не отображают виртуальные сети, либо делают это очень неудобным для пользователя способом, что вынуждает обращаться к менеджерам компаний-производителей для решения этой задачи. |
Сообщ.
#25
,
|
|
|
хм... судя по всему, туда мне нечего даже соваться )
спасибо, Oleg2004! |
Сообщ.
#26
,
|
|
|
опросить любое сетевое оборудование можно средствами протокола SNMP
первая буква S в аббревиатуре расшифровывается как Simple, но таковым он был в своей первой версии. На сегодня это очень мудреный хитро замученный протокол, достаточно сложный в своей технической реализации, с применением синтаксиса ASN и механизмов криптозащиты.. Правда, в майкрософте есть апи, и даже здесь на вики есть много примеров. например описание http://sources.ru/protocols/snmp_learning.shtml ну и вотъ компилируемый пример http://sources.ru/cpp/cpp_winsock_inside_1.shtml нужно только разобраться с MIB для оборудования VLAN Добавлено Цитата Итак, есть одна вещь, которая объединяет все вышеперечисленные утилиты IPCONFIG, NETSTAT, ROUTE и ARP. Все они используют DLL под название INETMIB1.DLL. ))))) по сути дела все винде завязано через SNMP по петле |
Сообщ.
#27
,
|
|
|
изучаю.. очень интересные статьи )
|