Regras de NAT de origem

Esta é uma API de gerenciamento das regras de NAT de origem de Firewall

Regras de tradução do endereço de origem dos pacotes.

Listar regras de NAT de origem

API de listagem de regras de NAT de origem

GET /api/firewall/rules/snat

Esta api permite fazer filtros através de 1 parâmetro na URL (QueryString), que é: zone

Exemplo de requisição

GET /api/firewall/rules/snat?zone=global HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
from itflex_sdk.firewall.types import GetSourceNatRulesRequest

request = GetSourceNatRulesRequest(
    zone="global"
)
response = sdk.firewall.get_source_nat_rules(request)
print(response.payload)
const response = sdk.firewall.getSourceNatRules({ zone: "global" });
console.log(response.payload);

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "source_nat_rules": [
    {
      "id": 1,
      "enabled": true,
      "order": 3,
      "group_id": 1,
      "zone": "dmz",
      "description": "Rule01",
      "action": "accept",
      "protocol": "tcp/udp",
      "log_enabled": false,
      "log_info": null,
      "src_addr_type": "ip",
      "src_addr": "192.168.10.10",
      "src_translated_addr": null,
      "dst_conn_type": "connection",
      "dst_conn": "iface:1",
      "dst_addr_type": "zone",
      "dst_addr": "wan",
      "dst_port_type": "range",
      "dst_port": "8000:8080",
      "created_at": "2018-12-13T12:20:02.932000+00:00",
      "updated_at": "2018-12-13T12:20:02.932000+00:00"
    },
    {
      "id": 2,
      "enabled": true,
      "order": 8,
      "group_id": 2,
      "zone": "guest",
      "description": "Rule02",
      "action": "nat",
      "protocol": "ip",
      "log_enabled": false,
      "log_info": null,
      "src_addr_type": "ip",
      "src_addr": "192.168.10.10",
      "src_translated_addr": "192.168.0.23",
      "dst_conn_type": "connection",
      "dst_conn": "iface:1",
      "dst_addr_type": "network",
      "dst_addr": "192.168.0.0/24",
      "dst_port_type": null,
      "dst_port": null,
      "created_at": "2018-12-13T14:15:02.932000+00:00",
      "updated_at": "2018-12-13T14:15:02.932000+00:00"
    }
  ]
}
[
    SourceNatRule(
        id=1,
        enabled=True,
        order=3,
        group_id=1,
        zone="dmz",
        description="Rule01",
        action="accept",
        protocol="tcp/udp",
        log_enabled=False,
        log_info=None,
        src_addr_type="ip",
        src_addr="192.168.10.10",
        src_translated_addr=None,
        dst_conn_type="connection",
        dst_conn="iface:1",
        dst_addr_type="zone",
        dst_addr="wan",
        dst_port_type="range",
        dst_port="8000:8080",
        created_at=DateTime(2018, 12, 13, 12, 20, 2, tzinfo=Timezone('+00:00')),
        updated_at=DateTime(2018, 12, 13, 12, 20, 2, tzinfo=Timezone('+00:00'))
    ),
    SourceNatRule(
        id=2,
        enabled=True,
        order=8,
        group_id=2,
        zone="guest",
        description="Rule02",
        action="nat",
        protocol="ip",
        log_enabled=False,
        log_info=None,
        src_addr_type="ip",
        src_addr="192.168.10.10",
        src_translated_addr="192.168.0.23",
        dst_conn_type="connection",
        dst_conn="iface:1",
        dst_addr_type="network",
        dst_addr="192.168.0.0/24",
        dst_port_type=None,
        dst_port=None,
        created_at=DateTime(2018, 12, 13, 14, 15, 2, tzinfo=Timezone('+00:00')),
        updated_at=DateTime(2018, 12, 13, 14, 15, 2, tzinfo=Timezone('+00:00'))
    )
]
[
  {
    id: 1,
    enabled: true,
    order: 3,
    groupId: 1,
    zone: "dmz",
    description: "Rule01",
    action: "accept",
    protocol: "tcp/udp",
    logEnabled: false,
    logInfo: null,
    srcAddrType: "ip",
    srcAddr: "192.168.10.10",
    srcTranslatedAddr: null,
    dstConnType: "connection",
    dstConn: "iface:1",
    dstAddrType: "zone",
    dstAddr: "wan",
    dstPortType: "range",
    dstPort: "8000:8080",
    createdAt: "2018-12-13T12:20:02.000Z",
    updatedAt: "2018-12-13T12:20:02.000Z"
  },
  {
    id: 2,
    enabled: true,
    order: 8,
    groupId: 2,
    zone: "guest",
    description: "Rule02",
    action: "nat",
    protocol: "ip",
    logEnabled: false,
    logInfo: null,
    srcAddrType: "ip",
    srcAddr: "192.168.10.10",
    srcTranslatedAddr: "192.168.0.23",
    dstConnType: "connection",
    dstConn: "iface:1",
    dstAddrType: "network",
    dstAddr: "192.168.0.0/24",
    dstPortType: null,
    dstPort: null,
    createdAt: "2018-12-13T14:15:02.000Z",
    updatedAt: "2018-12-13T14:15:02.000Z"
  }
];

