Сейчас на форуме: jinoweb (+4 невидимых)

 eXeL@B —› Программирование —› Определение внешнего IP
Посл.ответ Сообщение


Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 27 февраля 2016 21:19
· Личное сообщение · #1

Приветствую, уважаемые. Подскажите кто знает, че-то затупил.. Играюсь с 3g-модемом, пытаюсь организовать автоматический детект внешнего IP конкретного устройства. Все бы ничего, но при поднятом подключении в свойствах коннекта только локальный.. Как же внешний заполучить все-таки?

IPCONFIG:
PPP адаптер:

DNS-суффикс этого подключения . . :
Описание . . . . . . . . . . . . : WAN (PPP/SLIP) Interface
Физический адрес. . . . . . . . . : 00-00-00-00-00-00
Dhcp включен. . . . . . . . . . . : нет
IP-адрес . . . . . . . . . . . . : 10.142.XXX.XXX
Маска подсети . . . . . . . . . . : 255.255.255.255
Основной шлюз . . . . . . . . . . : 10.142.XXX.XXX
DNS-серверы . . . . . . . . . . . : 213.87.0.1
213.87.1.1
Основной WINS-сервер . . . . . . : 10.11.12.13
Дополнительный WINS-сервер. . . . : 10.11.12.14
NetBIOS через TCP/IP. . . . . . . : отключен



Ранг: 92.1 (постоянный), 83thx
Активность: 0.110
Статус: Участник

Создано: 27 февраля 2016 21:36
· Личное сообщение · #2

Code:
  1. curl https://api.ipify.org





Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 27 февраля 2016 21:39 · Поправил: Rainbow
· Личное сообщение · #3

Программно, на базе api.. SetupApi никак не помогут ???




Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 27 февраля 2016 22:40 · Поправил: mysterio
· Личное сообщение · #4

мОй_руки_и_внешнИй_АйПишНеГ_перед_едой.vbs
Code:
  1. Option Explicit
  2. Dim http : Set http = CreateObject( "MSXML2.ServerXmlHttp" )
  3. http.Open "GET", "http://icanhazip.com/", False
  4. http.Send
  5. ' хотим консоль WScript.StdOut.Write http.responseText
  6. MsgBox http.responseText, vbOKOnly + vbInformation, "Внешний IP" ' а не хотим MessageBox ;)
  7. Set http = Nothing


>> И только ?
Хотели внешний IP - вон он (если инет конечно есть). Либо совет выше - curl/wget и любой аналогичный сайт что вернет наш IP (да хоть: http://yandex.com/internet).

-----
Don_t hate the cracker - hate the code.





Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 27 февраля 2016 22:42 · Поправил: Rainbow
· Личное сообщение · #5

И только так ?




Ранг: 568.2 (!), 465thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 28 февраля 2016 02:05
· Личное сообщение · #6

netstat ???

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.




Ранг: 33.4 (посетитель), 24thx
Активность: 0.020
Статус: Участник

Создано: 28 февраля 2016 02:42
· Личное сообщение · #7

Traceroute?




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 28 февраля 2016 11:06
· Личное сообщение · #8

Rainbow пишет:
И только так?

угум-с. вопрос - нафига это, если он будет все равно серый. а белых в 3G я чет не припоминаю

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 28 февраля 2016 11:14
· Личное сообщение · #9

Спасибо конечно за варианты, это все интересно. Но, неужели после регистрации компа в сети (завершение подключения), система остается в неведениии, какой назначается адрес ? Быть может дров как-то повежливее попросить помочь ? Просто считаю, что получать внешний адрес от сторонних ресурсов это все равно что трусы через голову одевать... Я прибегну к этому способу, только если действительно больше нет воможности это сделать...




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 28 февраля 2016 11:18 · Поправил: ajax
· Личное сообщение · #10

Rainbow пишет:
система остается в неведениии, какой назначается адрес

[система] -> адрес внутренней сети -> [гейт/шлюз] -> внешний серый адрес -> сайт
как-то так. каким фигом она узнает внешку, без посылки данных сайту (который видит, кто к нему лезет) ?

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 28 февраля 2016 11:24
· Личное сообщение · #11

ajax пишет:
как-то так. каким фигом она узнает внешку, без посылки данных сайту (который видит, кто к нему лезет) ?


Ну прежде чем до сайта дойти надо шлюз миновать..

| Сообщение посчитали полезным: Excelvrn

Ранг: 5.0 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 28 февраля 2016 11:40
· Личное сообщение · #12

Да не сидит Rainbow на *NIX-ах!




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 28 февраля 2016 11:43
· Личное сообщение · #13

Шлюзов может быть и несколько. И даже если бы они и были обязаны перед тобой отчитываться, шлюзы ли они, и какой адрес тебе дают, это всё равно работа с сетью, а не с системой, и от работы с сайтом не отличается особо.




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 28 февраля 2016 11:47
· Личное сообщение · #14

Archer пишет:
И даже если бы они и были обязаны перед тобой отчитываться, шлюзы ли они, и какой адрес тебе дают, это всё равно работа с сетью, а не с системой


)))))))) Ну тогда кем он в пакет вкладывается ?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 28 февраля 2016 12:09
· Личное сообщение · #15

