Opa, fico no aguardo do feedback.
Versão Imprimível
Então Andrio, rodei aqui, e deixa eu me retratar, não é um problema com o cgnat em si, mas como trata as regras, eu queria um que caso não fechasse com TCP/UDP aplicasse o NAT do restante para cada IP Publico daquele bloco privado, e também um que fosse simples de aplicar as regras... Só isso na verdade, ai escrevi um inteiro, que a gente coloca só o bloco privado, o bloco publico e a posição de inicio das regras e ele se vira fazer tudo, bem simples.
Em geral podemos concluir que a diferença entre esse script do CGNAT e o NAT feito com NETMAP seria que nesse script redirecionamos e distribuímos conforme necessário apenas as portas TCP e UDP, enquanto no NETMAP ele redireciona qualquer protocolo, correto?
Há alguma outra diferença relevante entre o src/dst-nat e o netmap?
Errado, o esquema que eu faço com cgnat tem o mesmo efeito e muito superior a qualquer outro que não use netmap, e é por range de portas e a principal diferença é, o mesmo efeito produzido pelo script do Andrio, que no fim, gera dezenas de centenas de regras, o meu fica com aproximadamente, 10% das regras, ou seja, se com o "comum" você tem 2000 regras com o meu, pouco mais de 200. E onde isso impacta mais? No processamento!
Fiquei curioso.
Esse por netmap que vc refere-se é o CGNAT Horizontal?
Exemplo:
Código :
add action=jump chain=CGNAT_100_64 jump-target=CGNAT_100_64_0 src-address=100.64.0.0/21 add action=netmap chain=CGNAT_100_64_0 protocol=tcp src-address=100.64.0.0/25 to-addresses=192.0.2.0/25 to-ports=5000-5499 add action=netmap chain=CGNAT_100_64_0 protocol=udp src-address=100.64.0.0/25 to-addresses=192.0.2.0/25 to-ports=5000-5499 add action=netmap chain=CGNAT_100_64_0 protocol=tcp src-address=100.64.0.128/25 to-addresses=192.0.2.0/25 to-ports=5500-5999 add action=netmap chain=CGNAT_100_64_0 protocol=udp src-address=100.64.0.128/25 to-addresses=192.0.2.0/25 to-ports=5500-5999
Se for esse... então eu Já estudei ele certa vez.
Mas não implementei ele pela dificuldade de identificação sem ter um log.
Logo, gostaria de saber como está fazendo a identificação dos clientes?
Pois diferente do CGNAT Vertical, nesse CGNAT Horizontal é o Netmap que cuida de direcionar um IP publico para um IP privado CGNAT, logo, como você saberia que o IP privado 100.64.0.10 saiu pelo 192.0.2.2 e não pelo 192.0.2.3, já que foi atribuido um bloco /25 de IP publico e o netmap pode atribuir qualquer um desses?
Porque, primeiro, ele é do tipo 1:1 quando se usa blocos de mesmo tamanhos, ele não faz sorteio, e segundo não precisa nada de logs, é exatamente o mesmo funcionamento do teu script, só que com muito menos regras.
Cara, esses nomes (vertical e horizontal) é tudo invenção. É tudo CGNAT.