Buscar regra de NAT de origem

API de consulta de regra de NAT de origem

GET /api/firewall/rules/snat/id

Exemplo de requisição

GET /api/firewall/rules/snat/1 HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
response = sdk.firewall.get_source_nat_rule(id=1)
print(response.payload)
const response = sdk.firewall.getSourceNatRule({ id: 1 });
console.log(response.payload);

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 1,
  "enabled": true,
  "order": 3,
  "group_id": 1,
  "zone": "dmz",
  "description": "Rule01",
  "action": "accept",
  "protocol": "tcp/udp",
  "log_enabled": false,
  "log_info": null,
  "src_addr_type": "ip",
  "src_addr": "192.168.10.10",
  "src_translated_addr": null,
  "dst_conn_type": "connection",
  "dst_conn": "iface:1",
  "dst_addr_type": "zone",
  "dst_addr": "wan",
  "dst_port_type": "range",
  "dst_port": "8000:8080",
  "created_at": "2018-12-13T12:20:02.932000+00:00",
  "updated_at": "2018-12-13T12:20:02.932000+00:00"
}
SourceNatRule(
    id=1,
    enabled=True,
    order=3,
    group_id=1,
    zone="dmz",
    description="Rule01",
    action="accept",
    protocol="tcp/udp",
    log_enabled=False,
    log_info=None,
    src_addr_type="ip",
    src_addr="192.168.10.10",
    src_translated_addr=None,
    dst_conn_type="connection",
    dst_conn="iface:1",
    dst_addr_type="zone",
    dst_addr="wan",
    dst_port_type="range",
    dst_port="8000:8080",
    created_at=DateTime(2018, 12, 13, 12, 20, 2, tzinfo=Timezone('+00:00')),
    updated_at=DateTime(2018, 12, 13, 12, 20, 2, tzinfo=Timezone('+00:00'))
)
{
  id: 1,
  enabled: true,
  order: 3,
  groupId: 1,
  zone: "dmz",
  description: "Rule01",
  action: "accept",
  protocol: "tcp/udp",
  logEnabled: false,
  logInfo: null,
  srcAddrType: "ip",
  srcAddr: "192.168.10.10",
  srcTranslatedAddr: null,
  dstConnType: "connection",
  dstConn: "iface:1",
  dstAddrType: "zone",
  dstAddr: "wan",
  dstPortType: "range",
  dstPort: "8000:8080",
  createdAt: "2018-12-13T12:20:02.000Z",
  updatedAt: "2018-12-13T12:20:02.000Z"
}

Criar regra de NAT de origem

API de criação de regra de NAT de origem

POST /api/firewall/rules/snat

Exemplo de requisição

POST /api/firewall/rules/snat?zone=lan HTTP/1.1
Host: api.exemplo.com
Content-Type: application/json
Accept: application/json
Authorization: Bearer <Access-Token>

{
  "enabled": true,
  "order": 11,
  "group_id": 1,
  "description": "New Rule",
  "action": "accept",
  "protocol": "tcp",
  "log_enabled": false,
  "src_addr_type": "ip",
  "src_addr": "192.168.10.10",
  "dst_conn_type": "connection",
  "dst_conn": "iface:1",
  "dst_addr_type": "zone",
  "dst_addr": "wan",
  "dst_port_type": "range",
  "dst_port": "8000:8080",
  "apply": true
}
from itflex_sdk.firewall.types import CreateSourceNatRuleRequest

