Compilar com pouca memória RAM

Para compilar em c++ e evitar os erros de memoria excedida segue esta dica:

System wide C++ change on Ubuntu:

sudo apt-get install clang
sudo update-alternatives --config c++

Will print something like this:

  Selection    Path              Priority   Status
------------------------------------------------------------
* 0            /usr/bin/g++       20        auto mode
  1            /usr/bin/clang++   10        manual mode
  2            /usr/bin/g++       20        manual mode

Then just select clang++.

 

me salvou ;)
fonte: https://stackoverflow.com/questions/7031126/switching-between-gcc-and-clang-llvm-using-cmake

por int21 Postado em Linux

CGNAT na pratica

  • 1 Objetivo
  • 2 Diagrama de exemplo
  • 3 Dados técnicos do equipamento usado no exemplo
  • 4 Dados técnicos do Sistema usado
  • 5 Gráficos CGNAT em produção
  • 6 Descrição
  • 7 CPU Affinity
  • 8 Variáveis /proc
  • 9 Variáveis sysctl
  • 10 Ativando o BBR (TCP Congestion Control do Google)
  • 11 Arquivos de configuração do Sistema
    • 11.1 /etc/network/interfaces
    • 11.2 /etc/rc.local
  • 12 Scripts CGNAT
    • 12.1 frw.sh – formato x_tables
    • 12.2 frw.sh – formato nf_tables
    • 12.3 Abaixo as regras do cgnat-bras1.conf – formato x_tables
    • 12.4Abaixo as regras do cgnat-bras1.conf – formato nf_tables

Objetivo

Com 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 exemplo

Diagrama exemplo do CGNAT.png

No 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

  • Intel Dual Xeon E5-2630 v2 @ 3.1GHz.
  • 16Gb de RAM.
  • 2 interfaces Intel X520-SR2 (2 portas ópticas de 10GbE).
  • 1 SSD 120Gb.

Dados técnicos do Sistema usado

  • Debian 9 (stretch) 64 bits.
  • kernel 4.19 (backports do Debian).
  • Netfilter/IPTables.

Gráficos CGNAT em produção

Zabbix cgnat.png

Bmon.png

Htop.png

Descrição

Como 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 Affinity

Balancear 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.

# cat /sys/class/net/<interface>/device/numa_node

Para saber os cores relacionados à CPU podemos usar os seguintes comandos abaixo:

# cat /sys/devices/system/node/node0/cpulist

0-5

# cat /sys/devices/system/node/node1/cpulist

6-11

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 /proc

Vamos 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.

echo 5 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_syn_sent

echo 5 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_syn_recv

echo 300 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established

echo 10 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_fin_wait

echo 10 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_close_wait

echo 10 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_last_ack

echo 10 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_time_wait

echo 10 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_close

echo 3 > /proc/sys/net/netfilter/nf_conntrack_tcp_max_retrans

echo 300 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_unacknowledged

echo 10 > /proc/sys/net/netfilter/nf_conntrack_udp_timeout

echo 180 > /proc/sys/net/netfilter/nf_conntrack_udp_timeout_stream

echo 10 > /proc/sys/net/netfilter/nf_conntrack_icmp_timeout

echo 600 > /proc/sys/net/netfilter/nf_conntrack_generic_timeout

Variáveis sysctl

Agora temos umas poucas variáveis de sysctl para justar em /etc/sysctl.conf:

net.core.default_qdisc=fq

net.ipv4.tcp_congestion_control=bbr

net.core.rmem_max = 2147483647

net.core.wmem_max = 2147483647

net.ipv4.tcp_rmem = 4096 87380 2147483647

net.ipv4.tcp_wmem = 4096 65536 2147483647

net.ipv4.conf.all.forwarding=1

net.ipv6.conf.all.forwarding=1

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.

tcp_bbr

dummy

Arquivos de configuração do Sistema

Os 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/interfaces

Interfaces.png

O /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.local

Rc local.png

As 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.

Scripts CGNAT

Nesse 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_tables

Frw.png

frw.sh – formato nf_tables

Cgnat nft2.png

Nã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_tables

add 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.

Qualquer dúvida sobre o artigo só me procurar:

Autor: Marcelo Gondim

