检查IPv4 / IPV6是否在mysql表的范围内

时间:2017-06-21 20:33:56

标签: mysql

我有两张带IPV4的桌子,IPv6有起始范围和结束范围,如下所示

下面是ipv4表,我使用INET_ATON

转换了所有ipv4
    START      |   END
--------------------------------
    3423540224 |   3423541247
    1161801728 |   1161805823

下面是ipv6表,我使用INET6_ATON

转换了所有ipv6
    START                   |   END
------------------------------------------------------------
    0x262000001c00000000000 |   0x262000001cfffffffffffffff
    0x262003210200000000000 |   0x262033211cfffffffffffffff

现在我有一个原始IP地址123.123.21.21,我想测试这个Ip是否存在于table的任何范围内。我试过下面的查询,但它返回空。

SELECT * FROM `ipv4` WHERE (INET_ATON("123.123.21.21") BETWEEN INET_NTOA(`START`) AND INET_NTOA(`END`))

另外,我想检查IPv6,我试过了

 SELECT * FROM `ipv4` WHERE (INET6_ATON("2213:1880:test:0:0:0:0:0") BETWEEN INET6_NTOA(`START`) AND INET6_NTOA(`END`))

但是上面的查询总是返回空的。有人可以告诉你最好的方法吗? P.s:我只有256行CIDR范围

0 个答案:

没有答案