request = CreateSourceNatRuleRequest(
    enabled=True,
    order=11,
    group_id=1,
    zone="lan",
    description="New Rule",
    action="accept",
    protocol="tcp",
    log_enabled=False,
    src_addr_type="ip",
    src_addr="192.168.10.10",
    dst_conn_type="connection",
    dst_conn="iface:1",
    dst_addr_type="zone",
    dst_addr="wan",
    dst_port_type="range",
    dst_port="8000:8080",
    apply=True
)
response = sdk.firewall.create_source_nat_rule(request)
print(response.payload)
const sourceNatRule = sdk.dbc.types.SourceNatRule();
sourceNatRule.enabled = true;
sourceNatRule.order = 11;
sourceNatRule.groupId = 1;
sourceNatRule.zone = "lan";
sourceNatRule.description = "New Rule";
sourceNatRule.action = "accept";
sourceNatRule.protocol = "tcp";
sourceNatRule.logEnabled = false;
sourceNatRule.srcAddrType = "ip";
sourceNatRule.srcAddr = "192.168.10.10";
sourceNatRule.dstConnType = "connection";
sourceNatRule.dstConn = "iface:1";
sourceNatRule.dstAddrType = "zone";
sourceNatRule.dstAddr = "wan";
sourceNatRule.dstPortType = "range";
sourceNatRule.dstPort = "8000:8080";
sourceNatRule.apply = true;

const response = sdk.firewall.createSourceNatRule(sourceNatRule);
console.log(response.payload);

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 3,
  "enabled": true,
  "order": 11,
  "group_id": 1,
  "zone": "dmz",
  "description": "New Rule",
  "action": "accept",
  "protocol": "tcp",
  "log_enabled": false,
  "log_info": null,
  "src_addr_type": "ip",
  "src_addr": "192.168.10.10",
  "src_translated_addr": null,
  "dst_conn_type": "connection",
  "dst_conn": "iface:1",
  "dst_addr_type": "zone",
  "dst_addr": "wan",
  "dst_port_type": "range",
  "dst_port": "8000:8080",
  "created_at": "2018-12-14T09:20:02.932000+00:00",
  "updated_at": "2018-12-14T09:20:02.932000+00:00"
}
SourceNatRule(
    id=3,
    enabled=True,
    order=11,
    group_id=1,
    zone="dmz",
    description="New Rule",
    action="accept",
    protocol="tcp",
    log_enabled=False,
    log_info=None,
    src_addr_type="ip",
    src_addr="192.168.10.10",
    src_translated_addr=None,
    dst_conn_type="connection",
    dst_conn="iface:1",
    dst_addr_type="zone",
    dst_addr="wan",
    dst_port_type="range",
    dst_port="8000:8080",
    created_at=DateTime(2018, 12, 14, 9, 20, 2, tzinfo=Timezone('+00:00')),
    updated_at=DateTime(2018, 12, 14, 9, 20, 2, tzinfo=Timezone('+00:00'))
)
{
  id: 3,
  enabled: true,
  order: 11,
  groupId: 1,
  zone: "dmz",
  description: "New Rule",
  action: "accept",
  protocol: "tcp",
  logEnabled: false,
  logInfo: null,
  srcAddrType: "ip",
  srcAddr: "192.168.10.10",
  srcTranslatedAddr: null,
  dstConnType: "connection",
  dstConn: "iface:1",
  dstAddrType: "zone",
  dstAddr: "wan",
  dstPortType: "range",
  dstPort: "8000:8080",
  createdAt: "2018-12-14T09:20:02.000Z",
  updatedAt: "2018-12-14T09:20:02.000Z"
}

Editar regra de NAT de origem

API de edição de regra de NAT de origem

PUT /api/firewall/rules/snat/id

Exemplo de requisição

PUT /api/firewall/rules/snat/3 HTTP/1.1
Host: api.exemplo.com
Content-Type: application/json
Accept: application/json
Authorization: Bearer <Access-Token>

{
  "enabled": true,
  "order": 11,
  "description": "New Rule",
  "action": "accept",
  "protocol": "ip",
  "log_enabled": false,
  "src_addr_type": "any",
  "dst_conn_type": "any",
  "dst_addr_type": "any",
  "dst_addr": "wan",
  "apply": true
}
from itflex_sdk.firewall.types import UpdateSourceNatRuleRequest

