Máy tính CIDR / subnet API
Tính subnet IPv4 / IPv6: địa chỉ mạng, broadcast, netmask, dải và số host; kiểm tra IP thuộc dải, chia subnet, gộp danh sách, đổi dải IP sang CIDR.
Truyền dải mạng ở cidr (192.168.1.0/24, 10.0.0.1/255.255.255.0, 2001:db8::/48), API trả về địa chỉ mạng và broadcast, netmask và wildcard mask, địa chỉ đầu / cuối và dải host dùng được, tổng số địa chỉ và số host dùng được (xử lý cả /31 theo RFC 3021 và /32), mask dạng nhị phân, lớp mạng, loại địa chỉ (private, CGNAT, documentation, multicast…), vùng DNS ngược và các mạng cùng kích thước liền trước, liền sau. Địa chỉ IPv6 được hiển thị cả dạng rút gọn và đầy đủ, kèm số subnet /64.
Các thao tác khác (tự nhận ra từ tham số, hoặc chọn bằng action): contains kiểm tra một hay nhiều ip (địa chỉ hoặc CIDR) có nằm trong dải không; split chia dải thành subnet theo prefix mới, số subnets hoặc số hosts mỗi subnet (liệt kê tối đa 4096); range đổi đầu-cuối thành danh sách khối CIDR ít nhất; merge nhận list gồm CIDR, địa chỉ và dải (tối đa 10.000), gộp các khối chồng lấn, liền kề thành tập nhỏ nhất và báo các mục trùng, chồng lấn.
Tính toán thuần bằng số nguyên 128 bit: không tra cứu, không lưu dữ liệu. Để biết chủ sở hữu và vị trí của địa chỉ hãy dùng /v1/ip, dải cloud và Tor thì dùng /v1/ip-intel.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
cidr | query|body | string | không | Dải mạng (10.0.0.0/8, 10.1.2.3/255.0.0.0, 2001:db8::/32), một địa chỉ, hoặc đầu-cuối cho action=range. Cũng nhận trên đường dẫn: /v1/cidr/10.0.0.0%2F8. | |
action | query|body | string | không | info, contains, split, range hoặc merge (tự nhận ra từ các tham số khác nếu bỏ trống). | |
ip | query|body | string | không | contains: địa chỉ hoặc CIDR cần kiểm tra, cách nhau bằng dấu phẩy hoặc xuống dòng (tối đa 1000). | |
prefix | query|body | number | không | split: độ dài prefix mới. | |
subnets | query|body | number | không | split: số subnet cần chia (làm tròn lên luỹ thừa của 2). | |
hosts | query|body | number | không | split: số host cần cho mỗi subnet. | |
limit | query|body | number | không | 256 | split: số subnet được liệt kê (1-4096). |
list | body|query | array | không | merge: các CIDR, địa chỉ và dải a-b (mảng hoặc cách nhau bằng xuống dòng, dấu phẩy, khoảng trắng), tối đa 10.000. |
Ví dụ
curl "https://apibox.io.vn/v1/cidr?cidr=192.168.10.0/26" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/cidr?cidr=192.168.10.0/26', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/cidr?cidr=192.168.10.0/26",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/cidr?cidr=192.168.10.0/26');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"action": "info",
"cidr": "192.168.10.0/26",
"version": 4,
"prefix": 26,
"network": "192.168.10.0",
"netmask": "255.255.255.192",
"wildcard": "0.0.0.63",
"broadcast": "192.168.10.63",
"first_address": "192.168.10.0",
"last_address": "192.168.10.63",
"first_host": "192.168.10.1",
"last_host": "192.168.10.62",
"total_addresses": 64,
"usable_hosts": 62,
"netmask_binary": "11111111.11111111.11111111.11000000",
"network_hex": "0xc0a80a00",
"integer_range": [
3232238080,
3232238143
],
"class": "C",
"type": "private",
"reverse_zone": "10.168.192.in-addr.arpa",
"previous_network": "192.168.9.192/26",
"next_network": "192.168.10.64/26"
}
Ứng dụng
- Quy hoạch subnet VPC, VLAN (chia một /16 thành các khối /24)
- Làm sạch và gộp danh sách CIDR của firewall, allowlist
- Kiểm tra IP khách có thuộc dải văn phòng hay đối tác không
- Đổi dải IP trong log hoặc dữ liệu đăng ký sang ký hiệu CIDR
Hỏi đáp
Xử lý /31 và /32 thế nào?
/31 có hai địa chỉ dùng được (RFC 3021, kết nối điểm-điểm) và không có broadcast; /32 là một host duy nhất.
Nếu địa chỉ nhập vào có bit host thì sao?
API tính địa chỉ mạng từ đó (192.168.1.130/26 → 192.168.1.128/26) và hiển thị địa chỉ đã nhập kèm ghi chú.
IPv6 có dùng được cho mọi thao tác không?
Có: info, contains, split, range và merge đều hỗ trợ IPv6, danh sách có thể trộn IPv4 và IPv6.
API liên quan
Định vị IP
Tra cứu quốc gia, tỉnh/thành, toạ độ, ASN và nhà mạng của bất kỳ địa chỉ IPv4, IPv6 nào – hoặc IP của chính bạn – chỉ với một request JSON.
DNSTra cứu DNS
Tra bản ghi A, AAAA, MX, TXT, NS, CNAME, SOA, CAA, SRV… của mọi tên miền hoặc tra ngược IP (PTR) qua DNS over HTTPS, kết quả JSON gọn gàng.
@Kiểm tra e-mail
Kiểm tra địa chỉ e-mail: cú pháp RFC, bản ghi MX/A, ~120k tên miền e-mail tạm, tài khoản chức năng, nhà cung cấp miễn phí và gợi ý gõ sai như gmial.com.