{ "id":"/axapi/v3/slb/template/doh/{name}", "type":"object", "node-type":"list", "title":"doh", "partition-visibility":"shared", "description":"DNS over HTTP(s) template", "properties":{ "name":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "description":"DNS over HTTP(s) Template Name", "optional":false }, "non-dns-request":{ "type":"string", "format":"enum", "default":"reject", "partition-visibility":"shared", "description":"'allow': Forward Non-DoH request to http server bound to vport; 'reject': Reject Non-DoH requests with HTTP 400 Bad Request (Default); ", "enum":[ "allow", "reject" ], "optional":true }, "reject-status-code":{ "type":"string", "format":"enum", "default":"400", "partition-visibility":"shared", "description":"'400': Status Code 400 BAD Request (Default); '500': Status Code 500 Internal Server Error; '501': Status Code 501 Not Implemented; ", "enum":[ "400", "500", "501" ], "optional":true }, "source-nat":{ "type":"string", "format":"enum", "default":"auto", "partition-visibility":"shared", "description":"'auto': Perform Source NAT Auto for service-group(Default) (Not supported with forwarding-ip); 'disable': Don't perform source-nat for server side DNS queries; 'pool': Perform Source NAT with specific pool; ", "enum":[ "auto", "disable", "pool" ], "optional":true }, "snat-pool":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":63, "partition-visibility":"shared", "$ref":"/axapi/v3/ip/nat/pool", "description":"Source NAT pool or pool group", "optional":true }, "tcp-proxy":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "default":"default", "partition-visibility":"shared", "$ref":"/axapi/v3/slb/template/tcp-proxy", "not":"shared-partition-tcp-proxy-template", "description":"TCP Proxy Template Name", "optional":true }, "shared-partition-tcp-proxy-template":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "not":"tcp-proxy", "description":"Reference a TCP Proxy template from shared partition", "optional":true }, "template-tcp-proxy-shared":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "$ref":"/axapi/v3/slb/template/tcp-proxy", "description":"TCP Proxy Template name", "optional":true }, "dns":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "default":"default", "partition-visibility":"shared", "$ref":"/axapi/v3/slb/template/dns", "not":"shared-partition-dns-template", "description":"DNS Template Name", "optional":true }, "shared-partition-dns-template":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "not":"dns", "description":"Reference a DNS template from shared partition", "optional":true }, "template-dns-shared":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "$ref":"/axapi/v3/slb/template/dns", "description":"DNS Template name", "optional":true }, "conn-reuse":{ "type":"string", "format":"enum", "default":"disable", "partition-visibility":"shared", "description":"'enable': Enable Connection Reuse; 'disable': Disable Connection-Reuse (Default); ", "enum":[ "enable", "disable" ], "optional":true }, "uuid":{ "type":"string", "format":"string", "minLength":1, "maxLength":64, "partition-visibility":"shared", "modify-not-allowed":1, "description":"uuid of the object", "optional":true }, "user-tag":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "description":"Customized tag", "optional":true }, "forwarder":{ "type":"object", "$ref":"/axapi/v3/slb/template/doh/{name}/forwarder", "properties":{ "forwarding-ipv4":{ "type":"string", "format":"ipv4-address", "partition-visibility":"shared", "not-list":[ "forwarding-ipv6", "tcp-service-group", "udp-service-group", "bypass-doh" ], "description":"SLB VIP IPv4 address to forward DOH query (IP address)" }, "v4-internal":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Try to find this IP as a VIP in this L3v Partition and forward it internally to the VIP" }, "v4-port":{ "type":"number", "format":"number", "minimum":1, "maximum":65534, "default":53, "partition-visibility":"shared", "description":"Forwarding port number, Default is 53" }, "v4-l4-proto":{ "type":"string", "format":"enum", "default":"both", "partition-visibility":"shared", "description":"'tcp': Use TCP only when forwarding DNS traffic; 'udp': Use UDP only when forwarding DNS traffic; 'both': Use UDP 1st and if unreachable, retry with TCP when forwarding DNS traffic; ", "enum":[ "tcp", "udp", "both" ] }, "forwarding-ipv6":{ "type":"string", "format":"ipv6-address", "partition-visibility":"shared", "not-list":[ "forwarding-ipv4", "tcp-service-group", "udp-service-group", "bypass-doh" ], "description":"SLB VIP IPv6 address to forward DOH query (IP address)" }, "v6-internal":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "description":"Try to find this IP as a VIP in this L3v Partition and forward it internally to the VIP" }, "v6-port":{ "type":"number", "format":"number", "minimum":1, "maximum":65534, "default":53, "partition-visibility":"shared", "description":"Forwarding port number, Default is 53" }, "v6-l4-proto":{ "type":"string", "format":"enum", "default":"both", "partition-visibility":"shared", "description":"'tcp': Use TCP only when forwarding DNS traffic; 'udp': Use UDP only when forwarding DNS traffic; 'both': Use UDP 1st and if unreachable, retry with TCP when forwarding DNS traffic; ", "enum":[ "tcp", "udp", "both" ] }, "tcp-service-group":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "$ref":"/axapi/v3/slb/service-group", "not-list":[ "forwarding-ipv4", "forwarding-ipv6", "bypass-doh" ], "description":"Bind a TCP Service Group to the template (Service Group Name)" }, "udp-service-group":{ "type":"string", "format":"string-rlx", "minLength":1, "maxLength":127, "partition-visibility":"shared", "$ref":"/axapi/v3/slb/service-group", "not-list":[ "forwarding-ipv4", "forwarding-ipv6", "bypass-doh" ], "description":"Bind a UDP Service Group to the template (Service Group Name)" }, "bypass-doh":{ "type":"number", "format":"flag", "default":0, "partition-visibility":"shared", "not-list":[ "forwarding-ipv4", "forwarding-ipv6", "tcp-service-group", "udp-service-group" ], "description":"Forward valid DoH HTTP request as is, no DNS packet extraction (Bypass DoH)" }, "uuid":{ "type":"string", "format":"string", "minLength":1, "maxLength":64, "partition-visibility":"shared", "modify-not-allowed":1, "description":"uuid of the object" } } }, "dns-retry":{ "type":"object", "$ref":"/axapi/v3/slb/template/doh/{name}/dns-retry", "properties":{ "retry-interval":{ "type":"number", "format":"number", "minimum":1, "maximum":400, "default":10, "partition-visibility":"shared", "description":"DNS Retry Interval value 1 - 400 in units of 100ms, default is 10 (default is 1000ms) (1 - 400 in units of 100ms, default is 10 (1000ms/1sec))" }, "after-timeout":{ "type":"string", "format":"enum", "default":"close", "partition-visibility":"shared", "description":"'close': Close client side connection; 'retry-with-tcp': Retry DNS query to server using TCP (If UDP was tried initially. Close after.); ", "enum":[ "close", "retry-with-tcp" ] }, "max-trials":{ "type":"number", "format":"number", "minimum":1, "maximum":5, "default":3, "partition-visibility":"shared", "description":"Total number of times to try DNS query to server before closing client connection, default 3" }, "uuid":{ "type":"string", "format":"string", "minLength":1, "maxLength":64, "partition-visibility":"shared", "modify-not-allowed":1, "description":"uuid of the object" } } } }, "object-keys":[ "name" ], "required":[ "name" ] }