Роутер заменяет по таблице твой адрес на свой внешний при прохождении через него пакета. При прохождении обратного пакета заменяет обратно. И?




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 28 февраля 2016 12:12
· Личное сообщение · #16

Ну так че теперь? Это Private Key ? xD



Ранг: 60.6 (постоянный), 87thx
Активность: 0.060
Статус: Участник

Создано: 28 февраля 2016 12:50
· Личное сообщение · #17

Теперь вопрос: откуда винде знать, какой адрес был выставлен в пакете на последнем роутере в цепочке перед "выходом во внешнюю сеть" без посылки данных?




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 28 февраля 2016 12:53
· Личное сообщение · #18

Kaimi пишет:
Теперь вопрос: откуда винде знать, какой адрес был выставлен в пакете на последнем роутере в цепочке перед "выходом во внешнюю сеть" без посылки данных?


Запрашивать при подключении.



Ранг: 60.6 (постоянный), 87thx
Активность: 0.060
Статус: Участник

Создано: 28 февраля 2016 12:57
· Личное сообщение · #19

Rainbow пишет:
Запрашивать при подключении.

Т.е. посылать запрос в сеть.




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 28 февраля 2016 13:02 · Поправил: Rainbow
· Личное сообщение · #20

Kaimi пишет:
Т.е. посылать запрос в сеть.

Гениально ))))

P.S. Ты у своего шлюза, он у следущего и так далее. Но только при подключении. В активном состоянии данные будут актуальны. Ну а нет- значит нет. Поэтому и спрашиваю как у знатоков.




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 28 февраля 2016 13:08
· Личное сообщение · #21

Rainbow
rtfm по сетям (nat, ip-маскарадинг и т.п). уже как бэ 4 чела сказали, что без вариантов

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 28 февраля 2016 13:08 · Поправил: Rainbow
· Личное сообщение · #22

Ну ок.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 28 февраля 2016 16:33
· Личное сообщение · #23

Rainbow пишет:
Но только при подключении. В активном состоянии данные будут актуальны.

Неага, ничего не мешает сети перестроиться, изменив твой внешний адрес, а твой комп этого и не заметит. Да, если TCP-коннекты куда-то висят, могут и отвалиться, хотя могут и нет, но общий статус коннекта компа к интернету всяко не изменится.



Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 28 февраля 2016 20:32
· Личное сообщение · #24

Внешний IP определяется только через внешний сайт и никак иначе.

-----
PGP key <0x1B6A24550F33E44A>




Ранг: 3.4 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 04 марта 2016 04:13
· Личное сообщение · #25