request = UpdateSourceNatRuleRequest(
    id=3,
    enabled=True,
    order=11,
    description="New Rule",
    action="accept",
    protocol="ip",
    log_enabled=False,
    src_addr_type="any",
    dst_conn_type="any",
    dst_addr_type="any",
    apply=True
)
response = sdk.firewall.update_source_nat_rule(request)
print(response.payload)
const sourceNatRule = {
  id: 3,
  enabled: true,
  order: 11,
  description: "New Rule",
  action: "accept",
  protocol: "ip",
  logEnabled: false,
  srcAddrType: "any",
  dstConnType: "any",
  dstAddrType: "any",
  apply: true
};
const response = sdk.firewall.updateSourceNatRule(sourceNatRule);
console.log(response.payload);

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 3,
  "enabled": true,
  "order": 11,
  "group_id": 1,
  "zone": "dmz",
  "description": "New Rule",
  "action": "accept",
  "protocol": "ip",
  "log_enabled": false,
  "log_info": null,
  "src_addr_type": "any",
  "src_addr": null,
  "src_translated_addr": null,
  "dst_conn_type": "any",
  "dst_conn": null,
  "dst_addr_type": "any",
  "dst_addr": null,
  "dst_port_type": null,
  "dst_port": null,
  "created_at": "2018-12-14T09:20:02.932000+00:00",
  "updated_at": "2018-12-14T10:30:02.932000+00:00"
}
SourceNatRule(
    id=3,
    enabled=True,
    order=11,
    group_id=1,
    zone="dmz",
    description="New Rule",
    action="accept",
    protocol="ip",
    log_enabled=False,
    log_info=None,
    src_addr_type="any",
    src_addr=None,
    src_translated_addr=None,
    dst_conn_type="any",
    dst_conn=None,
    dst_addr_type="any",
    dst_addr=None,
    dst_port_type=None,
    dst_port=None,
    created_at=DateTime(2018, 12, 14, 9, 20, 2, tzinfo=Timezone('+00:00')),
    updated_at=DateTime(2018, 12, 14, 10, 30, 2, tzinfo=Timezone('+00:00'))
)
{
  id: 3,
  enabled: true,
  order: 11,
  groupId: 1,
  zone: "dmz",
  description: "New Rule",
  action: "accept",
  protocol: "ip",
  logEnabled: false,
  logInfo: null,
  srcAddrType: "any",
  srcAddr: null,
  srcTranslatedAddr: null,
  dstConnType: "any",
  dstConn: null,
  dstAddrType: "any",
  dstAddr: null,
  dstPortType: null,
  dstPort: null,
  createdAt: "2018-12-14T09:20:02.000Z",
  updatedAt: "2018-12-14T10:30:02.000Z"
}

Excluir regra de NAT de origem

API de exclusão de regra de NAT de origem

DELETE /api/firewall/rules/snat/id

Exemplo de requisição

DELETE /api/firewall/rules/snat/1 HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>
response = sdk.firewall.delete_source_nat_rule(id=1)
const response = sdk.firewall.deleteSourceNatRule({ id: 1 });

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

Aplicar regras de NAT de origem

API de aplicação de regras de NAT de origem

POST /api/firewall/rules/snat/apply

Exemplo de requisição

POST /api/firewall/rules/snat/apply HTTP/1.1
Host: api.exemplo.com
Accept: application/json
Authorization: Bearer <Access-Token>

{
  "zone": "lan"
}
from itflex_sdk.firewall.types import ApplySourceNatRulesRequest

request = ApplySourceNatRulesRequest(
    zone="lan"
)
response = sdk.firewall.apply_source_nat_rules(request)
const response = sdk.firewall.applySourceNatRules({ zone: "lan" });

Exemplo de resposta

HTTP/1.1 200 OK
Content-Type: application/json

Formato dos dados

Parâmetros da url

Campo Descrição
id int

Identificador da regra de NAT de origem

Parâmetros de consulta

Campo Descrição
zone string

Zona onde serão aplicadas as regras de encaminhamento

Valores possíveis:

  • global
  • dmz
  • guest
  • vpn-s2s
  • vpn-s2u
  • lan

Requisição

Campo Descrição
enabled boolrequerido

Flag que determina se regra está habilitada ou desabilitada.

order intrequerido

Campo indicador da ordem da regra em relação às demais regras do grupo.

group_id intrequerido

Identificador do grupo da regra.

description stringrequerido

Breve descrição da regra.

Tamanho máximo: 30 caracteres

action stringrequerido

Ação que a regra executará.

Valores possíveis:

  • nat
  • masquerade
  • accept
  • log
protocol stringrequerido

Protocolo da regra.

Valores possíveis:

  • tcp/udp
  • tcp
  • udp
  • ip
  • ping
  • ipsec
  • ah
  • esp
  • gre
log_enabled bool

Flag que a indica a geração de uma regra de log.

Ocultar/Ignorar se: campo action possuir valor log.

Valor padrão: False

log_info bool

Texto do log da regra.

Requerido se:

  • Campo action possuir valor log; ou
  • campo log_enabled possuir valor True.

Deve satisfazer a expressão:

[A-Za-z0-9\-_\|\\/<>()@]{0,30}

src_addr_type stringrequerido

Tipo do endereço de origem dos pacotes.

Valores possíveis:

  • any
  • connection
  • ip
  • network
src_addr string

Endereço de origem dos pacotes.

O preenchimento deste campo está relacionado ao valor do campo src_addr_type

