Tạo subnet
/v2.0/subnetsTạo subnet trong một mạng.
OpenStack Networking không tự suy ra phiên bản IP từ CIDR. Nếu bạn không chỉ định thuộc tính gateway_ip, OpenStack Networking sẽ cấp một địa chỉ trong CIDR làm gateway cho subnet.
Để tạo subnet không có gateway, đặt thuộc tính gateway_ip thành null trong request body. Nếu bạn không chỉ định thuộc tính allocation_pools, OpenStack Networking tự động cấp các pool bao phủ toàn bộ địa chỉ IP trong CIDR, trừ địa chỉ dành cho gateway của subnet. Khi chỉ định cả allocation_pools và gateway_ip, hãy đảm bảo IP gateway không trùng với các allocation pool; nếu không, request sẽ trả về 409 Conflict.
Một subnet có thể có một hoặc nhiều name server và host route. Các host trong subnet này sử dụng các name server đó. Các thiết bị có địa chỉ IP thuộc subnet này, không tính route của subnet cục bộ, sẽ sử dụng các host route.
Chỉ định các thuộc tính ipv6_ra_mode và ipv6_address_mode để tạo subnet hỗ trợ cấu hình IPv6 như SLAAC, DHCPv6 stateful và DHCPv6 stateless.
Tuỳ chọn, bạn có thể liên kết subnet với một network segment khi tạo bằng cách chỉ định segment_id của một segment hợp lệ trên mạng đã chỉ định (routed network).
Nguồn: create-subnet
Request
Tham số body
subnetobjectbắt buộcObject subnet.
tenant_idstringID của project sở hữu tài nguyên. Admin/advsvc có thể chỉ định project khác.
project_idstringID của project sở hữu tài nguyên. Admin/advsvc có thể chỉ định project khác.
namestringTên dễ đọc của subnet.
descriptionstringMô tả dễ đọc.
enable_dhcpbooleanDHCP có được bật cho subnet hay không. Mặc định: true.
network_idstringbắt buộcID của mạng mà subnet thuộc về.
dns_nameserversarrayDanh sách DNS name server liên kết với subnet.
allocation_poolsarrayCác allocation pool với địa chỉ IP bắt đầu và kết thúc cho subnet này. Nếu bỏ trống, pool được tự động cấp (trừ gateway).
host_routesarrayCác route bổ sung. Mỗi phần tử có destination và nexthop.
ip_versionintegerbắt buộcPhiên bản giao thức IP. 4 hoặc 6.
gateway_ipstringIP gateway của subnet này. Dùng null để tạo không có gateway. Nếu bỏ trống, một địa chỉ trong CIDR sẽ được cấp.
cidrstringbắt buộcCIDR của subnet.
prefixlenintegerĐộ dài prefix dùng để cấp phát từ subnet pool.
ipv6_address_modestringChế độ gán địa chỉ IPv6: slaac, dhcpv6-stateful, dhcpv6-stateless.
ipv6_ra_modestringChế độ router advertisement IPv6: slaac, dhcpv6-stateful, dhcpv6-stateless.
segment_idstringID của network segment mà subnet liên kết.
subnetpool_idstringID của subnet pool liên kết với subnet.
use_default_subnetpoolbooleanCó cấp subnet này từ default subnet pool hay không.
service_typesarrayCác service type liên kết với subnet.
dns_publish_fixed_ipbooleanCó publish bản ghi DNS cho các IP thuộc subnet này hay không. Mặc định: false.
Request mẫu
Dùng curl (tạo subnet trên mạng riêng)
curl -ks -H 'Content-Type: application/json' \
-H 'X-Auth-Token: gAAAAA<...>' -d '
{
"subnet": {
"enable_dhcp": true,
"network_id": "170546a1-a70a-40af-93e2-9261c7c05b77",
"dns_nameservers": [
"10.30.0.27",
"10.30.0.28"
],
"allocation_pools": [
{
"start": "192.168.10.2",
"end": "192.168.10.254"
}
],
"ip_version": 4,
"gateway_ip": "192.168.10.1",
"cidr": "192.168.10.0/24"
}
}' https://api.vietnix.cloud:9696/v2.0/subnets
HTTP request
POST https://api.vietnix.cloud:9696/v2.0/subnets
Response
Tham số response
subnetobjectbắt buộcObject subnet.
idstringbắt buộcID của subnet.
tenant_idstringbắt buộcID của project.
project_idstringbắt buộcID của project.
namestringbắt buộcTên dễ đọc của tài nguyên.
descriptionstringbắt buộcMô tả dễ đọc.
enable_dhcpbooleanbắt buộcDHCP có được bật cho subnet hay không.
network_idstringbắt buộcID của mạng mà subnet thuộc về.
dns_nameserversarraybắt buộcDanh sách DNS name server liên kết với subnet.
allocation_poolsarraybắt buộcCác allocation pool với địa chỉ IP bắt đầu và kết thúc.
host_routesarraybắt buộcCác route bổ sung với destination và nexthop.
ip_versionintegerbắt buộcPhiên bản giao thức IP. 4 hoặc 6.
gateway_ipstringbắt buộcIP gateway của subnet này, hoặc null.
cidrstringbắt buộcCIDR của subnet.
created_atstringbắt buộcThời điểm tạo (ISO 8601).
updated_atstringbắt buộcThời điểm cập nhật gần nhất (ISO 8601) hoặc null.
ipv6_address_modestringbắt buộcChế độ địa chỉ IPv6 hoặc null.
ipv6_ra_modestringbắt buộcChế độ router advertisement IPv6 hoặc null.
revision_numberintegerbắt buộcRevision number.
segment_idstringbắt buộcID network segment liên kết, nếu có.
subnetpool_idstringbắt buộcID subnet pool, nếu có.
service_typesarraybắt buộcCác service type liên kết với subnet.
tagsarraybắt buộcDanh sách tag trên tài nguyên.
dns_publish_fixed_ipbooleanbắt buộcCó publish bản ghi DNS cho các IP thuộc subnet này hay không.
Response mẫu
Subnet cho mạng riêng
Response body
{
"subnet": {
"id": "d3f93e1c-f59d-40f8-a46c-ea6285f3a069",
"name": "",
"tenant_id": "f33507157a634f1cac71e06a70fb558e",
"network_id": "170546a1-a70a-40af-93e2-9261c7c05b77",
"ip_version": 4,
"subnetpool_id": null,
"enable_dhcp": true,
"ipv6_ra_mode": null,
"ipv6_address_mode": null,
"gateway_ip": "192.168.10.1",
"cidr": "192.168.10.0/24",
"allocation_pools": [
{
"start": "192.168.10.2",
"end": "192.168.10.254"
}
],
"host_routes": [],
"dns_nameservers": [
"10.30.0.27",
"10.30.0.28"
],
"description": "",
"service_types": [],
"tags": [],
"created_at": "2025-09-23T07:00:56Z",
"updated_at": "2025-09-23T07:00:56Z",
"revision_number": 0,
"project_id": "f33507157a634f1cac71e06a70fb558e"
}
}
Mã trạng thái
Thành công
| Mã | Mô tả |
|---|---|
| 201 - Created | Tài nguyên đã được tạo và sẵn sàng sử dụng. |
Lỗi
| Mã | Mô tả |
|---|---|
| 400 - Bad Request | Nội dung request không hợp lệ. |
| 401 - Unauthorized | Cần xác thực trước khi gửi request. |
| 403 - Forbidden | Policy không cho phép user hiện tại thực hiện thao tác này. |
| 404 - Not Found | Không tìm thấy tài nguyên. |
| 409 - Conflict | Thao tác xung đột với một thao tác khác trên tài nguyên. |