Ps.: Marcelo Godim foi uma das primeiras pessoas que me influenciaram com sua visão tecnica, me lembro que quando começamos a trabalhar com caches, thundercache, desenvolvi o thunder media center que pegava os conteúdos do thundercache (versão open ainda) e transformava numa sala de entretenimento pelo que o pessoal ja assistira, minha primeira experiência com tproxy e a explicação afinada veio de matéria do Godim, que depois pude ter o prazer de fazer parte de um mesmo grupo de telegram que ele participava e sempre muito receptivo e disposto a ajudar.

Meu muito obrigado ao Marcelo, faço esta menção honrosa  pois me ajudou muito na caminhada.

 

30 exemplos de comandos para administradores de rede

NMAP É uma ferramenta de segurança de código aberto para exploração de rede, varredura de segurança e auditoria. No entanto, o nmap vem com muitas opções que podem tornar o utilitário mais robusto e difícil de seguir para novos usuários.

O objetivo deste post é a introdução de um usuário para a ferramenta de linha de comando nmap para escanear um host e/ou rede, de modo a descobrir os possíveis pontos vulneráveis das maquinas. Você também vai aprender a usar o Nmap para fins ofensivos e defensivos.

Configuração de exemplo (LAB)

Varredura de portas pode ser ilegal em algumas países. Assim é mais pratico configurar um laboratório como o exemplo abaixo:

                          +---------+
    +---------+           | Network |         +--------+
    | server1 |-----------+ swtich  +---------|server2 |
    +---------+           | (sw0)   |         +--------+
                          +----+----+
                               |
                               |
                     +---------+----------+
                     | wks01 Linux/OSX    |
                     +--------------------+

#1: Scan de um host ou um endereço (IPv4)

Scan em um único endereço

nmap 192.168.1.1

Scan em um host pelo nome

nmap server1.cyberciti.biz

Scan em um host pelo nome e obtendo mais informações

nmap -v server1.cyberciti.biz

Exemplos de saída:
Fig.01: nmap outputFig.01: nmap output

#2: Scan múltiplos endereços ou sub-redes (IPv4)

nmap 192.168.1.1 192.168.1.2 192.168.1.3

Scan na mesma sub-rede i.e. 192.168.1.0/24

nmap 192.168.1.1,2,3

Scan no range de endereços:

nmap 192.168.1.1-20

Scan usando caracteres coringas:

nmap 192.168.1.*

Scan em uma sub-rede inteira:

nmap 192.168.1.0/24

#3: Lendo uma lista de redes ou hosts em um arquivo (IPv4)

É possível fazer um scan utilizando uma lista com endereços de hosts ou redes, isso é ultil quando precisamos scannear uma rede muito grande ou varios hosts, para isso crie um arquivo de acordo com o padrão abaixo:
cat > /tmp/test.txt

Exemplo de saída:

server1.cyberciti.biz
192.168.1.0/24
192.168.1.1/24
10.1.2.3
localhost

Fazendo o scan:

nmap -iL /tmp/test.txt

#4: Excluindo hosts ou sub-redes (IPv4)

Ao fazer um scan em uma grande sub-rede você pode excluir um ou vários hosts.

nmap 192.168.1.0/24 –exclude 192.168.1.5
nmap 192.168.1.0/24 –exclude 192.168.1.5,192.168.1.254

Ou excluir em uma lista /tmp/exclude.txt

nmap -iL /tmp/scanlist.txt –excludefile /tmp/exclude.txt

#5: Detectando o versão do sistema operacional (IPv4)

nmap -A 192.168.1.254
nmap -v -A 192.168.1.1
nmap -A -iL /tmp/scanlist.txt

#6: Descubra se o alvo é protegido por um firewall

nmap -sA 192.168.1.254
nmap -sA server1.cyberciti.biz

#7: Scan quando o host é protegido por um firewall

nmap -PN 192.168.1.1
nmap -PN server1.cyberciti.biz

#8: Scan em rede IPv6

A opção -6 ativa a opção de ipv6 a sua sintaxe é:

nmap -6 IPv6-Address-Here
nmap -6 server1.cyberciti.biz
nmap -6 2607:f0d0:1002:51::4
nmap -v A -6 2607:f0d0:1002:51::4

#9: Scan para descobrir quais servidores e dispositivos estão funcionando

nmap -sP 192.168.1.0/24

Exemplo de saída:

Host 192.168.1.1 is up (0.00035s latency).
MAC Address: BC:AE:C5:C3:16:93 (Unknown)
Host 192.168.1.2 is up (0.0038s latency).
MAC Address: 74:44:01:40:57:FB (Unknown)
Host 192.168.1.5 is up.
Host nas03 (192.168.1.12) is up (0.0091s latency).
MAC Address: 00:11:32:11:15:FC (Synology Incorporated)
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.80 second

