我需要在mysql数据库中搜索具有以下IP地址“192.168.0.1/20”的条目。
注意:存储的IP地址是变量(例如:192.168.0.3,192.168.0.4)
Address: 192.168.0.1 11000000.10101000.0000 0000.00000001
Netmask: 255.255.240.0 = 20 11111111.11111111.1111 0000.00000000
Wildcard: 0.0.15.255 00000000.00000000.0000 1111.11111111
=>
Network: 192.168.0.0/20 11000000.10101000.0000 0000.00000000
HostMin: 192.168.0.1 11000000.10101000.0000 0000.00000001
HostMax: 192.168.15.254 11000000.10101000.0000 1111.11111110
Broadcast: 192.168.15.255 11000000.10101000.0000 1111.11111111
Hosts/Net: 4094 Class C, Private Internet
我的解决方案是根据给定的CIDR符号(用“*”替换0)找到网络地址,然后在数据库中搜索 192.168.*.* 条目,因为它们以字符串形式存储。这个方法可以运作,但我不确定是否正确。是否有人能指出问题或者比这更优化的解决方案?
ip_address
) > {STARTING_IP_ADDRESS} && INET_ATON(ip_address
) < {EDING_IP_ADDRESS}; (https://www.ultratools.com/tools/netMaskResult?ipAddress=192.168.0.1%2F20+)" - forum.test17