+ Responder ao Tópico

  1. Código :
     
    :global sqrtbin do={  :local count  0
      :local value $1
      :do {
        :set count ($count + 1)
        :set value ($value / 2)
      } while=($value > 0)
      :return $count
    }
     
    :global addNatRules do={
      :global sqrtbin;
      :local toAddrCount $toAddr;
      :local  x (1<<(([$sqrtbin ($count)])/2));
      :local  y ($count / $x);
     
      :for j from=$srcStartOct1 to=$srcStopOct1 do={
        :for k from=$srcStartOct2 to=$srcStopOct2 do={
          :for l from=$srcStartOct3 to=$srcStopOct3 do={
            /ip firewall nat add chain=srcnat action=jump jump-target="CGNAT-$($toAddrCount)" \
               src-address=(($j.".".$k.".".$l.".".$srcStartOct4)."-".($j.".".$k.".".$l.".".$srcStopOct4)) \
               comment="CGNAT" out-interface=LINK
          :set toAddrCount ($toAddrCount + 1)
          }
        }
      }
     
      :set toAddrCount $toAddr;
     
      :for j from=$srcStartOct1 to=$srcStopOct1 do={
        :for k from=$srcStartOct2 to=$srcStopOct2 do={
          :for l from=$srcStartOct3 to=$srcStopOct3 do={
            :if ($x * $x = $count) do={ :set y ($x + 1) }
            :for i from=0 to=($y-1) do={
                :local inicio [:toip (($j.".".$k.".".$l.".".$srcStartOct4) + ($x * $i))]
                :local fim [:toip (($j.".".$k.".".$l.".".$srcStartOct4) + ($x * ($i + 1) - 1))]  
                /ip firewall nat add chain="CGNAT-$($toAddrCount)" action=jump jump-target="CGNAT-$($toAddrCount)-$($i)" \
                   src-address=([:tostr $inicio]."-".[:tostr $fim]) comment="CGNAT"
            }
            :set toAddrCount ($toAddrCount + 1)
          }
        }
      }
     
      :set toAddrCount $toAddr
     
      :for j from=$srcStartOct1 to=$srcStopOct1 do={
        :for k from=$srcStartOct2 to=$srcStopOct2 do={
          :for l from=$srcStartOct3 to=$srcStopOct3 do={
            :local srcStart [:toip (($j.".".$k.".".$l.".".$srcStartOct4))]
            :for i from=0 to=($count - 1) do={
              :local prange "$($portStart + ($i * $portsPerAddr))-$($portStart + (($i + 1) * $portsPerAddr) - 1)"
              /ip firewall nat add chain="CGNAT-$($toAddrCount)-$($i / $x)" action=src-nat protocol=tcp src-address=($srcStart + $i) \
               to-address=$toAddrCount to-ports=$prange  comment="CGNAT"
              /ip firewall nat add chain="CGNAT-$($toAddrCount)-$($i / $x)" action=src-nat protocol=udp src-address=($srcStart + $i) \
               to-address=$toAddrCount to-ports=$prange  comment="CGNAT"
            }
            :set toAddrCount ($toAddrCount + 1)
          }
        }
      }
    }
     
     
     
     
    $addNatRules count=128 srcStartOct1=10 srcStartOct2=150 srcStartOct3=1 srcStartOct4=0 \
                            srcStopOct1=10  srcStopOct2=150  srcStopOct3=1  srcStopOct4=127 \
                            toAddr=138.aa.bb.0 portStart=1500 portsPerAddr=500

    Acabei de rodar esse código na minha CCR.
    Última edição por eduardomazolini; 27-08-2016 às 08:08. Razão: Definir out-interface

  2. Acabei de rodar esse código na minha CCR.
    Terminou de executar as 6:54, 14310 regras a minha é CCR1036-12G-4S.
    O SCRIPT consumia só um núcleo, no final criava uma regra a cada 5s (log memory).

    Agora de manhã eu apliquei uma modificação nas primeiras regras para apontar out-interface, demorou 4s cada execução:
    Código :
    :foreach a in=[find chain=srcnat comment~RANGE] do={:set number=$a out-interface=LINK}



    Serio que vocês usam CGNAT desta forma?




  3. Honestamente, eu não acho que precise de log quando usado CGNAT, o CGNAT é estático, cada cliente vai ficar com um grupo de portas, não vai mudar. Então se tem 1000 clientes vai ter apenas 1000 regras de SNAT... Só isso!

    Enviado via XT1563 usando UnderLinux App

  4. Mas não tô gerando log. Acontece que hoje uso 2000 amanhã 2001 depois mudo um por outro. Eu deixei estático pra qualquer IP que os clientes peguem um IP que existe a regra dele.

    Enviado de meu SM-G800H usando Tapatalk

  5. deu certo seu CGNAT @eduardomazolini ? Como está o desempenho do CCR?







Tópicos Similares

  1. Duvidas NAT 1:1 ip publico
    Por jrassis no fórum Redes
    Respostas: 3
    Último Post: 19-09-2012, 13:56
  2. Respostas: 5
    Último Post: 08-07-2012, 23:56
  3. Como Variar o IP Publico utilizando NAT....
    Por UsadosMAC no fórum Redes
    Respostas: 5
    Último Post: 11-05-2010, 13:04
  4. Cache MK sem Nat e Ip publico.
    Por Tremedeira no fórum Redes
    Respostas: 0
    Último Post: 26-03-2010, 09:52
  5. Roteamento de IP publico + NAT
    Por skypriest no fórum Redes
    Respostas: 2
    Último Post: 22-07-2008, 21:57

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L