powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Попадание ip адреса в диапазон
12 сообщений из 12, страница 1 из 1
Попадание ip адреса в диапазон
    #39264085
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Может быть вопрос не в тот форум, но вдруг кто-то сталкивался с подобным.
В mysql хранятся диапазоны айпишников, например:
Код: plaintext
1.
2.
3.
id         ip_from                  ip_to              city
2	159.224.2.11	159.224.165.255    Город Х
3	77.1.1.0	        160.224.185.255    Город Y
Беру какой-нибудь айпи из города Город Х: 159.224.165.242 (сервис 2ip показывает принадлежность именно этому городу)
делаю запрос:
Код: sql
1.
SELECT * FROM test.ip_range where inet_aton('159.224.165.242') between inet_aton(ip_from) and inet_aton(ip_to);


при помощи inet_aton адреса переводятся в числа и в результате на выходе получаю две записи, т.е., что искомый айпи входит и в первый и во второй диапазоны. А по факту он принадлежит только "Город Х". Как правильно решать подобные штуки? Спасибо!
...
Рейтинг: 0 / 0
Попадание ip адреса в диапазон
    #39264112
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTА по факту он принадлежит только "Город Х".
По-русски объясните по какому факту так вообще получилось? Второй диапазон ошибочен или что с ним? Нужно брать кратчайший диапазон или что?
...
Рейтинг: 0 / 0
Попадание ip адреса в диапазон
    #39264117
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в общем то, первый диапазон полностью попадает во второй.

Т.ч. судя по Вашим исходным данным, ВСЕ ПРОСТО !!!!

Первый город маленький, а второй - большой мегаполис. Понятно, что IP из Мтищи, одновременно входят и в Московскую область )))
...
Рейтинг: 0 / 0
Попадание ip адреса в диапазон
    #39264122
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, какому городу принадлежат IP 192.168.*.* )))

Правильный подход - обратиться к поставщику исходных данных и спросить, по каким принципам они построены, как с ними работать.

Лично я бы:
1) просто присвоил приоритет записям. Соответственно подсети с небольшой маской - имеют преимущество перед подсетями с большой маской.

IMHO
...
Рейтинг: 0 / 0
Попадание ip адреса в диапазон
    #39264137
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJulTА по факту он принадлежит только "Город Х".
По-русски объясните по какому факту так вообще получилось? Второй диапазон ошибочен или что с ним? Нужно брать кратчайший диапазон или что?
да, нужно брать кратчайший диапазон, но как?
...
Рейтинг: 0 / 0
Попадание ip адреса в диапазон
    #39264139
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevИнтересно, какому городу принадлежат IP 192.168.*.* )))

Правильный подход - обратиться к поставщику исходных данных и спросить, по каким принципам они построены, как с ними работать.

Лично я бы:
1) просто присвоил приоритет записям. Соответственно подсети с небольшой маской - имеют преимущество перед подсетями с большой маской.

IMHO
можно ли автоматически при занесении в базу как-то рассчитывать эти приоритеты?
вот что в соседнем форуме посоветовали: http://www.sql.ru/forum/1220255-a/popadanie-ip-adresa-v-diapazon
не вариант
...
Рейтинг: 0 / 0
Попадание ip адреса в диапазон
    #39264142
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Длину" диапазона посчитать же можете. Вот и берите наиболее короткие. IMHO

Хотя от ошибок, если диапазоны пересекаются - это все равно Вас не спасет

Да и вообще, не факт, что IP с каким-то конкретным городом связан. Вхожу через Мегафон из Ростова-на-дону, все сервера определяют как Краснодар (> 300 км) Просто потому, что скорее всего, там у Мегафона какой-то региональный центр.

BlazkowiczНужно брать кратчайший диапазон или что?
+1
...
Рейтинг: 0 / 0
Попадание ip адреса в диапазон
    #39264204
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT,

ip определяются по провайдеру, а он может иметь регистрацию в одной области , а работать в нескольких других, поэтому не факт, что по ip можно узнать город.
...
Рейтинг: 0 / 0
Попадание ip адреса в диапазон
    #39264244
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно. Всем спасибо за помощь
...
Рейтинг: 0 / 0
Попадание ip адреса в диапазон
    #39264298
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulTБеру какой-нибудь айпи из города Город Х: 159.224.165.242 (сервис 2ip показывает принадлежность именно этому городу)
делаю запрос:
Код: sql
1.
SELECT * FROM test.ip_range where inet_aton('159.224.165.242') between inet_aton(ip_from) and inet_aton(ip_to);


при помощи inet_aton адреса переводятся в числа и в результате на выходе получаю две записи, т.е., что искомый айпи входит и в первый и во второй диапазоны. А по факту он принадлежит только "Город Х". Как правильно решать подобные штуки? Спасибо!
Тут ничего поделать нельзя. В базе действительно диапазоны перекрываются.
Но если предположить что сетка X входит в Y тогда можно искать в порядке нарастающих
длин диапазонов и брать первый сверху.

Код: sql
1.
2.
3.
SQL> SELECT * FROM test.ip_range where inet_aton('159.224.165.242') 
between inet_aton(ip_from) and inet_aton(ip_to) 
order by (inet_aton(ip_to) - inet_aton(ip_from)) asc;
...
Рейтинг: 0 / 0
Попадание ip адреса в диапазон
    #39264389
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonJulTБеру какой-нибудь айпи из города Город Х: 159.224.165.242 (сервис 2ip показывает принадлежность именно этому городу)
делаю запрос:
Код: sql
1.
SELECT * FROM test.ip_range where inet_aton('159.224.165.242') between inet_aton(ip_from) and inet_aton(ip_to);


при помощи inet_aton адреса переводятся в числа и в результате на выходе получаю две записи, т.е., что искомый айпи входит и в первый и во второй диапазоны. А по факту он принадлежит только "Город Х". Как правильно решать подобные штуки? Спасибо!
Тут ничего поделать нельзя. В базе действительно диапазоны перекрываются.
Но если предположить что сетка X входит в Y тогда можно искать в порядке нарастающих
длин диапазонов и брать первый сверху.

Код: sql
1.
2.
3.
SQL> SELECT * FROM test.ip_range where inet_aton('159.224.165.242') 
between inet_aton(ip_from) and inet_aton(ip_to) 
order by (inet_aton(ip_to) - inet_aton(ip_from)) asc;


Да, спасибо большое, так и сделала
...
Рейтинг: 0 / 0
Попадание ip адреса в диапазон
    #39264780
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю оптимальнее будет так.
Код: sql
1.
2.
3.
4.
5.
            SELECT *
            FROM ip_range 
            WHERE inet_aton(:ip_addr) >= ip_start
            ORDER BY ip_start DESC
            LIMIT 1



Выход за предел диапазона можно на клиенте уже проверить.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Попадание ip адреса в диапазон
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]