#10: Executa uma verificação rápida

nmap -F 192.168.1.1

#11: Mostra a razão da porta estar em determinado estado

nmap –reason 192.168.1.1
nmap –reason server1.cyberciti.biz

#12: Mostra apenas portas abertas (ou possivelmente abertas)

nmap –open 192.168.1.1
nmap –open server1.cyberciti.biz

#13: Mostra todos os pacotes enviados e recebidos

nmap –packet-trace 192.168.1.1
nmap –packet-trace server1.cyberciti.biz

14#: Mostra interface e rotas dos hosts

Isso é útil para detecção de problemas na rede

nmap –iflist

Exemplo de saída:

Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 02:01 IST
************************INTERFACES************************
DEV (SHORT) IP/MASK TYPE UP MAC
lo (lo) 127.0.0.1/8 loopback up
eth0 (eth0) 192.168.1.5/24 ethernet up B8:AC:6F:65:31:E5
vmnet1 (vmnet1) 192.168.121.1/24 ethernet up 00:50:56:C0:00:01
vmnet8 (vmnet8) 192.168.179.1/24 ethernet up 00:50:56:C0:00:08
ppp0 (ppp0) 10.1.19.69/32 point2point up

**************************ROUTES**************************
DST/MASK DEV GATEWAY
10.0.31.178/32 ppp0
209.133.67.35/32 eth0 192.168.1.2
192.168.1.0/0 eth0
192.168.121.0/0 vmnet1
192.168.179.0/0 vmnet8
169.254.0.0/0 eth0
10.0.0.0/0 ppp0
0.0.0.0/0 eth0 192.168.1.2

#15: Especificar uma porta

map -p [port] hostName

Scan na porta 80

nmap -p 80 192.168.1.1

Scan TCP na porta 80

nmap -p T:80 192.168.1.1

Scan UDP na porta 53

nmap -p U:53 192.168.1.1

Scan two nas portas

nmap -p 80,443 192.168.1.1

Scan port ranges

nmap -p 80-200 192.168.1.1

Combinar várias opções

nmap -p U:53,111,137,T:21-25,80,139,8080 192.168.1.1
nmap -p U:53,111,137,T:21-25,80,139,8080 server1.cyberciti.biz
nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 192.168.1.254

Scan todas as portas usando coringas

nmap -p “*” 192.168.1.1

Scan de portas mais comuns

nmap –top-ports 5 192.168.1.1
nmap –top-ports 10 192.168.1.1

Exemplo de saída:

Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:23 IST
Interesting ports on 192.168.1.1:
PORT STATE SERVICE
21/tcp closed ftp
22/tcp open ssh
23/tcp closed telnet
25/tcp closed smtp
80/tcp open http
110/tcp closed pop3
139/tcp closed netbios-ssn
443/tcp closed https
445/tcp closed microsoft-ds
3389/tcp closed ms-term-serv
MAC Address: BC:AE:C5:C3:16:93 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.51 seconds

#16: A maneira mais rápida de descobrir todas as portas e computadores em uma rede

nmap -T5 192.168.1.0/24

#17: Detectando um sistema operacional remoto

nmap -O 192.168.1.1
nmap -O –osscan-guess 192.168.1.1
nmap -v -O –osscan-guess 192.168.1.1

