Protocolo de controle de portas
Visão geral do protocolo de controle de portas
O Protocolo de Controle de Portas (PCP) oferece uma maneira de controlar o encaminhamento de pacotes futuros por dispositivos upstream, como NAT44 e dispositivos de firewall, e uma maneira de reduzir o tráfego keepalive de aplicativos. O PCP tem suporte nos PICs MS-DPC, MS-100, MS-400 e MS-500 MultiServices. A partir do Junos OS Release 17.4R1, o PCP para NAPT44 também é compatível com o MS-MPC e o MS-MIC. A partir do Junos 20.2R1, o PCP para serviços CGNAT DS-Lite tem suporte para Serviços de Próxima Geração.Começando no Junos OS Release 18.2R1, PCP no MS-MPC e MS-MIC oferece suporte a DS-Lite. No Junos OS Release 18.1 e versões anteriores, PCP no MS-MPC e MS-MIC não oferece suporte a DS-Lite.
O PCP foi projetado para ser implementado no contexto de NATs de nível de operadora (CGNs) e PEQUENOS NATs (por exemplo, NATs residenciais). O PCP permite que os hosts operem servidores por muito tempo (como no caso de uma webcam) ou um curto período de tempo (por exemplo, enquanto jogam um jogo ou em uma ligação telefônica) quando estão por trás de um dispositivo NAT, incluindo quando está por trás de um CGN operado por seu ISP. O PCP permite que os aplicativos criem mapeamentos de um endereço IP externo e porta para um endereço IP e uma porta interna. Esses mapeamentos são necessários para comunicações de entrada bem-sucedidas destinadas a máquinas localizadas atrás de um NAT ou um firewall. Após a criação de um mapeamento para conexões de entrada, computadores remotos devem ser informados sobre o endereço IP e a porta para a conexão de entrada. Normalmente, isso é feito de maneira específica da aplicação.
O Junos OS oferece suporte para PCP versão 2 e versão 1.
O PCP consiste nos seguintes componentes:
Cliente PCP — um host ou gateway que emite solicitações de PCP para um servidor PCP, a fim de obter e controlar recursos.
Servidor PCP — normalmente um gateway CGN ou servidor co-localizado que recebe e processa solicitações de PCP
O Junos OS permite configurar servidores PCP para fluxos de mapeamento usando recursos NAPT44, como encaminhamento de portas e alocação de blocos de porta. Os fluxos podem ser processados a partir dessas fontes:
Tráfego contendo solicitações de PCP recebidos diretamente de equipamentos de usuário, como mostrado na Figura 1.
Figura 1: Topologiabásica do PCP NAPT44
Mapeamento do tráfego contendo solicitações de PCP adicionadas por um roteador que funciona como um iniciador de softwire DS-Lite (B4). Esse modo, conhecido como modo simples DS-Lite, é mostrado na Figura 2.
Figura 2: PCP com modo de planície DS-Lite
O Junos OS não oferece suporte à alocação determinística de blocos de porta para tráfego originado por PCP.
Benefícios do protocolo de controle de portas
Muitos aplicativos compatíveis com NAT enviam mensagens frequentes em nível de aplicativo para garantir que suas sessões não sejam cronometradas por um dispositivo NAT. O PCP está acostumado a:
Reduza a frequência dessas mensagens keepalive do NAT
Reduza a largura de banda na rede de acesso do assinante
Reduza o tráfego para o servidor
Reduza o consumo de bateria em dispositivos móveis
Protocolo de controle de porta Versão 2
A partir do Junos OS Release 15.1, o Protocolo de Controle de Portas (PCP) versão 2 é suportado, o que está em conformidade com o RFC 6887. O PCP oferece uma maneira de controlar o encaminhamento de pacotes futuros por dispositivos upstream, como NAT44 e dispositivos de firewall, e uma maneira de reduzir o tráfego continuamente vivo de aplicativos. A versão 2 do PCP oferece suporte à autenticação de nonce. O PCP permite que os aplicativos criem mapeamentos de um endereço IP externo e porta para um endereço IP e uma porta interna. Um payload nonce evita um ataque de repetição e é enviado por padrão, a menos que seja explicitamente desativado.
A verificação da nonce do cliente para solicitações de mapa da versão 2 (para atualização ou exclusão) exige que a nonce recebida na solicitação de mapa original que faz com que o mapeamento do PCP seja preservado seja preservado. A versão da solicitação inicial que permite a criação do mapeamento também é preservada. Esse comportamento de salvar os parâmetros de nonce e versão denota que 13 bytes por mapeamento PCP são usados. Esse pequeno aumento no espaço de armazenamento não é significativo quando combinado com o uso atual de memória de um sistema para um único mapeamento solicitado (levando em conta o mapeamento independente de endpoint (EIM) e a filtragem independente de endpoint (EIF) que são criadas junto com ele). Em uma implantação do cliente, o PCP faz com que mapeamentos de EIM e EIF representem uma fração de todos esses mapeamentos.
Até o Junos Release 15.1, os PICs de serviços oferecem suporte a servidores PCP nos roteadores da Juniper Networks de acordo com a versão 22 do PCP com codificação de mensagens versão 1. Com o PCP sendo refinado da versão de rascunho conforme definido no protocolo de controle de portas (PCP) draft-ietf-pcp-base-22 (expiração de julho de 2012) para uma versão finalizada e padrão conforme definido no RFC 6887 -- Protocolo de controle de portas (PCP), a codificação da mensagem mudou para a versão 2 com a adição de uma carga de pagamento de nonce aleatória para autenticar solicitações de peer e mapa conforme necessário. A versão 1 não decodifica mensagens em conformidade com o formato da versão 2 e a autenticação de nonce não é suportada. Em um ambiente de rede de palavras reais, com dispositivos CPE (Customer Premises Equipment, equipamentos locais do cliente) que oferecem suporte cada vez maior apenas à versão 2, é necessário analisar e enviar mensagens da versão 2. A compatibilidade reversa com dispositivos CPE com suporte à versão 1 é mantida (a negociação de versão faz parte do padrão) e autentica pacotes de payload de solicitação quando as mensagens v2 estão em uso.
A saída do show services pcp statistics
comando contém o campo de versão sem suporte pcp, que é incrementado para indicar sempre que a versão não é 1 ou 2. Um novo campo, a nonce de solicitação de PCP não corresponde ao mapeamento existente, é introduzido para indicar o número de solicitações pcp versão 2 que foram ignoradas porque a carga de pagamento da nonce não correspondia à registrada no mapeamento (a autenticação falhou). Se a versão 2 estiver em uso, o nó do cliente é usado para autenticação.
Configuração do protocolo de controle de portas
Este tópico descreve como configurar o protocolo de controle de porta (PCP). O PCP tem suporte nos PICs MS-DPC, MS-100, MS-400 e MS-500 MultiServices. A partir do Junos OS Release 17.4R1, o PCP para NAPT44 também é compatível com o MS-MPC e o MS-MIC. A partir do Junos OS Release 18.2R1, PCP no MS-MPC e MS-MIC oferece suporte a DS-Lite. No Junos OS Release 18.1 e versões anteriores, PCP no MS-MPC e MS-MIC não oferece suporte a DS-Lite. A partir do lançamento do Junos OS 20.2R1 PCP é suportado na placa de serviços de segurança MX-SPC3 para serviços CGNAT.
Execute as seguintes tarefas de configuração:
- Configuração de opções de servidor PCP
- Configuração de uma regra de PCP
- Configuração de uma regra de NAT
- Configuração de um conjunto de serviços para aplicar PCP
- Configuração de mensagem SYSLOG
Configuração de opções de servidor PCP
Configuração de uma regra de PCP
Uma regra de PCP tem as mesmas opções básicas que todas as regras do conjunto de serviços:
Uma
term
opção que permite que uma única regra tenha várias aplicações.Um termo não é necessário ao executar a placa de serviços de segurança MX-SPC3 para serviços de próxima geração.
Uma
from
opção que identifica o tráfego sujeito à regra.Uma
then
opção que identifica quais medidas devem ser tomadas. No caso de uma regra de PCP, essa opção identifica o servidor pcp que lida com o tráfego selecionado
Configuração de uma regra de NAT
Para configurar uma regra de NAT:
Configuração de um conjunto de serviços para aplicar PCP
Para usar o PCP, você deve fornecer o nome de regra (ou nome de uma lista de nomes de regras) na opção pcp-rule rule-name
.
Seu conjunto de serviços também deve identificar os requisitos necessários nat-rule
e softwire-rule
.
Configuração de mensagem SYSLOG
Uma nova classe de syslog, opção de configuração, pcp-logs
foi fornecida para controlar a geração de logs PCP. Ele fornece os seguintes níveis de registro:
protocol
— Todos os logs relacionados à criação de mapeamento, a exclusão estão incluídos nesse nível de registro.protocol-error
— Todos os logs relacionados a erros de protocolo (como falha na atualização do mapeamento, falha no visual do PCP, falha na criação do mapeamento). estão incluídos nesse nível de registro.system-error
— Erros de memória e infraestrutura estão incluídos nesse nível de registro.
Monitoramento das operações de protocolo de controle de porta
Você pode monitorar as operações do Protocolo de Controle de Portas (PCP) com os seguintes comandos operacionais:
Para MS-MPCs, use o
show services nat mappings pcp
comando.Nota:O PCP não tem suporte para serviços de próxima geração no Junos OS Release 19.3R2
Para MS-MPCs, use o
show services nat mappings endpoint-independent
comando.Para os serviços de próxima geração, use o
show services nat source mappings endpoint-independent
comando.show services pcp statistics protocol
A seguir estão exemplos da saída desses comandos.
user@host> show services nat mappings pcp Interface: sp-0/0/0, Service set: in NAT pool: p PCP Client : 10.1.1.2 PCP lifetime : 995 Mapping : 10.1.1.2 : 9000 --> 8.8.8.8 : 1025 Session Count : 1 Mapping State : Active DS-LITE output: =============== PCP Client : 2222::1 PCP lifetime : 106 Mapping : 88.1.0.47 : 47 --> 70.70.70.1 :41972 Session Count : 1 Mapping State : Active B4 Address : 2222::1
user@host> show services nat mappings endpoint-independent Interface: sp-0/0/0, Service set: in NAT pool: p Mapping : 10.1.1.2 :57400 --> 8.8.8.8 : 1024 Session Count : 0 Mapping State : Timeout PCP Client : 10.1.1.2 PCP lifetime : 991 Mapping : 10.1.1.2 : 9000 --> 8.8.8.8 : 1025 Session Count : 1 Mapping State : Active DS-LITE output: =============== PCP Client : 2222::1 PCP lifetime : 190 Mapping : 88.1.1.3 : 4001 --> 70.70.70.2 :58989 Session Count : 1 Mapping State : Active B4 Address : 2222::1
user@host> show services pcp statistics protocol Protocol Statistics: Operational Statistics Map request received :0 Peer request received :0 Other operational counters :0 Option Statistics Unprocessed requests received :0 Third party requets received :0 Prefer fail option received :0 Filter option received :0 Other options counters :0 Option optional received :0 Result Statistics PCP success :0 PCP unsupported version :0 Not authorized :0 Bad requests :0 Unsupported opcode :0 Unsupported option :0 Bad option :0 Network failure :0 Out of resources :0 Unsupported protocol :0 User exceeded quota :0 Cannot provide external :0 Address mismatch :0 Excessive number of remote peers :0 Processing error :0 Other result counters :0
Exemplo: configurar o protocolo de controle de portas com o NAPT44
O PCP tem suporte nas PICS de MS-DPC, MS-100, MS-400 e MS-500. A partir do Junos OS Release 17.4R1, o PCP para NATP44 também é compatível com o MS-MPC e o MS-MIC.
Requisitos
Requisitos de hardware
UEs com clientes PCP.
Um roteador MX 3D com um PIC de serviços MS-DPC.
Requisitos de software
Junos OS 13.2
Pacote de serviços de Camada 3
Visão geral
Um ISP quer permitir que UEs com clientes PCP mantenham conexões com servidores sem temporizar. Os clientes PCP geram solicitações de PCP para o tipo e duração da conexão que precisam. Conexões podem ser de longa duração, como aplicativos usando uma web ou uma duração mais curta, como jogos online. Um roteador MX 3D fornece um servidor PCP para interpretar solicitações de clientes PCP e NAPT44. A Figura 3 mostra a topologia básica para este exemplo.