сорри за яп)
Code:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls;
  8.  
  9. const
  10.   MAXIMUM_ADAPTER_ADDRESS_LENGTH = 8;
  11.   MAXIMUM_ADAPTER_DESCRIPTION_LENGTH = 128;
  12.   MAXIMUM_ADAPTER_NAME_LENGTH = 256;
  13.  
  14. type
  15.   TForm1 = class(TForm)
  16.     Button1: TButton;
  17.     Memo1: TMemo;
  18.     procedure Button1Click(Sender: TObject);
  19.   private
  20.     { Private declarations }
  21.   public
  22.     { Public declarations }
  23.   end;
  24.  
  25.   TIP_ADDRESS_STRING = packed record
  26.     _String: Array[0..15] of Char;
  27.   end;
  28.  
  29.   TIP_MASK_STRING = TIP_ADDRESS_STRING;
  30.   PIP_MASK_STRING = ^TIP_MASK_STRING;
  31.  
  32.   PIP_ADDR_STRING = ^TIP_ADDR_STRING;
  33.   TIP_ADDR_STRING = packed record
  34.      Next: PIP_ADDR_STRING;
  35.      IpAddress: TIP_ADDRESS_STRING;
  36.      IpMask: TIP_MASK_STRING;
  37.      Context: Cardinal;
  38.   end;
  39.  
  40.   PIP_ADAPTER_INFO = ^TIP_ADAPTER_INFO;
  41.   TIP_ADAPTER_INFO = packed record
  42.     Next: PIP_ADAPTER_INFO;
  43.     ComboIndex: Cardinal;
  44.     AdapterName: Array[0..MAXIMUM_ADAPTER_NAME_LENGTH + 3] of Char;
  45.     Description: Array[0..MAXIMUM_ADAPTER_DESCRIPTION_LENGTH + 3] of Char;
  46.     AddressLength: Cardinal;
  47.     Address: Array[0..MAXIMUM_ADAPTER_ADDRESS_LENGTH - 1] of Byte;
  48.     Index: Cardinal;
  49.     _Type: Cardinal;
  50.     DHCPEnabled: Cardinal;
  51.     CurrentIpAddress: PIP_ADDR_STRING;
  52.     IpAddressList: TIP_ADDR_STRING;
  53.     GatewayList: TIP_ADDR_STRING;
  54.     DHCPServer: TIP_ADDR_STRING;
  55.     HaveWins: Boolean;
  56.     PrimaryWinsServer: TIP_ADDR_STRING;
  57.     SecondaryWinsServer: TIP_ADDR_STRING;
  58.     LeaseObtained: Integer;
  59.     LeaseExpires: Integer;
  60.   end;
  61.  
  62. var
  63.   Form1: TForm1;
  64.  
  65.   function GetAdaptersInfo(IP_ADAPTER_INFO: PIP_ADAPTER_INFO; var OutputBufferLength: Cardinal): Cardinal; stdcall; external 'iphlpapi.dll';
  66.  
  67. implementation
  68.  
  69. {$*.dfm}
  70.  
  71. procedure TForm1.Button1Click(Sender: TObject);
  72. var
  73.   InterfaceInfo: PIP_ADAPTER_INFO;
  74.   IAS: PIP_ADDR_STRING;
  75.   Len: Cardinal;
  76. begin
  77.   if GetAdaptersInfo(nil, Len) = ERROR_BUFFER_OVERFLOW then
  78.     begin
  79.       GetMem(InterfaceInfo, Len);
  80.         try
  81.           if GetAdaptersInfo(InterfaceInfo, Len) = ERROR_SUCCESS then
  82.             repeat
  83.               IAS := @InterfaceInfo.IpAddressList;
  84.                 repeat
  85.                   Memo1.Lines.Add(Format('%s - [%s]', [IAS^.IpAddress._String, InterfaceInfo.Description]));
  86.                   IAS := IAS.Next;
  87.                 until IAS = nil;
  88.               InterfaceInfo := InterfaceInfo.Next;
  89.             until InterfaceInfo = nil;
  90.         finally
  91.           FreeMem(InterfaceInfo);
  92.         end;
  93.     end;
  94. end;
  95.  
  96. end.


| Сообщение посчитали полезным: Rainbow

Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 04 марта 2016 06:32
· Личное сообщение · #26

dex015, ваш кодес сработает только в том случае, если у вас подключение идет через какой-ниубдь PPPoE, бриджом, ну или Dial-up. Бред короче.


 eXeL@B —› Программирование —› Определение внешнего IP
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати