Неправильно использовать IP-адреса (ни IPv4, ни IPv6) в диапазонах. Правильный способ группировки определенного «диапазона» IP-адресов - это использовать префиксы (нотации CIDR) или маски (устаревшие, действительные только для IPv4, а безумие возникает, если вы пытаетесь использовать несмежную маску).
Иногда вы можете увидеть кого-то (иногда даже приложения, домашние маршрутизаторы и т. Д.), Используя диапазоны IPv4, но это только неправильный способ сделать это.
Использование Classless Inter-Domain Routing (CIDR) вы будете иметь кортеж < адрес, префикс >, где адрес является 128-разрядным целым числом без знака и префикс крошечного (0..128) целого числа без знака. Префикс указывает, сколько наиболее значимых битов адреса представляет сетевой адрес, оставляя младшие младшие биты 128-префикса для представления определенного хоста в этой сети.
Так, например, «диапазон» IPv6 2620: 0: 860: 2 ::/64 (wikimedia.org) представляет все хосты от 2620: 0: 860: 2 :: до 2620: 0: 860: 2: FFFF: FFFF: FFFF: FFFF.
Вам не следует использовать два «bigint» для хранения такого значения в базе данных, но использовать любое собственное представление в одном столбце, если вы не хотите, чтобы ваш разработчик стал кошмаром. Если ваша СУБД не поддерживает целые числа, это большое, помимо замены СУБД, я предлагаю использовать столбец двоичных данных фиксированного размера длиной 16 байт.
Следующая нить была предложена [@vinS] (https://stackoverflow.com/users/977855/vins) в качестве решения IPv6 вашего вопроса: https: //stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses – datv