src_addr_type Preenchimento válido
any Campo src_addr é Ocultado/Ignorado
connection Campo src_addr requer um Identificador de Connection existente
ip Campo src_addr requer um endereço IP no formato IPv4Address
network Campo src_addr requer um endereço de rede no formato IPv4Network

Caso o valor do campo seja uma conexão, esta deve satisfazer a regra do nível de segurança das Zonas conforme descrito abaixo:

  • Só serão válidas conexões pertencentes à zonas iguais ao zone do grupo da regra.

src_translated_addr string

IP de origem traduzido pela regra de NAT de origem.

Se o valor do campo action for diferente de nat, este campo deve ser null.

Requerido se: campo action for nat.

dst_conn_type stringrequerido

Tipo da conexão de saída dos pacotes.

Valores possíveis:

  • any
  • connection
  • zone

dst_conn string

Conexão ou Zona de origem dos pacotes.

O preenchimento deste campo está relacionado ao valor do campo dst_conn_type

dst_conn_type Preenchimento válido
any Campo dst_conn é Ocultado/Ignorado
connection Campo dst_conn requer um Identificador de Connection existente
zone Campo dst_conn requer um dos valores possíveis: wan, dmz, guest, vpn-s2s, vpn-s2u, lan

Caso o valor do campo seja uma zona ou conexão, esta deve satisfazer a regra do nível de segurança das Zonas conforme descrito abaixo:

  • Só serão válidas zonas ou conexões pertencentes à zonas iguais ou de maior nível de segurança ao zone do grupo da regra.

dst_addr_type stringrequerido

Tipo do endereço de destino dos pacotes.

Valores possíveis:

  • any
  • connection
  • zone
  • ip
  • network

dst_addr string

Endereço de destino dos pacotes.

O preenchimento deste campo está relacionado ao valor do campo dst_addr_type

dst_addr_type Preenchimento válido
any Campo dst_addr é Ocultado/Ignorado
connection Campo dst_addr requer um Identificador de Connection existente
zone Campo dst_addr requer um dos valores possíveis: wan, dmz, guest, vpn-s2s, vpn-s2u, lan
ip Campo dst_addr requer um endereço IP no formato IPv4Address
network Campo dst_addr requer um endereço de rede no formato IPv4Network

Caso o valor do campo seja uma zona ou conexão, esta deve satisfazer a regra do nível de segurança das Zonas conforme descrito abaixo:

  • Só serão válidas zonas ou conexões pertencentes à zonas iguais ou de maior nível de segurança ao zone do grupo da regra.

dst_port_type string

Tipo da porta de destino dos pacotes.

protocol Preenchimento válido
tcp/udp, tcp ou udp Este campo requer um dos valores possíves: any, port, range
ip, ping, ipsec, ah, esp ou gre Este campo deve ser null

dst_port string

Porta ou faixa de portas de destino do pacote.

Se o valor do campo protocol for ip, ping, ipsec, ah, esp ou gre, este campo deve ser null.

O preenchimento deste campo está relacionado ao valor do campo dst_port_type

dst_port_type Preenchimento válido
any Campo dst_port é Ocultado/Ignorado
port Campo dst_port requer uma porta entre 1 e 65535
range Campo dst_port requer uma faixa de portas no formato start_port:end_port

apply bool

Flag que indica se as informações serão provisionadas imediatamente após a criação ou edição

Valor padrão: False

Resposta

Campo Descrição
id int

Identificador da regra de NAT de origem

enabled bool

Flag que determina se regra está habilitada ou desabilitada.

order int

Campo indicador da ordem da regra em relação às demais regras do grupo.

group_id int

Identificador do grupo da regra.

zone string

Zona onde serão aplicadas as regras de encaminhamento.

description string

Breve descrição da regra.

action string

Ação que a regra executará.

protocol string

Protocolo da regra.

log_enabled string

Flag que a indica a geração de uma regra de log.

log_info bool

Texto do log da regra.

src_addr_type string

Tipo do endereço de origem dos pacotes.

src_addr string

Endereço de origem dos pacotes.

src_translated_addr string

IP de origem traduzido pela regra de NAT de origem.

dst_conn_type string

Tipo da conexão de saída dos pacotes.

dst_conn string

Conexão ou Zona de origem dos pacotes.

dst_addr_type string

Tipo do endereço de destino dos pacotes.

dst_addr string

Endereço de destino dos pacotes.

dst_port_type string

Tipo da porta de destino dos pacotes.

dst_port string

Porta ou faixa de portas de destino do pacote.

created_at string

Data de criação

Formato: ISO-8601

updated_at string

Data da última edição

Formato: ISO-8601