Exemplo de saída:

Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:29 IST
NSE: Loaded 0 scripts for scanning.
Initiating ARP Ping Scan at 01:29
Scanning 192.168.1.1 [1 port]
Completed ARP Ping Scan at 01:29, 0.01s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 01:29
Completed Parallel DNS resolution of 1 host. at 01:29, 0.22s elapsed
Initiating SYN Stealth Scan at 01:29
Scanning 192.168.1.1 [1000 ports]
Discovered open port 80/tcp on 192.168.1.1
Discovered open port 22/tcp on 192.168.1.1
Completed SYN Stealth Scan at 01:29, 0.16s elapsed (1000 total ports)
Initiating OS detection (try #1) against 192.168.1.1
Retrying OS detection (try #2) against 192.168.1.1
Retrying OS detection (try #3) against 192.168.1.1
Retrying OS detection (try #4) against 192.168.1.1
Retrying OS detection (try #5) against 192.168.1.1
Host 192.168.1.1 is up (0.00049s latency).
Interesting ports on 192.168.1.1:
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
MAC Address: BC:AE:C5:C3:16:93 (Unknown)
Device type: WAP|general purpose|router|printer|broadband router
Running (JUST GUESSING) : Linksys Linux 2.4.X (95%), Linux 2.4.X|2.6.X (94%), MikroTik RouterOS 3.X (92%), Lexmark embedded (90%), Enterasys embedded (89%), D-Link Linux 2.4.X (89%), Netgear Linux 2.4.X (89%)
Aggressive OS guesses: OpenWrt White Russian 0.9 (Linux 2.4.30) (95%), OpenWrt 0.9 – 7.09 (Linux 2.4.30 – 2.4.34) (94%), OpenWrt Kamikaze 7.09 (Linux 2.6.22) (94%), Linux 2.4.21 – 2.4.31 (likely embedded) (92%), Linux 2.6.15 – 2.6.23 (embedded) (92%), Linux 2.6.15 – 2.6.24 (92%), MikroTik RouterOS 3.0beta5 (92%), MikroTik RouterOS 3.17 (92%), Linux 2.6.24 (91%), Linux 2.6.22 (90%)
No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=5.00%D=11/27%OT=22%CT=1%CU=30609%PV=Y%DS=1%G=Y%M=BCAEC5%TM=50B3CA
OS:4B%P=x86_64-unknown-linux-gnu)SEQ(SP=C8%GCD=1%ISR=CB%TI=Z%CI=Z%II=I%TS=7
OS:)OPS(O1=M2300ST11NW2%O2=M2300ST11NW2%O3=M2300NNT11NW2%O4=M2300ST11NW2%O5
OS:=M2300ST11NW2%O6=M2300ST11)WIN(W1=45E8%W2=45E8%W3=45E8%W4=45E8%W5=45E8%W
OS:6=45E8)ECN(R=Y%DF=Y%T=40%W=4600%O=M2300NNSNW2%CC=N%Q=)T1(R=Y%DF=Y%T=40%S
OS:=O%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%R
OS:D=0%Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=
OS:0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=N)U1(R=Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID
OS:=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Uptime guess: 12.990 days (since Wed Nov 14 01:44:40 2012)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=200 (Good luck!)
IP ID Sequence Generation: All zeros
Read data files from: /usr/share/nmap
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.38 seconds
Raw packets sent: 1126 (53.832KB) | Rcvd: 1066 (46.100KB)

#18: Detectando serviços remotos e sua versão

nmap -sV 192.168.1.1

Exemplo de saída:

Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:34 IST
Interesting ports on 192.168.1.1:
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh Dropbear sshd 0.52 (protocol 2.0)
80/tcp open http?
1 service unrecognized despite returning data.

#19: Scan de host usando TCP ACK (PA) e TCP Syn (PS) ping

Caso o firewall esteja bloqueando os pings tente os seguintes comandos:

nmap -PS 192.168.1.1
nmap -PS 80,21,443 192.168.1.1
nmap -PA 192.168.1.1
nmap -PA 80,21,200-512 192.168.1.1

#20: Scan em host usando ping

nmap -PO 192.168.1.1

#21: Scan a host usando UDP ping

nmap -PU 192.168.1.1
nmap -PU 2000.2001 192.168.1.1

#22: Descubra as portas mais utilizadas usando TCP SYN

scan

nmap -sS 192.168.1.1

Portas mais utilizadas utilizando TCP connect

nmap -sT 192.168.1.1

Portas mais usadas utilizando TCP ACK

nmap -sA 192.168.1.1

Portas mais usadas utilizando TCP window

nmap -sW 192.168.1.1

Portas mais usadas utilizando TCP Maimon

nmap -sM 192.168.1.1

#23: Scan de host utilizando serviços UDP (UDP scan)

Serviços mais comuns utilizando protocolo UDP

nmap -sU nas03
nmap -sU 192.168.1.1

Exemplo de saída:

Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 00:52 IST
Stats: 0:05:29 elapsed; 0 hosts completed (1 up), 1 undergoing UDP Scan
UDP Scan Timing: About 32.49% done; ETC: 01:09 (0:11:26 remaining)
Interesting ports on nas03 (192.168.1.12):
Not shown: 995 closed ports
PORT STATE SERVICE
111/udp open|filtered rpcbind
123/udp open|filtered ntp
161/udp open|filtered snmp
2049/udp open|filtered nfs
5353/udp open|filtered zeroconf
MAC Address: 00:11:32:11:15:FC (Synology Incorporated)

Nmap done: 1 IP address (1 host up) scanned in 1099.55 seconds

#24: Scan pelo protocolo IP

Este tipo de scan você pode determinar qual o tipo de protocolo ip deseja (TCP, ICMP, IGMP, etc.)

nmap -sO 192.168.1.1

#25: Scan de firewall com falha de segurança

Os seguintes tipos de verificação explorar uma brecha sutil no TCP, é bom para testar a segurança de ataques comuns:

TCP Null engana o firewall para obter uma resposta

nmap -sN 192.168.1.254

TCP Fin varredura no firewall

nmap -sF 192.168.1.254

TCP Xmas varredura no firewall

#26: Scan de firewall com fragmentos de pacotes

nmap -f 192.168.1.1
nmap -f fw2.nixcraft.net.in
nmap -f 15 fw2.nixcraft.net.in

Set your own offset size with the –mtu option

nmap –mtu 32 192.168.1.1

#27: Scan decoys (camufla o ip)

nmap -n -Ddecoy-ip1,decoy-ip2,your-own-ip,decoy-ip3,decoy-ip4 remote-host-ip
nmap -n -D192.168.1.5,10.5.1.2,172.1.2.4,3.4.2.1 192.168.1.5

#28: Scan de firewall com MAC spoofing

Spoof de MAC address

nmap –spoof-mac MAC-ADDRESS-HERE 192.168.1.1

Adiciona outras opções

nmap -v -sT -PN –spoof-mac MAC-ADDRESS-HERE 192.168.1.1

Use um MAC randômico

O número 0 faz com que o nmap escolha aleatoriamente

nmap -v -sT -PN –spoof-mac 0 192.168.1.1

#29: Salvando a saída em um arquivo de texto

nmap 192.168.1.1 > output.txt
nmap -oN /path/to/filename 192.168.1.1
nmap -oN output.txt 192.168.1.1

#30: Instalando nmap em modo gráfico?

Instalando utilizando o comando apt-get:

$ sudo apt-get install zenmap

Exemplo da saída:

[sudo] password for vivek:
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following NEW packages will be installed:
zenmap
0 upgraded, 1 newly installed, 0 to remove and 11 not upgraded.
Need to get 616 kB of archives.
After this operation, 1,827 kB of additional disk space will be used.
Get:1 http://debian.osuosl.org/debian/ squeeze/main zenmap amd64 5.00-3 [616 kB]
Fetched 616 kB in 3s (199 kB/s)
Selecting previously deselected package zenmap.
(Reading database … 281105 files and directories currently installed.)
Unpacking zenmap (from …/zenmap_5.00-3_amd64.deb) …
Processing triggers for desktop-file-utils …
Processing triggers for gnome-menus …
Processing triggers for man-db …
Setting up zenmap (5.00-3) …
Processing triggers for python-central …

Inicializando o nmap em modo gráfico:

$ sudo zenmap

Nmap em modo gráfico:

Artigo original: http://www.cyberciti.biz

Capturar IP de um determinado país II

Ola pessoal, achei outro local bastante interessante pra pegar o bloco de ips para facilitar nossa vida.

http://www.ipdeny.com/ipblocks/data/countries/cn.zone

Troque o cn.zone pelo país que vc quer, exemplo para brazil, use br.zone

Já para pegar o bloco de um determinado serviço, tipo FACEBOOK (claro que vc vai pegra os ASN antes né)

whois -h whois.radb.net -- '-i origin AS32934' | awk '/^route:/ {print $2;}' | sort | uniq

Fica a dica!

Capturar Ips do bloco Brasil

Hoje estava fazendo uma implementação de um sistema e me deparei com tanta tentativa de spamers e robos que fiquei besta.
Percebi que que as solicitações não eram nacionais, dai a ideia de pegar os ips do bloco brasil, segue a solução via terminal (em linux ok).

wget ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest  -O IpsBR.txt
cat IpsBR.txt | /bin/grep ipv4 | /bin/grep BR | /usr/bin/awk -F '|' {'print $4 "/" 32-(log($5)/log(2))'} > Ips-Brasil.txt

Para colocar todos eles pra serem lidos como lista no Iptables podemos usar:

IPS=/pasta-do-arquivo/Ips-Brasil.txt
iptables -A INPUT -s $IPS -j DROP 
por int21 Postado em Linux