Configuração de PCP
- Configuração rápida da CLI
- Configuração do chassi
- Configuração de interface
- Configuração de NAT
- Configuração de PCP
- Configuração do conjunto de serviços
Configuração rápida da CLI
Para configurar este exemplo rapidamente, copie os seguintes comandos, cole-os em um arquivo de texto, remova quaisquer quebras de linha, altere todos os detalhes necessários para combinar com a configuração de sua rede e, em seguida, copie e cole os comandos na CLI no nível de hierarquia [edit].
set chassis fpc 2 pic 0 adaptive-services service-package layer-3 set interfaces sp-2/0/0 services-options inactivity-timeout 180 cgn-pic set interfaces sp-2/0/0 unit 0 family inet set interfaces xe-3/2/0 unit 0 family inet service input service-set sset_0 set interfaces xe-3/2/0 unit 0 family inet service output service-set sset_0 set interfaces xe-3/2/0 unit 0 family inet address 30.0.0.1/24 set interfaces xe-5/0/0 unit 0 family inet address 25.0.0.1/24 set services nat pool pcp-pool address 44.0.0.0/16 set services nat pool pcp-pool port automatic random-allocation address-allocation round-robin set services nat pool pcp-pool address-allocation round-robin set services nat rule pcp-rule match-direction input set services nat rule pcp-rule term t0 then translated source-pool pcp-pool translation-type napt-44 set services nat rule pcp-rule term t0 then translated mapping-type endpoint-independent filtering-type endpoint-independent set services nat rule pcp-rule term t0 then translated mapping-type endpoint-independent filtering-type endpoint-independent set services pcp server pcp-s1 ipv4-address 124.124.124.122 set services pcp server pcp-s1 mapping-lifetime-minimum 600 mapping-lifetime-maximum 86500 set services pcp server pcp-s1 short-lifetime-error 120 long-lifetime-error 1200 set services pcp server pcp-s1 max-mappings-per-client 128 pcp-options third-party prefer-failure set services service-set sset_0 pcp-rules r1 set services service-set sset_0 nat-rules pcp-rule set services service-set sset_0 interface-service service-interface sp-2/0/0.0
Configuração do chassi
Procedimento passo a passo
Para configurar o PIC de serviço (FPC 2 Slot 0) com o pacote de serviços de Camada 3:
Vá para o nível de hierarquia [editar chassi].
user@host# edit chassis
Configure o pacote de serviços de Camada 3.
[edit chassis]
user@host# set fpc 2 pic 0 adaptive-services service-package layer-3
Resultados
user@host# show chassis fpc 2 pic 0 pcp-rules pcp-napt44-rule; nat-rules pcp-rule; interface-service { service-interface sp-2/0/0.0; }
Configuração de interface
Procedimento passo a passo
Configure os serviços ms-DPC.
user@host# set interfaces sp-2/0/0 services-options inactivity-timeout 180 cgn-pic user@host# set interfaces sp-2/0/0 unit 0 family inet
Configure a interface voltada para o cliente usada para serviços NAT e PCP.
user@host# set interfaces xe-3/2/0 unit 0 family inet service input service-set sset_0 user@host# set interfaces xe-3/2/0 unit 0 family inet service output service-set sset_0 user@host# set interfaces xe-3/2/0 unit 0 family inet address 30.0.0.1/24
Configure a interface voltada para a Internet.
user@host# set interfaces xe-5/0/0 unit 0 family inet address 25.0.0.1/24
Resultados
user@host# sp-2/0/0 { services-options { inactivity-timeout 180; cgn-pic; } unit 0 { family inet; } } xe-3/2/0 { unit 0 { family inet { service { input { service-set sset_0; } output { service-set sset_0; } } address 30.0.0.1/24; } } } xe-5/0/0 { unit 0 { family inet { address 25.0.0.1/24; } } }
Configuração de NAT
Procedimento passo a passo
Vá na
[edit services nat]
hierarquia.user@host# edit services nat
Configure um pool de NAT chamado
pcp-pool
.[edit services nat]
user@host# set pool pcp-pool address 44.0.0.0/16 user@host# set pool pcp-pool port automatic random-allocation user@host# set pool pcp-pool address-allocation round-robinConfigure uma regra de NAT chamada
pcp-rule
.[edit services nat]
user@host# set rule pcp-rule term t0 then translated source-pool pcp-pool translation-type napt-44 user@host# set rule pcp-rule term t0 then translated mapping-type endpoint-independent filtering-type endpoint-independent
Resultados
user@host# show services nat pool pcp-pool { address 44.0.0.0/16; port { automatic { random-allocation; } } address-allocation round-robin; } rule pcp-rule { match-direction input; term t0 { then { translated { source-pool pcp-pool; translation-type { napt-44; } mapping-type endpoint-independent; filtering-type { endpoint-independent; } } } } }
Configuração de PCP
Procedimento passo a passo
Para configurar as opções de regras do servidor PCP e PCP.
Vá para o nível de
edit services pcp
hierarquia para servidorpcp-s1
user@host# edit services pcp server pcp-s1
Configure as opções de servidor PCP.
[edit services pcp server pcp-s1] user@host# set ipv4-address 124.124.124.122 user@host# set mapping-lifetime-minimum 600 user@host# set mapping-lifetime-maximum 86500 user@host# set short-lifetime-error 120 user@host# set long-lifetime-error 1200 user@host# set max-mappings-per-client 128 user@host# set pcp-options third-party prefer-failure
Crie a regra do PCP.
[edit services pcp rule pcp-napt44-rule user@host# edit rule pcp-napt44-rule
Configure as opções de regras do PCP.
[edit services pcp rule pcp-napt44-rule] user@host# set match-direction input user@host# set term t0 then pcp-server pcp-s1
Resultados
user@host# show services pcp server pcp-s1 { ipv4-address 124.124.124.122; mapping-lifetime-minimum 600; mapping-lifetime-maximum 86500; short-lifetime-error 120; long-lifetime-error 1200; max-mappings-per-client 128; pcp-options third-party prefer-failure; } rule pcp-napt44-rule { match-direction input; term t0 { then { pcp-server pcp-s1; } } }
Configuração do conjunto de serviços
Procedimento passo a passo
Crie um conjunto de serviços,
sset_0
no nível daedit services service-set
hierarquia.user@host# edit services service-set sset_0
service-set sset_0 { pcp-rules pcp-napt44-rule; nat-rules pcp-rule; interface-service { service-interface sp-2/0/0.0; } }
Identifique a regra do NAT associada ao conjunto de serviços.
[edit services service-set sset_0] user@host# set nat-rules pcp-rule
Identifique a regra do PCP associada ao conjunto de serviços.
[edit services service-set sset_0] user@host# set pcp-rules r1
Identifique a interface de serviço associada ao conjunto de serviços.
[edit services service-set sset_0] user@host# set interface-service service-interface sp-2/0/0.0
Resultados
user@host# show pcp-rules pcp-napt44-rule; nat-rules pcp-rule; interface-service { service-interface sp-2/0/0.0; }