Endereços IP PrivadosO padrão de rede RFC 1918 define sub-redes IPv4 reservadas para uso somente em redes privadas (Tabela [RFC 1918 Espaço de Endereço IP Privado(https://www.netgate.com/docs/pfsense/book/network/understanding-public-and-private-ip-addresses.html#table-rfc-1918-private-address-space)). RFC 4193 define Endereços Locais Unicos (ULA) para IPv6 ( espaço de endereço exclusivo da tabela RFC 4193). Na maioria dos ambientes, uma sub-rede IP privada do RFC 1918 é escolhida e usada em todos os dispositivos de rede internos. Os dispositivos são então conectados à Internet por meio de um firewall ou roteador que está implementando o software NAT (Network Address Translation), como o pfSense. O IPv6 é totalmente roteado da rede interna sem NAT por Global Unicast Addresses (GUA). O NAT será explicado em mais detalhes na tradução de endereços de rede. Show
RFC 1918 Espaço de Endereço IP Privado
RFC 4193 Espaço de Endereço Local Exclusivo
Uma lista completa de redes IPv4 de uso especial pode ser encontrada na RFC 3330. Há endereços IPv4 privados, como 1.0.0.0/8 e 2.0.0.0/8, que foram alocados para o pool IPv4 decrescente. O uso desses endereços é problemático e não é recomendado. Além disso, evite usar o 169.254.0.0/16, que, de acordo com a RFC 3927, é reservado para a configuração automática “Link-Local”. Ele não deve ser atribuído pelo DHCP ou definido manualmente e os roteadores não permitirão que os pacotes dessa sub-rede atravessem um domínio de broadcast específico. Há espaço de endereço suficiente reservado pelo RFC 1918, portanto, não há necessidade de desviar da lista mostrada no Espaço de Endereço IP Privado da tabela RFC 1918. Endereçamento incorreto resultará em falha de rede e deverá ser corrigido. Endereços IP PúblicosCom exceção das maiores redes, os endereços IP públicos são atribuídos por provedores de serviços de Internet. Redes que exigem centenas ou milhares de endereços IP públicos geralmente têm espaço de endereçamento atribuído diretamente de seu Registro Regional da Internet (RIR). Um RIR é uma organização que supervisiona a alocação e o registro de endereços IP públicos em regiões designadas do mundo. A maioria das conexões residenciais da Internet recebe um único endereço IPv4 público. A maioria das conexões de classe de negócios recebe vários endereços IP públicos. Um único endereço IP público é adequado em muitas circunstâncias e pode ser usado em conjunto com o NAT para conectar centenas de sistemas endereçados de forma privada à Internet. Este livro ajudará a determinar o número de endereços IP públicos necessários. A maioria das implantações IPv6 dará ao usuário final pelo menos uma rede de prefixo / 64 para usar como uma rede interna roteada. Para cada site, trata-se de aproximadamente 2^64 endereços IPv6, ou 18 quintilhões de endereços, totalmente roteados da Internet sem necessidade de NAT. Endereços Reservados e de DocumentaçãoAlém dos blocos definidos no RFC 1918, o RFC 5735 descreve blocos reservados para outros fins especiais, como documentação, teste e benchmarking. O RFC 6598 atualiza o RFC 5735 e define o espaço de endereço para o NAT de nível de operadora também. Essas redes especiais incluem: RFC 5735 Espaço de Endereços Reservado
Ao longo do livro, usamos exemplos com endereços dos intervalos de documentação acima, bem como redes RFC 1918, já que são mais familiares para os usuários. Alguns acham esses endereços tentadores de usar para VPNs ou até mesmo redes locais. Não podemos recomendar usá-los para outra finalidade que não seja a sua finalidade, mas eles são muito menos propensos a serem vistos “em estado selvagem” do que as redes RFC 1918. Índice
ObjetivoCom o esgotamento do IPv4 mundialmente, precisamos tomar algumas providências para que a Internet não pare. As que vejo de imediatas são: IPv6 e CGNAT (Carrier Grade NAT). O IPv6 é a real solução para os problemas de esgotamento e o CGNAT seria a "gambiarra" necessária para continuar com o IPv4 até que a Internet esteja 100% em IPv6. Nesse artigo será explicado como montar uma caixa CGNAT funcional para atender as necessidades básicas. O que será colocado abaixo, funciona muito bem aqui no nosso AS e nos permite avançar com o IPv6. No nosso exemplo as caixas PPPoE (B-RAS - Broadband Remote Access Server) não fazem NAT, pois o recurso de controlar estados de conexões e controles de NAT, consomem muito processamento e podem atrapalhar a performance da caixa PPPoE. Diagrama de exemploNo B-RAS é configurado um PBR (Policy Based Routing) onde apenas IPs do bloco 100.64.0.0/10 são roteados diretamente para a caixa CGNAT. Qualquer IPv4 público ou IPv6, são roteados diretamente para o Router/Firewall. Isso evita processamento e tráfego desnecessário na caixa de CGNAT. Através dessa manobra evitamos qualquer uso de stateful e NAT no B-RAS, aumentando a performance do mesmo. No diagrama ao lado a linha vermelha simboliza o tráfego do bloco 100.64.0.0/10 indo para o CGNAT. A linha amarela seria o tráfego já nateado e sendo roteado para o Router/Firewall. A linha verde é o tráfego mais limpo, sem "gambiarras" e o real objetivo que devemos seguir para uma Internet melhor. O Router/Firewall é um equipamento onde podemos inserir algumas regras de Firewall stateless para filtrar alguns pacotes indesejados como alguns tipos de spoofing, alguns pacotes UDP de certas portas usadas para ataques de amplificação, etc. Nunca! Jamais faça uso de regras stateful nesse nível de Firewall, pois determinados ataques podem estourar suas tabelas de controle de estados de conexões e derrubar todo o tráfego. O Router de Borda dispensa comentários não é mesmo? Vamos voltar para o conteúdo que realmente interessa. O objetivo deste artigo é exemplificar algumas configurações básicas e deixar para o leitor criar suas próprias ferramentas para facilitar a criação das regras que na maioria das vezes são em grande quantidade e inviável de se fazer manualmente. Algumas ferramentas de uso público serão comentadas e passadas as devidas referências. Dados técnicos do equipamento usado no exemplo
Dados técnicos do Sistema usado
Gráficos CGNAT em produçãoDescriçãoComo todo bom sistema não basta apenas instalar os programas e por um passe de mágica tudo funcionar como deveria. Estamos falando aqui de um sistema que se mal configurado, a caixa apresentará problemas de performance e você não conseguirá alcançar seu objetivo que é montar uma caixa CGNAT BBB (Bom Bonito e Barato). Para isso você vai precisar instalar um sistema Debian 9 64 bits e remover todos os serviços desnecessários. Faça uma instalação bem clean, Mantenha o serviço sshd rodando para que possa acessar remotamente e continuar configurando o equipamento. Lembre-se: serviços desnecessários rodando, poderão ser uma vulnerabilidade no futuro. O sistema aqui em produção gerencia um tráfego de CGNAT, em horário de pico, de 6Gbps e com bastante folga de recursos. Abaixo continuaremos com as configurações do sistema. CPU AffinityBalancear o tráfego das interfaces de rede em seus devidos cores é importantíssimo para o melhor aproveitamento do hardware. Essa configuração é um pouco mais complexa quando estamos trabalhando com arquitetura NUMA. Usando NUMA é importante verificar se a motherboard possui gerência de slots por CPU. Dessa forma você pode colocar uma interface de 10GbE em um slot gerenciado pela CPU0 e uma outra interface de 10GbE em outro slot gerenciado pela CPU1. Isso você pode procurar no manual técnico da motherboard. Para checar qual CPU é responsável pela sua interface de rede, use o comando abaixo substituindo <interface> pela interface desejada. Obs.: se o valor retornado for -1 sua motherboard não é boa pra CPU affinity. Os valores retornados para um equipamento com 2 CPUs deveriam ser 0 ou 1. Onde 0 seria CPU0 e 1, CPU1.
Para saber os cores relacionados à CPU podemos usar os seguintes comandos abaixo:
Um conjunto de ferramentas que costumo usar é o netutils-linux que pode ser encontrado aqui. Nele encontrará ferramentas para setar o cpu affinity, maximizar a frequência das CPUs e aumentar o buffer de rx das interfaces de rede. Variáveis /procVamos fazer alguns ajustes nas variáveis do /proc porque como o sistema vai utilizar o recurso de conntracks, precisamos mexer em alguns timeouts tcp/udp e outras variáveis. Isso faz parte do tuning para que o sistema fique mais leve e performático. Caso não façamos essas alterações, corremos o risco de estourar a tabela de conntracks e interromper os acessos.
Variáveis sysctlAgora temos umas poucas variáveis de sysctl para justar em /etc/sysctl.conf:
Ativando o BBR (TCP Congestion Control do Google)O Google desenvolveu um TCP Congestion Control que já está no kernel da distro Debian e pode ser facilmente habilitado. A finalidade é ter um melhor controle do congestionamento dos fluxos de TCP. Seria um substituto para o CUBIC e New Reno. Nas variáveis sysctl acima especificamos o BBR mas precisamo carregar o módulo do kernel antes de usá-lo. Basta adicionarmos o tcp_bbr em /etc/modules que o mesmo será carregado após o boot do sistema. Também adicionei o dummy que não tem nenhum relacionamento com o BBR, mas que será usado para criarmos as interfaces virtuais com os IPs públicos que serão usados no NAT. Existe também a possibilidade de não precisar do dummy se for trabalhar sem os IPs públicos nas interfaces virtuais e usarmos blackholes para se proteger dos static-loops.
Arquivos de configuração do SistemaOs arquivos de configurações do Sistema, são aqueles que usaremos para fazer algumas optimizações, levantar as interfaces de rede e carregar as regras de CGNAT propriamente ditas. Esses arquivos foram alterados para o nosso exemplo e são mais para dar uma ideia de como podem ser feitos. Cabe ao leitor decidir a melhor forma de implementar o que será colocado à seguir. O objetivo é fazer com que o sysadmin melhore e crie novas maneiras de se fazer o proposto nesse artigo. /etc/network/interfacesO /usr/local/bin/rx-buffers-increase é uma das ferramentas do netutils-linux, citado mais acima. A interface ens5f0 é a interface externa do CGNAT que fala com o Router/Firewall e a ens5f1, a interface interna do CGNAT que fala com o B-RAS. /etc/rc.localAs duas primeiras linhas desabilitam o TSO e LRO das interfaces. Segundo muitos docs que li é aconselhado para uma melhor performance em roteamento. O ganho não é absurdo mas ajuda. Em seguida é criado uma interface dummy0 com o IP público 192.0.0.0/32 que será usado para o CGNAT. Em casos reais são criados diversos IPs virtuais na dummy0 e nesse caso faz-se necessário criar um script para gerar em tempo de boot, todos os IPs que serão usados na caixa. Fica aqui como exercício de casa para se pensar. O rss-ladder é o programa que faz o cpu affinity citado acima. No exemplo acima estou setando todos os cores para as duas interfaces porque estou usando apenas uma Intel X520-SR2. O melhor seria uma interface recebendo o link externo entrante e trabalhando nos cores corretos, por exemplo, 0-5 e a outra interface X520-SR2 para o tráfego sainte nos cores 6-11. Mas lembre-se de checar quais cores estão gerenciando determinada interface de rede. Lembre-se da casadinha slot/cores. Primeiro você identifica por qual node a interface é gerenciada e depois quais cores pertencem à aquele node. Mostrei isso bem acima. O programa maximize-cpu-freq faz exatamente o que o nome sugere. Em seguida executo os scripts que criarão as regras de NAT. Mais à frente veremos ele. Fazemos as optimizações do /proc e criamos a rota de retorno do 100.64.0.0/27 de volta para o B-RAS (192.168.254.2). Se não quiser trabalhar com os IPs públicos nas interfaces virtuais dummy, basta substituir a linha "/sbin/ip addr add 192.0.0.0/32 dev dummy0 &> /dev/null" por "/sbin/ip route add blackhole 192.0.0.0/32" ou se houverem mais IPs, por exemplo, "/sbin/ip route add blackhole 192.0.0.0/27".Isso é para proteção contra static-loops, já que não teremos mais os IPs públicos carregados, e deve ser feito para todos os prefixos públicos usados na caixa CGNAT. Habilitando ALGsO ALG (Application Layer Gateway) é necessário para alguns serviços que apresentam problemas quando passando por NAT; eles precisam de um controle especial e se não forem ativados podem acontecer problemas com por exemplo: VPNs PPTP. Abaixo um exemplo de ALG PPTP: Adicione em /etc/sysctl.conf: net.netfilter.nf_conntrack_helper=1 Depois para carregar o sysctl: # sysctl -p Carregando módulos kernel 4.x: # modprobe nf_nat_proto_gre # modprobe nf_nat_pptp Carregando módulos kernel 5.x: # modprobe nf_nat_pptp Para que carreguem automaticamente no boot adicione as linhas em /etc/modules: nf_nat_proto_gre ===> somente em kernel 4.x nf_nat_pptp Scripts CGNATNesse ponto vamos criar nossas regras de NAT e finalmente dar forma ao objetivo do nosso artigo. Primeiro vamos entender o seguinte: o Netfilter/IPTables trabalha com first match wins ou seja, o pacote quando encontra a regra que se satisfaz, da match e descarta o restante das regras. Em uma caixa CGNAT vão existir muitas mas muitas regras. A nossa aqui por exemplo tem mais de 20.000 regras de NAT. Agora imagina um pacote ter que passar por essas 20.000 regras e só dar match lá no final. Isso vai causar um bom uso de processamento desnecessário e não queremos isso. Então para resolver esse problema usamos regras com chains específicas, assim reduzimos o processamento pois o pacote vai seguir as chains reduzidas e encontrar seu match rapidamente. Isso ficará mais claro com o exemplo mais à frente mas sugiro estudar Netfilter/IPTables para uma base melhor de entendimento. Com o lançamento do Debian Buster, o nf_tables passou à vir como padrão no lugar do antigo x_tables e aconselha-se à usá-lo pois será o novo sistema de Firewall adotado por todas as grandes distribuições Linux. Vamos criar um ambiente pro nosso artigo: crie um diretório /root/cgnat que é onde ficarão todos os scripts que usaremos abaixo: frw.sh - formato x_tablesfrw.sh - formato nf_tablesNão vamos entrar em detalhes sobre as regras em si porque isso já sairia muito do artigo. Mas reparem que são criados duas chains CGNATOUT e CGNATIN e todo tráfego que sair pela interface ens5f0 será direcionados para a CGNATOUT e o que entrar irá para a CGNATIN. Abaixo são criadas outras chains para confinar o bloco 100.64.0.0/27 e cada bloco deve ter sua chain de confinamento. Dentro dessa chain fazemos o CGNAT determinístico como pode ser visto abaixo: Abaixo as regras do cgnat-bras1.conf - formato x_tables/sbin/iptables -t nat -N CGNATOUT_0 /sbin/iptables -t nat -N CGNATIN_0 /sbin/iptables -t nat -F CGNATOUT_0 /sbin/iptables -t nat -F CGNATIN_0 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.0 -p tcp -j SNAT --to 192.0.0.0:1-2048 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.0 -p udp -j SNAT --to 192.0.0.0:1-2048 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 1:2048 -j DNAT --to 100.64.0.0 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 1:2048 -j DNAT --to 100.64.0.0 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.1 -p tcp -j SNAT --to 192.0.0.0:2049-4096 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.1 -p udp -j SNAT --to 192.0.0.0:2049-4096 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 2049:4096 -j DNAT --to 100.64.0.1 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 2049:4096 -j DNAT --to 100.64.0.1 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.2 -p tcp -j SNAT --to 192.0.0.0:4097-6144 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.2 -p udp -j SNAT --to 192.0.0.0:4097-6144 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 4097:6144 -j DNAT --to 100.64.0.2 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 4097:6144 -j DNAT --to 100.64.0.2 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.3 -p tcp -j SNAT --to 192.0.0.0:6145-8192 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.3 -p udp -j SNAT --to 192.0.0.0:6145-8192 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 6145:8192 -j DNAT --to 100.64.0.3 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 6145:8192 -j DNAT --to 100.64.0.3 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.4 -p tcp -j SNAT --to 192.0.0.0:8193-10240 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.4 -p udp -j SNAT --to 192.0.0.0:8193-10240 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 8193:10240 -j DNAT --to 100.64.0.4 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 8193:10240 -j DNAT --to 100.64.0.4 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.5 -p tcp -j SNAT --to 192.0.0.0:10241-12288 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.5 -p udp -j SNAT --to 192.0.0.0:10241-12288 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 10241:12288 -j DNAT --to 100.64.0.5 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 10241:12288 -j DNAT --to 100.64.0.5 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.6 -p tcp -j SNAT --to 192.0.0.0:12289-14336 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.6 -p udp -j SNAT --to 192.0.0.0:12289-14336 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 12289:14336 -j DNAT --to 100.64.0.6 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 12289:14336 -j DNAT --to 100.64.0.6 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.7 -p tcp -j SNAT --to 192.0.0.0:14337-16384 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.7 -p udp -j SNAT --to 192.0.0.0:14337-16384 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 14337:16384 -j DNAT --to 100.64.0.7 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 14337:16384 -j DNAT --to 100.64.0.7 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.8 -p tcp -j SNAT --to 192.0.0.0:16385-18432 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.8 -p udp -j SNAT --to 192.0.0.0:16385-18432 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 16385:18432 -j DNAT --to 100.64.0.8 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 16385:18432 -j DNAT --to 100.64.0.8 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.9 -p tcp -j SNAT --to 192.0.0.0:18433-20480 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.9 -p udp -j SNAT --to 192.0.0.0:18433-20480 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 18433:20480 -j DNAT --to 100.64.0.9 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 18433:20480 -j DNAT --to 100.64.0.9 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.10 -p tcp -j SNAT --to 192.0.0.0:20481-22528 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.10 -p udp -j SNAT --to 192.0.0.0:20481-22528 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 20481:22528 -j DNAT --to 100.64.0.10 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 20481:22528 -j DNAT --to 100.64.0.10 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.11 -p tcp -j SNAT --to 192.0.0.0:22529-24576 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.11 -p udp -j SNAT --to 192.0.0.0:22529-24576 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 22529:24576 -j DNAT --to 100.64.0.11 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 22529:24576 -j DNAT --to 100.64.0.11 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.12 -p tcp -j SNAT --to 192.0.0.0:24577-26624 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.12 -p udp -j SNAT --to 192.0.0.0:24577-26624 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 24577:26624 -j DNAT --to 100.64.0.12 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 24577:26624 -j DNAT --to 100.64.0.12 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.13 -p tcp -j SNAT --to 192.0.0.0:26625-28672 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.13 -p udp -j SNAT --to 192.0.0.0:26625-28672 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 26625:28672 -j DNAT --to 100.64.0.13 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 26625:28672 -j DNAT --to 100.64.0.13 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.14 -p tcp -j SNAT --to 192.0.0.0:28673-30720 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.14 -p udp -j SNAT --to 192.0.0.0:28673-30720 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 28673:30720 -j DNAT --to 100.64.0.14 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 28673:30720 -j DNAT --to 100.64.0.14 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.15 -p tcp -j SNAT --to 192.0.0.0:30721-32768 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.15 -p udp -j SNAT --to 192.0.0.0:30721-32768 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 30721:32768 -j DNAT --to 100.64.0.15 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 30721:32768 -j DNAT --to 100.64.0.15 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.16 -p tcp -j SNAT --to 192.0.0.0:32769-34816 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.16 -p udp -j SNAT --to 192.0.0.0:32769-34816 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 32769:34816 -j DNAT --to 100.64.0.16 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 32769:34816 -j DNAT --to 100.64.0.16 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.17 -p tcp -j SNAT --to 192.0.0.0:34817-36864 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.17 -p udp -j SNAT --to 192.0.0.0:34817-36864 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 34817:36864 -j DNAT --to 100.64.0.17 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 34817:36864 -j DNAT --to 100.64.0.17 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.18 -p tcp -j SNAT --to 192.0.0.0:36865-38912 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.18 -p udp -j SNAT --to 192.0.0.0:36865-38912 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 36865:38912 -j DNAT --to 100.64.0.18 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 36865:38912 -j DNAT --to 100.64.0.18 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.19 -p tcp -j SNAT --to 192.0.0.0:38913-40960 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.19 -p udp -j SNAT --to 192.0.0.0:38913-40960 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 38913:40960 -j DNAT --to 100.64.0.19 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 38913:40960 -j DNAT --to 100.64.0.19 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.20 -p tcp -j SNAT --to 192.0.0.0:40961-43008 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.20 -p udp -j SNAT --to 192.0.0.0:40961-43008 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 40961:43008 -j DNAT --to 100.64.0.20 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 40961:43008 -j DNAT --to 100.64.0.20 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.21 -p tcp -j SNAT --to 192.0.0.0:43009-45056 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.21 -p udp -j SNAT --to 192.0.0.0:43009-45056 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 43009:45056 -j DNAT --to 100.64.0.21 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 43009:45056 -j DNAT --to 100.64.0.21 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.22 -p tcp -j SNAT --to 192.0.0.0:45057-47104 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.22 -p udp -j SNAT --to 192.0.0.0:45057-47104 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 45057:47104 -j DNAT --to 100.64.0.22 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 45057:47104 -j DNAT --to 100.64.0.22 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.23 -p tcp -j SNAT --to 192.0.0.0:47105-49152 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.23 -p udp -j SNAT --to 192.0.0.0:47105-49152 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 47105:49152 -j DNAT --to 100.64.0.23 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 47105:49152 -j DNAT --to 100.64.0.23 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.24 -p tcp -j SNAT --to 192.0.0.0:49153-51200 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.24 -p udp -j SNAT --to 192.0.0.0:49153-51200 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 49153:51200 -j DNAT --to 100.64.0.24 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 49153:51200 -j DNAT --to 100.64.0.24 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.25 -p tcp -j SNAT --to 192.0.0.0:51201-53248 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.25 -p udp -j SNAT --to 192.0.0.0:51201-53248 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 51201:53248 -j DNAT --to 100.64.0.25 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 51201:53248 -j DNAT --to 100.64.0.25 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.26 -p tcp -j SNAT --to 192.0.0.0:53249-55296 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.26 -p udp -j SNAT --to 192.0.0.0:53249-55296 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 53249:55296 -j DNAT --to 100.64.0.26 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 53249:55296 -j DNAT --to 100.64.0.26 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.27 -p tcp -j SNAT --to 192.0.0.0:55297-57344 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.27 -p udp -j SNAT --to 192.0.0.0:55297-57344 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 55297:57344 -j DNAT --to 100.64.0.27 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 55297:57344 -j DNAT --to 100.64.0.27 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.28 -p tcp -j SNAT --to 192.0.0.0:57345-59392 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.28 -p udp -j SNAT --to 192.0.0.0:57345-59392 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 57345:59392 -j DNAT --to 100.64.0.28 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 57345:59392 -j DNAT --to 100.64.0.28 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.29 -p tcp -j SNAT --to 192.0.0.0:59393-61440 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.29 -p udp -j SNAT --to 192.0.0.0:59393-61440 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 59393:61440 -j DNAT --to 100.64.0.29 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 59393:61440 -j DNAT --to 100.64.0.29 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.30 -p tcp -j SNAT --to 192.0.0.0:61441-63488 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.30 -p udp -j SNAT --to 192.0.0.0:61441-63488 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 61441:63488 -j DNAT --to 100.64.0.30 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 61441:63488 -j DNAT --to 100.64.0.30 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.31 -p tcp -j SNAT --to 192.0.0.0:63489-65535 /sbin/iptables -t nat -A CGNATOUT_0 -s 100.64.0.31 -p udp -j SNAT --to 192.0.0.0:63489-65535 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p tcp --dport 63489:65535 -j DNAT --to 100.64.0.31 /sbin/iptables -t nat -A CGNATIN_0 -d 192.0.0.0 -p udp --dport 63489:65535 -j DNAT --to 100.64.0.31 /sbin/iptables -t nat -A CGNATOUT_0 -j SNAT --to 192.0.0.0 /sbin/iptables -t nat -A CGNATOUT -s 100.64.0.0/27 -j CGNATOUT_0 /sbin/iptables -t nat -A CGNATIN -d 192.0.0.0/32 -j CGNATIN_0 Abaixo as regras do cgnat-bras1.conf - formato nf_tablesadd chain ip nat CGNATOUT_0 add chain ip nat CGNATIN_0 flush chain ip nat CGNATOUT_0 flush chain ip nat CGNATIN_0 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.0 counter snat to 192.0.0.0:1-2048 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.0 counter snat to 192.0.0.0:1-2048 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 1-2048 counter dnat to 100.64.0.0 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 1-2048 counter dnat to 100.64.0.0 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.1 counter snat to 192.0.0.0:2049-4096 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.1 counter snat to 192.0.0.0:2049-4096 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 2049-4096 counter dnat to 100.64.0.1 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 2049-4096 counter dnat to 100.64.0.1 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.2 counter snat to 192.0.0.0:4097-6144 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.2 counter snat to 192.0.0.0:4097-6144 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 4097-6144 counter dnat to 100.64.0.2 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 4097-6144 counter dnat to 100.64.0.2 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.3 counter snat to 192.0.0.0:6145-8192 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.3 counter snat to 192.0.0.0:6145-8192 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 6145-8192 counter dnat to 100.64.0.3 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 6145-8192 counter dnat to 100.64.0.3 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.4 counter snat to 192.0.0.0:8193-10240 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.4 counter snat to 192.0.0.0:8193-10240 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 8193-10240 counter dnat to 100.64.0.4 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 8193-10240 counter dnat to 100.64.0.4 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.5 counter snat to 192.0.0.0:10241-12288 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.5 counter snat to 192.0.0.0:10241-12288 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 10241-12288 counter dnat to 100.64.0.5 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 10241-12288 counter dnat to 100.64.0.5 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.6 counter snat to 192.0.0.0:12289-14336 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.6 counter snat to 192.0.0.0:12289-14336 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 12289-14336 counter dnat to 100.64.0.6 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 12289-14336 counter dnat to 100.64.0.6 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.7 counter snat to 192.0.0.0:14337-16384 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.7 counter snat to 192.0.0.0:14337-16384 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 14337-16384 counter dnat to 100.64.0.7 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 14337-16384 counter dnat to 100.64.0.7 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.8 counter snat to 192.0.0.0:16385-18432 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.8 counter snat to 192.0.0.0:16385-18432 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 16385-18432 counter dnat to 100.64.0.8 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 16385-18432 counter dnat to 100.64.0.8 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.9 counter snat to 192.0.0.0:18433-20480 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.9 counter snat to 192.0.0.0:18433-20480 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 18433-20480 counter dnat to 100.64.0.9 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 18433-20480 counter dnat to 100.64.0.9 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.10 counter snat to 192.0.0.0:20481-22528 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.10 counter snat to 192.0.0.0:20481-22528 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 20481-22528 counter dnat to 100.64.0.10 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 20481-22528 counter dnat to 100.64.0.10 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.11 counter snat to 192.0.0.0:22529-24576 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.11 counter snat to 192.0.0.0:22529-24576 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 22529-24576 counter dnat to 100.64.0.11 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 22529-24576 counter dnat to 100.64.0.11 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.12 counter snat to 192.0.0.0:24577-26624 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.12 counter snat to 192.0.0.0:24577-26624 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 24577-26624 counter dnat to 100.64.0.12 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 24577-26624 counter dnat to 100.64.0.12 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.13 counter snat to 192.0.0.0:26625-28672 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.13 counter snat to 192.0.0.0:26625-28672 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 26625-28672 counter dnat to 100.64.0.13 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 26625-28672 counter dnat to 100.64.0.13 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.14 counter snat to 192.0.0.0:28673-30720 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.14 counter snat to 192.0.0.0:28673-30720 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 28673-30720 counter dnat to 100.64.0.14 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 28673-30720 counter dnat to 100.64.0.14 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.15 counter snat to 192.0.0.0:30721-32768 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.15 counter snat to 192.0.0.0:30721-32768 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 30721-32768 counter dnat to 100.64.0.15 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 30721-32768 counter dnat to 100.64.0.15 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.16 counter snat to 192.0.0.0:32769-34816 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.16 counter snat to 192.0.0.0:32769-34816 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 32769-34816 counter dnat to 100.64.0.16 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 32769-34816 counter dnat to 100.64.0.16 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.17 counter snat to 192.0.0.0:34817-36864 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.17 counter snat to 192.0.0.0:34817-36864 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 34817-36864 counter dnat to 100.64.0.17 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 34817-36864 counter dnat to 100.64.0.17 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.18 counter snat to 192.0.0.0:36865-38912 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.18 counter snat to 192.0.0.0:36865-38912 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 36865-38912 counter dnat to 100.64.0.18 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 36865-38912 counter dnat to 100.64.0.18 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.19 counter snat to 192.0.0.0:38913-40960 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.19 counter snat to 192.0.0.0:38913-40960 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 38913-40960 counter dnat to 100.64.0.19 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 38913-40960 counter dnat to 100.64.0.19 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.20 counter snat to 192.0.0.0:40961-43008 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.20 counter snat to 192.0.0.0:40961-43008 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 40961-43008 counter dnat to 100.64.0.20 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 40961-43008 counter dnat to 100.64.0.20 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.21 counter snat to 192.0.0.0:43009-45056 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.21 counter snat to 192.0.0.0:43009-45056 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 43009-45056 counter dnat to 100.64.0.21 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 43009-45056 counter dnat to 100.64.0.21 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.22 counter snat to 192.0.0.0:45057-47104 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.22 counter snat to 192.0.0.0:45057-47104 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 45057-47104 counter dnat to 100.64.0.22 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 45057-47104 counter dnat to 100.64.0.22 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.23 counter snat to 192.0.0.0:47105-49152 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.23 counter snat to 192.0.0.0:47105-49152 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 47105-49152 counter dnat to 100.64.0.23 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 47105-49152 counter dnat to 100.64.0.23 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.24 counter snat to 192.0.0.0:49153-51200 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.24 counter snat to 192.0.0.0:49153-51200 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 49153-51200 counter dnat to 100.64.0.24 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 49153-51200 counter dnat to 100.64.0.24 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.25 counter snat to 192.0.0.0:51201-53248 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.25 counter snat to 192.0.0.0:51201-53248 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 51201-53248 counter dnat to 100.64.0.25 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 51201-53248 counter dnat to 100.64.0.25 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.26 counter snat to 192.0.0.0:53249-55296 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.26 counter snat to 192.0.0.0:53249-55296 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 53249-55296 counter dnat to 100.64.0.26 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 53249-55296 counter dnat to 100.64.0.26 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.27 counter snat to 192.0.0.0:55297-57344 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.27 counter snat to 192.0.0.0:55297-57344 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 55297-57344 counter dnat to 100.64.0.27 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 55297-57344 counter dnat to 100.64.0.27 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.28 counter snat to 192.0.0.0:57345-59392 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.28 counter snat to 192.0.0.0:57345-59392 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 57345-59392 counter dnat to 100.64.0.28 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 57345-59392 counter dnat to 100.64.0.28 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.29 counter snat to 192.0.0.0:59393-61440 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.29 counter snat to 192.0.0.0:59393-61440 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 59393-61440 counter dnat to 100.64.0.29 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 59393-61440 counter dnat to 100.64.0.29 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.30 counter snat to 192.0.0.0:61441-63488 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.30 counter snat to 192.0.0.0:61441-63488 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 61441-63488 counter dnat to 100.64.0.30 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 61441-63488 counter dnat to 100.64.0.30 add rule ip nat CGNATOUT_0 ip protocol tcp ip saddr 100.64.0.31 counter snat to 192.0.0.0:63489-65535 add rule ip nat CGNATOUT_0 ip protocol udp ip saddr 100.64.0.31 counter snat to 192.0.0.0:63489-65535 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 tcp dport 63489-65535 counter dnat to 100.64.0.31 add rule ip nat CGNATIN_0 ip daddr 192.0.0.0 udp dport 63489-65535 counter dnat to 100.64.0.31 add rule ip nat CGNATOUT_0 counter snat to 192.0.0.0 add rule ip nat CGNATOUT ip saddr 100.64.0.0/27 counter jump CGNATOUT_0 add rule ip nat CGNATIN ip daddr 192.0.0.0/32 counter jump CGNATIN_0 As duas regras em negrito acima, fazem o redirecionamento do tráfego para a chain correta, dessa forma evita que um pacote percorra todas as regras buscando um match. Essa é mágica que deixa o sistema bem leve. Bem espero que esse artigo seja útil e ajude ao máximo. O objetivo era mostrar, dar uma ideia e agora fica com vocês a tarefa de desenvolver o script que vai facilitar a criação de todas as regras. Porque o que foi mostrado é apenas um /27 saindo com um IP público e todos sabemos que no mundo real isso é um grão de areia. Fica o restante como dever de casa mas posso dizer que esse ambiente existe e funciona muito bem pro nosso AS. Live que fiz sobre CGNAT com NFTables: https://www.youtube.com/watch?v=5uOFtkplDts PDF da Live CGNAT com NFTables: https://debianbrasil.gitlab.io/FiqueEmCasaUseDebian/arquivos/2020-06-03-cgnat-com-nftables.pdf Qualquer dúvida sobre o artigo só me procurar: Autor: Marcelo Gondim Qual a faixa de IP para CGNAT?Rede CGNAT: um bloco de IP de CGNAT dentro da rede 100.64.0.0/10 que será utilizado para o acesso dos clientes.
O que é IPv4 CGNAT?Afinal, o que é CGNAT? O Carrier Grade NAT, conhecido também pela sigla CGNAT, é uma tecnologia de grande porte criada para ajudar os procedimentos das operadoras de telecomunicações que se encontram em estado crítico devido à indisponibilidade de endereços IPv4.
Como saber se meu IP está em NAT?Acesse o site meuip.com.br para obter o endereço IP publicado. Compare o endereço IP externo obtido no roteador com o IP obtido no site: Se os IPs forem diferentes sua rede é CGNAT.
|