Você está na página 1de 17

Summary

Sub-menu:  /ip firewall nat

 A conversão de endereços de rede é um padrão da Internet que permite que hosts em redes locais usem
um conjunto de endereços IP para comunicações internas e outro conjunto de endereços IP para
comunicações externas. Uma LAN que usa NAT é chamada de rede natted. Para que o NAT funcione,
deve haver um gateway NAT em cada rede natted. O gateway NAT (roteador NAT) executa a reescrita do
endereço IP na maneira como um pacote viaja de / para a LAN.
 Existem dois tipos de NAT:
 source NAT or srcnat. Esse tipo de NAT é realizado em pacotes originários de uma rede natted. Um
roteador NAT substitui o endereço de origem privado de um pacote IP por um novo endereço IP público
à medida que viaja pelo roteador. Uma operação reversa é aplicada aos pacotes de resposta que viajam
na outra direção.
 destination NAT or dstnat. Esse tipo de NAT é realizado em pacotes destinados à rede natted. É mais
comumente usado para fazer com que hosts em uma rede privada sejam acessíveis pela Internet. Um
roteador NAT executando dstnat substitui o endereço IP de destino de um pacote IP à medida que viaja
pelo roteador em direção a uma rede privada.
 Os hosts por trás de um roteador habilitado para NAT não têm conectividade de ponta a ponta
verdadeira. Portanto, alguns protocolos da Internet podem não funcionar em cenários com NAT. Os
serviços que requerem o início da conexão TCP de fora da rede privada ou de protocolos sem estado,
como o UDP, podem ser interrompidos. Além disso, alguns protocolos são inerentemente incompatíveis
com o NAT, um exemplo ousado é o protocolo AH do conjunto IPsec.
 Para superar essas limitações, o RouterOS inclui vários chamados auxiliares de NAT , que permitem a
travessia de NAT para vários protocolos.

Masquerade
O NAT do firewall  action=masquerade é uma subversão exclusiva do  action=srcnat , foi projetado para uso
específico em situações em que o IP público pode ser alterado aleatoriamente, por exemplo, o servidor DHCP o
altera ou o túnel PPPoE após a desconexão obtém um IP diferente, enfim - quando o IP público é dinâmico.
Toda vez que a interface é desconectada e / ou seu endereço IP é alterado, o roteador limpa todas as entradas
de rastreamento de conexão mascaradas que enviam pacotes dessa interface, melhorando assim o tempo de
recuperação do sistema após a alteração do endereço IP público.
Infelizmente, isso pode levar a alguns problemas quando  action=masquerade é usado em configurações com
links / conexões instáveis que são roteados por um link diferente quando o primário está desativado. Nesse
cenário, as seguintes coisas podem acontecer:
 ao desconectar, todas as entradas de rastreamento de conexão relacionadas são eliminadas;
 o próximo pacote de todas as conexões limpas (anteriormente mascaradas) entrará no firewall
como  connection-state=new e, se a interface principal não estiver de volta, o pacote será roteado por uma
rota alternativa (se houver), criando assim uma nova conexão;
 o link primário volta, o roteamento é restaurado pelo link primário, para que os pacotes que pertencem às
conexões existentes sejam enviados pela interface primária sem serem mascarados, vazando IPs locais para
uma rede pública.
Você pode solucionar isso criando uma rota de buraco negro como alternativa à rota que pode desaparecer ao
se desconectar).
Quando  action=srcnat é usado, as entradas de rastreamento de conexão permanecem e as conexões podem
simplesmente continuar.

Properties
Property Description
action (action Ação a ser tomada se o pacote corresponder à regra:
name;  accept - aceite o pacote. O pacote não é passado para a próxima regra NAT.
Default: accept  add-dst-to-address-list - adicione o endereço de destino à Address list
especificada pelo  address-list parâmetro
 add-src-to-address-list - adicione o endereço de origem à Address list 
especificada pelo  address-list parâmetro
 dst-nat - substitui o endereço de destino e / ou porta de um pacote IP pelos valores
especificados por  to-addresses e  to-ports parâmetros
 jump - pula para a cadeia definida pelo usuário especificada pelo valor do  jump-target
parâmetro
log - adicione uma mensagem ao log do sistema contendo os seguintes dados: interface de
entrada, interface de saída, src-mac, protocolo, src-ip: port-> dst-ip: porta e comprimento do
pacote. Após a correspondência do pacote, ele é passado para a próxima regra da lista,
semelhante a passthrough
 masquerade - substitui a porta de origem de um pacote IP por uma especificada pelo 
to-ports parâmetro e substitui o endereço de origem de um pacote IP por IP determinado
pelo recurso de roteamento
 netmap - cria um mapeamento estático 1: 1 de um conjunto de endereços IP para outro.
 Geralmente usado para distribuir endereços IP públicos para hosts em redes privadas
 passthrough - se o pacote corresponder à regra, aumente o contador e vá para a próxima
regra (útil para estatísticas).
 redirect - substitui a porta de destino de um pacote IP por uma especificada por  to-ports
parâmetro e endereço de destino por um dos endereços locais do roteador
 return -  passa o controle de volta para a corrente de onde o salto ocorreu
 same -  fornece a um cliente em particular o mesmo endereço IP de origem / destino do
intervalo fornecido para cada conexão. É usado com mais frequência para serviços que
esperam o mesmo endereço de cliente para várias conexões do mesmo cliente
src-nat - substitui o endereço de origem de um pacote IP pelos valores especificados por
to-addresses e  to-ports parâmetros

address-list  Nome da lista de endereços a ser usada. Aplicável se a ação for  add-dst-to-address-list


(string; Default: ) Ou add-src-to-address-list

address-list-  Intervalo de tempo após o qual o endereço será removido da lista de endereços
timeout (none- especificada pelo  address-list parâmetro Usado em conjunto com
dynamic | none-
  add-dst-to-address-list ou  add-src-to-address-list ações
static | time;
Default: none- Value of none-dynamic ( 00:00:00 ) will leave the address in the address list till reboot
dynamic)  Value of none-static will leave the address in the address list forever and will be
included in configuration export/backup
chain (name; Specifies to which chain rule will be added. If the input does not match the name of an already
Default: ) defined chain, a new chain will be created.

comment (string; Descriptive comment for the rule.


Default: )
connection- Matches packets only if a given amount of bytes has been transfered through the particular
bytes (integer- connection. 0 - means infinity, for example  connection-bytes=2000000-0  means that the rule
integer; Default: ) matches if more than 2MB has been transfered through the relevant connection

connection- Matches connections per address or address block after given value is reached.
limit (integer,n
etmaks; Default: )
connection- Matches packets marked via mangle facility with particular connection mark. If no-mark is set,
mark (no-mark | rule will match any unmarked connection.
string; Default: )
connection- Connection Rate is a firewall matcher that allow to capture traffic based on present speed of the
rate (Integer connection.  Read more>>
0..4294967295;
Default: )
connection- Matches packets from related connections based on information from their connection tracking
type (ftp | h323 | helpers. A relevant connection helper must be enabled under /ip firewall service-port
irc | pptp |
quake3 | sip | tftp;
Default: )

content (string; Match packets that contain specified text


Default: )

dscp (integer: Matches DSCP IP header field.


0..63; Default: )

dst-address  Matches packets which destination is equal to specified IP or falls into specified IP range.
(IP/netmask | IP
range; Default: )
dst-address- Matches destination address of a packet against user-defined address list
list (name;
Default: )
dst-address- Matches destination address type:
type (unicast |  unicast - IP address used for point to point transmission
local | broadcast |  local - if dst-address is assigned to one of router's interfaces
multicast;
 broadcast - packet is sent to all devices in subnet
Default: )
 multicast - packet is forwarded to defined group of devices

dst-limit  Matches packets until a given pps limit is exceeded. As opposed to the limit matcher, every destina
(integer[/time],int / destination port has it's own limit. Parameters are written in following
eger,dst-address format:  count[/time],burst,mode[/expire] .
| dst-port | src-  count - maximum average packet rate measured in packets per  time  interval
address[/time];
Default: )  time - specifies the time interval in which the packet rate is measured (optional)
 burst - number of packets which are not counted by packet rate
 mode - the classifier for packet rate limiting
 expire - specifies interval after which recored ip address /port will be deleted (optional)

dst-port  List of destination port numbers or port number ranges


(integer[-integer]:
0..65535; Default:
)

fragment (yes| Matches fragmented packets. First (starting) fragment does not count. If connection tracking is enable
no; Default: ) no fragments as system automatically assembles every packet

hotspot (auth | Matches packets received from HotSpot clients against various HotSpot matchers.
from-client | http |  auth - matches authenticted HotSpot client packets
local-dst | to-  from-client - matches packets that are coming from the HotSpot client
client; Default: )
 http - matches HTTP requests sent to the HotSpot server
 local-dst - matches packets that are destined to the HotSpot server
 to-client - matches packets that are sent to the HotSpot client

icmp-options  Matches ICMP type:code fileds


(integer:integer;
Default: )
in-bridge- Actual interface the packet has entered the router, if incoming interface is bridge
port (name;
Default: )

in-interface  Interface the packet has entered the router


(name; Default: )
ingress- Matches ingress priority of the packet. Priority may be derived from VLAN, WMM or MPLS EXP bit.  Re
priority (integ
er: 0..63; Default:
)

ipsec-policy  Matches the policy used by IpSec. Value is written in following format:  direction, policy .
(in | out, ipsec | Direction is Used to select whether to match the policy used for decapsulation or the policy that
none; Default: ) will be used for encapsulation.
 in - valid in the PREROUTING, INPUT and FORWARD chains
 out - valid in the POSTROUTING, OUTPUT and FORWARD chains
 ipsec - matches if the packet is subject to IpSec processing;
 none - matches packet that is not subject to IpSec processing (for example, IpSec transport
packet).
For example, if router receives Ipsec encapsulated Gre packet, then rule
  ipsec-policy=in,ipsec  will match Gre packet, but rule  ipsec-policy=in,none  will
match ESP packet.

ipv4-options  Matches IPv4 header options.


(any | loose-  any - match packet with at least one of the ipv4 options
source-routing |  loose-source-routing - match packets with loose source routing option. This option
no-record-route | is used to route the internet datagram based on information supplied by the source
no-router-alert |
 no-record-route - match packets with no record route option. This option is used to
no-source-
routing | no- route the internet datagram based on information supplied by the source
timestamp | none  no-router-alert - match packets with no router alter option
| record-route |  no-source-routing - match packets with no source routing option
router-alert |  no-timestamp - match packets with no timestamp option
strict-source-
routing |  record-route - match packets with record route option
timestamp;  router-alert - match packets with router alter option
Default: )  strict-source-routing - match packets with strict source routing option
 timestamp - match packets with timestamp

jump-target  Name of the target chain to jump to. Applicable only if  action=jump
(name; Default: )
layer7- Layer7 filter name defined in layer7 protocol menu.
protocol (nam
e; Default: )

limit (integer,ti Matches packets until a given pps limit is exceeded. Parameters are written in following
me,integer; format:  count[/time],burst .
Default: )  count - maximum average packet rate measured in packets per  time  interval
 time - specifies the time interval in which the packet rate is measured (optional, 1s will
be used if not specified)
 burst - number of packets which are not counted by packet rate

log-prefix  Adds specified text at the beginning of every log message. Applicable if  action=log
(string; Default: )

nth (integer,inte Matches every nth packet.  Read more >>


ger; Default: )
out-bridge- Actual interface the packet is leaving the router, if outgoing interface is bridge
port (name;
Default: )

out-interface  Interface the packet is leaving the router


(; Default: )

packet-mark  Matches packets marked via mangle facility with particular packet mark. If no-mark is set, rule
(no-mark | string; will match any unmarked packet.
Default: )

packet-size  Matches packets of specified size or size range in bytes.


(integer[-
integer]:0..65535;
Default: )
per- PCC matcher allows to divide traffic into equal streams with ability to keep packets with specific
connection- set of options in one particular stream.  Read more >>
classifier (V
aluesToHash:De
nominator/Remai
nder; Default: )

port (integer[- Matches if any (source or destination) port matches the specified list of ports or port ranges.
integer]: Applicable only if  protocol  is TCP or UDP
0..65535; Default:
)

protocol (nam Matches particular IP protocol specified by protocol name or number


e or protocol ID;
Default: tcp)

psd (integer,time Attempts to detect TCP and UDP scans. Parameters are in following format  WeightThreshold,
,integer,integer; DelayThreshold, LowPortWeight, HighPortWeight
Default: )
 WeightThreshold - total weight of the latest TCP/UDP packets with different destination
ports coming from the same host to be treated as port scan sequence
 DelayThreshold - delay for the packets with different destination ports coming from the
same host to be treated as possible port scan subsequence
 LowPortWeight - weight of the packets with privileged (<1024) destination port
 HighPortWeight - weight of the packet with non-priviliged destination port

random (integer: Matches packets randomly with given probability.


1..99; Default: )

routing-mark  Matches packets marked by mangle facility with particular routing mark
(string; Default: )
same-not-by- Specifies whether to take into account or not destination IP address when selecting a new
dst (yes | no; source IP address. Applicable if  action=same
Default: )

src-address  Matches packets which source is equal to specified IP or falls into specified IP range.
(Ip/Netmaks, Ip
range; Default: )
src-address- Matches source address of a packet against user-defined address list
list (name;
Default: )
src-address- Matches source address type:
type (unicast |
 unicast - IP address used for point to point transmission
local | broadcast |
multicast;  local - if address is assigned to one of router's interfaces
Default: )  broadcast - packet is sent to all devices in subnet
 multicast - packet is forwarded to defined group of devices
src-port  List of source ports and ranges of source ports. Applicable only if protocol is TCP or UDP.
(integer[-integer]:
0..65535; Default:
)
src-mac- Matches source MAC address of the packet
address (MAC
address;
Default: )

tcp-mss  Matches TCP MSS value of an IP packet


(integer[-integer]:
0..65535; Default:
)

time (time- Allows to create filter based on the packets' arrival time and date or, for locally generated packets,
time,sat | fri | thu departure time and date
| wed | tue | mon
| sun; Default: )

to-addresses  Replace original address with specified one. Applicable if action is dst-nat, netmap, same, src-nat
(IP address[-IP
address];
Default: 0.0.0.0)

to-ports  Replace original port with specified one. Applicable if action is dst-nat, redirect, masquerade,
(integer[-integer]: netmap, same, src-nat
0..65535; Default:
)

ttl (integer: Matches packets TTL value


0..255; Default: )

Stats
/ip firewall nat print stats  mostrará propriedades adicionais somente leitura

Property Description
bytes (integer) Total amount of bytes matched by the rule

packets (integer) Total amount of packets matched by the rule

Por padrão, print é equivalente aprint static e mostra apenas regras estáticas.

[admin@dzeltenais_burkaans] /ip firewall mangle> print stats


Flags: X - disabled, I - invalid, D - dynamic
# CHAIN ACTION BYTES PACKETS
0 prerouting mark-routing 17478158 127631
1 prerouting mark-routing 782505 4506

Para imprimir também regras dinâmicas, use print all.

[admin@dzeltenais_burkaans] /ip firewall mangle> print all stats


Flags: X - disabled, I - invalid, D - dynamic
# CHAIN ACTION BYTES PACKETS
0 prerouting mark-routing 17478158 127631
1 prerouting mark-routing 782505 4506
2 D forward change-mss 0 0
3 D forward change-mss 0 0
4 D forward change-mss 0 0
5 D forward change-mss 129372 2031

Ou para imprimir apenas regras dinâmicas, use print dynamic

[admin@dzeltenais_burkaans] /ip firewall mangle> print stats dynamic


Flags: X - disabled, I - invalid, D - dynamic
# CHAIN ACTION BYTES PACKETS
0 D forward change-mss 0 0
1 D forward change-mss 0 0
2 D forward change-mss 0 0
3 D forward change-mss 132444 2079

Menu specific commands


Property De
reset-counters (id) Reset statistics counters for specified firewall rules.

reset-counters-all () Reset statistics counters for all firewall rules.

Basic examples
Source NAT
Masquerade
Se você deseja "ocultar" a LAN privada 192.168.0.0/24 "atrás" de um endereço 10.5.8.109 fornecido pelo ISP,
use o recurso de tradução de endereços de rede de origem (mascaramento) do roteador MikroTik. O
mascaramento alterará o endereço IP de origem e a porta dos pacotes originados da rede 192.168.0.0/24 para o
endereço 10.5.8.109 do roteador quando o pacote for roteado por ele.
Para usar o disfarce, uma regra NAT de origem com a ação 'masquerade' deve ser adicionada à configuração do
firewall:

/ip firewall nat add chain=srcnat action=masquerade out-interface=Public

Todas as conexões de saída da rede 192.168.0.0/24 terão o endereço de origem 10.5.8.109 do roteador e a porta
de origem acima de 1024. Nenhum acesso da Internet será possível aos endereços locais. Se você deseja
permitir conexões com o servidor na rede local, use o NAT (Network Address Translation) de destino.
Source nat to specific address
Se você tiver vários endereços IP públicos, a origem da origem poderá ser alterada para um IP específico, por
exemplo, uma sub-rede local poderá ser oculta por trás do primeiro IP e a segunda sub-rede local será
mascarada por trás do segundo IP.

/ip firewall nat


add chain=srcnat src-address=192.168.1.0/24 action=src-nat to-addresses=1.1.1.1
out-interface=Public
add chain=srcnat src-address=192.168.2.0/24 action=src-nat to-addresses=1.1.1.2
out-interface=Public
Destination NAT
Forward all traffic to internal host
Encaminhar todo o tráfego para o host interno
Se você deseja vincular o endereço IP público 10.5.8.200 ao local 192.168.0.109, use o recurso de conversão de
endereço de destino do roteador MikroTik. Além disso, se você deseja permitir que o servidor local inicie
conexões externas com determinado IP público, também deve usar a tradução de endereços de origem.
Adicione IP público à interface pública:

/ip address add address=10.5.8.200/32 interface=Public

Adicione uma regra que permita o acesso ao servidor interno a partir de redes externas:

/ip firewall nat add chain=dstnat dst-address=10.5.8.200 action=dst-nat \


to-addresses=192.168.0.109

Adicione uma regra que permita ao servidor interno iniciar conexões com as redes externas com o endereço de
origem convertido para 10.5.8.200:

/ip firewall nat add chain=srcnat src-address=192.168.0.109 action=src-nat \


to-addresses=10.5.8.200

Port mapping / forwarding


Se você deseja direcionar solicitações para uma determinada porta para uma máquina interna (às vezes
chamada de abertura de uma porta, mapeamento de portas), é possível fazer o seguinte:

/ip firewall nat add chain=dstnat dst-port=1234 action=dst-nat protocol=tcp to-


address=192.168.1.1 to-port=1234

Esta regra se traduz em: quando uma conexão de entrada solicitar a porta TCP 1234, use a ação DST-NAT e
redirecione-a para o endereço local 192.168.1.1 e a porta 1234
Port forwarding to internal FTP server

Como você pode ver na ilustração acima, o FTP usa mais de uma conexão, mas apenas o canal de comando
deve ser encaminhado pelo Destino nat. O canal de dados é considerado como conexão relacionada e deve ser
aceito com a regra "aceitar relacionados" se você tiver um firewall rigoroso. Observe que, para que as conexões
relacionadas sejam detectadas corretamente, o auxiliar FTP deve estar ativado.

/ip firewall nat


add chain=dstnat dst-address=10.5.8.200 dst-port=21 protocol=tcp action=dst-nat
to-addresses=192.168.0.109
/ip firewall filter
add chain=forward connection-state=established,related action=accept

Observe que o FTP ativo pode não funcionar se o cliente estiver protegido por um firewall estúpido ou roteador
NAT, porque o canal de dados é iniciado pelo servidor e não pode acessar diretamente o cliente.

If client is behind Mikrotik router, then make sure that FTP helper is enabled

[admin@3C22-atombumba] /ip firewall service-port> print


Flags: X - disabled, I - invalid
# NAME PORTS
0 ftp 21
1 tftp 69
2 irc 6667
3 h323
4 sip 5060
5061
5 pptp

1:1 mapping
Se você deseja vincular a sub-rede IP pública 11.11.11.0/24 à local 2.2.2.0/24, use a conversão de endereço de
destino e os recursos de conversão de endereço de origem com action = netmap.

/ip firewall nat add chain=dstnat dst-address=11.11.11.0/24 \


action=netmap to-addresses=2.2.2.0/24

/ip firewall nat add chain=srcnat src-address=2.2.2.0/24 \


action=netmap to-addresses=11.11.11.0/24

O mesmo pode ser escrito usando uma notação de endereço diferente, que ainda precisa corresponder à rede
descrita
/ip firewall nat add chain=dstnat dst-address=11.11.11.0-11.11.11.255 \
action=netmap to-addresses=2.2.2.0-2.2.2.255

/ip firewall nat add chain=srcnat src-address=2.2.2.0-2.2.2.255 \


action=netmap to-addresses=11.11.11.0-11.11.11.255

Carrier-Grade NAT (CGNAT) or NAT444


Para combater a exaustão de endereços IPv4, o novo RFC 6598 foi implantado. A idéia é usar o espaço de
endereço compartilhado 100.64.0.0/10 dentro da rede da operadora e executar o NAT no roteador de borda da
operadora para sigle IP público ou intervalo de IP público.
Devido à natureza dessa configuração, ela também é chamada NAT444, em oposição a uma rede NAT44 para
um ambiente NAT 'normal', três espaços de endereço IPv4 diferentes estão envolvidos.

A configuração CGNAT no RouterOS não difere de nenhuma outra configuração NAT de origem regular:

/ip firewall nat


add chain=src-nat action=srcnat src-address=100.64.0.0/10 to-address=2.2.2.2
out-interface=<public_if>

Onde:

 2.2.2.2 - endereço IP público,


 public_if - interface no roteador de borda de provedores conectado à Internet
A vantagem do NAT444 é óbvia, menos endereços IPv4 públicos usados. Mas essa técnica vem com as
principais desvantagens:

 O roteador do provedor de serviços que executa o CGNAT precisa manter uma tabela de estados para
todas as traduções de endereços: isso requer muita memória e recursos da CPU.
 Problemas nos jogos de console. Alguns jogos falham quando dois assinantes que usam o mesmo
endereço IPv4 público externo tentam se conectar.
 O rastreamento de usuários por razões legais significa registro extra, pois várias famílias ficam atrás de
um endereço público.
 Tudo o que requer conexões de entrada está quebrado. Enquanto esse já era o caso do NAT comum, os
usuários finais ainda podiam configurar o encaminhamento de porta no roteador NAT. CGNAT torna isso
impossível. Isso significa que nenhum servidor da web pode ser hospedado aqui e os telefones IP também
não podem receber chamadas por padrão.
 Alguns servidores da Web permitem apenas um número máximo de conexões do mesmo endereço IP
público, como forma de combater ataques de DoS como inundações de SYN. Usando o CGNAT, esse limite
é atingido com mais frequência e alguns serviços podem ser de baixa qualidade.
 6to4 requer endereços alcançáveis globalmente e não funcionará em redes que empregam endereços
com alcance topológico limitado
.
Mais sobre coisas que podem quebrar podem ser lidas neste artigo [1]
Pacotes com endereços de origem ou destino de espaço de endereço compartilhado NÃO DEVEM ser
encaminhados através dos limites do provedor de serviços. Os prestadores de serviços DEVEM filtrar esses
pacotes nos links de entrada. No RouterOS, isso pode ser feito facilmente com filtros de firewall em roteadores de
borda:

/ip firewall filter


add chain=input src-address=100.64.0.0/10 action=drop in-interface=<public_if>
add chain=output dst-address=100.64.0.0/10 action=drop out-interface=<public_if>
add chain=forward src-address=100.64.0.0/10 action=drop in-interface=<public_if>
add chain=forward src-address=100.64.0.0/10 action=drop out-
interface=<public_if>
add chain=forward dst-address=100.64.0.0/10 action=drop out-
interface=<public_if>

Pode ser necessário que os provedores de serviços façam o registro de endereços MAPed, em uma grande rede
CGN implantada que pode ser um problema. Felizmente, o RFC 7422 sugere uma maneira de gerenciar as
traduções CGN de forma a reduzir significativamente a quantidade de logs necessária e, ao mesmo tempo,
fornecer rastreabilidade para resposta a abusos.
A RFC afirma que, em vez de registrar cada conexão, os CGNs podem mapear deterministicamente os
endereços privados do cliente (recebidos na interface voltada para o cliente do CGN, também conhecida como
lado interno) para endereços públicos estendidos com intervalos de portas.
No RouterOS, o algoritmo descrito pode ser feito com poucas funções de script. Vamos dar um exemplo:

Inside IP Outside IP/Port range

100.64.1.
2.2.2.2:2000-2099
1

100.64.1.
2.2.2.2:2100-2199
2

100.64.1.
2.2.2.2:2200-2299
3

100.64.1.
2.2.2.2:2300-2399
4

100.64.1.
2.2.2.2:2400-2499
5

100.64.1.
2.2.2.2:2500-2599
6

Em vez de escrever mapeamentos NAT manualmente, poderíamos escrever uma função que adiciona essas
regras automaticamente.

:global sqrt do={


 :for i from=0 to=$1 do={
 :if (i * i > $1) do={ :return ($i - 1) }
}
}

:global addNatRules do={


/ip firewall nat add chain=srcnat action=jump jump-target=xxx \
src-address="$($srcStart)-$($srcStart + $count - 1)"

 :local x [$sqrt $count]


 :local y $x
 :if ($x * $x = $count) do={ :set y ($x + 1) }
 :for i from=0 to=$x do={
/ip firewall nat add chain=xxx action=jump jump-target="xxx-$($i)" \
src-address="$($srcStart + ($x * $i))-$($srcStart + ($x * ($i + 1) - 1))"
}

 :for i from=0 to=($count - 1) do={


 :local prange "$($portStart + ($i * $portsPerAddr))-$($portStart + (($i + 1)
* $portsPerAddr) - 1)"
/ip firewall nat add chain="xxx-$($i / $x)" action=src-nat protocol=tcp src-
address=($srcStart + $i) \
to-address=$toAddr to-ports=$prange
/ip firewall nat add chain="xxx-$($i / $x)" action=src-nat protocol=udp src-
address=($srcStart + $i) \
to-address=$toAddr to-ports=$prange
}
}

Após colar o script acima na função de terminal "addNatRules" está disponível. Se dermos nosso exemplo,
precisamos mapear 6 endereços de rede compartilhados para serem mapeados para 2.2.2.2 e cada endereço
usa um intervalo de 100 portas a partir de 2000. Portanto, executamos nossa função:

$addNatRules count=6 srcStart=100.64.1.1 toAddr=2.2.2.2 portStart=2000


portsPerAddr=100

Agora você deve conseguir obter um conjunto de regras:

[admin@rack1_b18_450] /ip firewall nat> print


Flags: X - disabled, I - invalid, D - dynamic
0 chain=srcnat action=jump jump-target=xxx src-address=100.64.1.1-100.64.1.6
log=no log-prefix=""
1 chain=xxx action=jump jump-target=xxx-0 src-address=100.64.1.1-100.64.1.2
log=no log-prefix=""
2 chain=xxx action=jump jump-target=xxx-1 src-address=100.64.1.3-100.64.1.4
log=no log-prefix=""
3 chain=xxx action=jump jump-target=xxx-2 src-address=100.64.1.5-100.64.1.6
log=no log-prefix=""
4 chain=xxx-0 action=src-nat to-addresses=2.2.2.2 to-ports=2000-2099
protocol=tcp src-address=100.64.1.1 log=no log-prefix=""
5 chain=xxx-0 action=src-nat to-addresses=2.2.2.2 to-ports=2000-2099
protocol=udp src-address=100.64.1.1 log=no log-prefix=""
6 chain=xxx-0 action=src-nat to-addresses=2.2.2.2 to-ports=2100-2199
protocol=tcp src-address=100.64.1.2 log=no log-prefix=""

7 chain=xxx-0 action=src-nat to-addresses=2.2.2.2 to-ports=2100-2199


protocol=udp src-address=100.64.1.2 log=no log-prefix=""
8 chain=xxx-1 action=src-nat to-addresses=2.2.2.2 to-ports=2200-2299
protocol=tcp src-address=100.64.1.3 log=no log-prefix=""
9 chain=xxx-1 action=src-nat to-addresses=2.2.2.2 to-ports=2200-2299
protocol=udp src-address=100.64.1.3 log=no log-prefix=""
10 chain=xxx-1 action=src-nat to-addresses=2.2.2.2 to-ports=2300-2399
protocol=tcp src-address=100.64.1.4 log=no log-prefix=""
11 chain=xxx-1 action=src-nat to-addresses=2.2.2.2 to-ports=2300-2399
protocol=udp src-address=100.64.1.4 log=no log-prefix=""
12 chain=xxx-2 action=src-nat to-addresses=2.2.2.2 to-ports=2400-2499
protocol=tcp src-address=100.64.1.5 log=no log-prefix=""
13 chain=xxx-2 action=src-nat to-addresses=2.2.2.2 to-ports=2400-2499
protocol=udp src-address=100.64.1.5 log=no log-prefix=""
14 chain=xxx-2 action=src-nat to-addresses=2.2.2.2 to-ports=2500-2599
protocol=tcp src-address=100.64.1.6 log=no log-prefix=""
15 chain=xxx-2 action=src-nat to-addresses=2.2.2.2 to-ports=2500-2599
protocol=udp src-address=100.64.1.6 log=no log-prefix=""
Manual:IP/SMB
< Manual:IP

 1Summary
 2Server settings
 3Share settings
 4User setup
 5Example
 6Unsupported features

Summary
Sub-menu:  /ip smb
Packages required:  system

SMB 1.0 server provides file sharing access to configured folders of the router.

Note: RouterOS only supports SMB v1.0 and v2.002

Server settings
Property Des

allow-guests (yes | no; Se o usuário convidado SMB tiver permissão para acessar compartilhamentos criados
Default: yes)

comment (string;
Default: MikrotikSMB)

domain (string; Nome do grupo de trabalho do Windows


Default: MSHOME)

enabled (yes | no; Ativar / desativar o serviço SMB


Default: no)

interface (string; Lista de interfaces nas quais o serviço SMB estará em execução. all - smb estará
Default: all)
disponível em todas as interfaces.

Share settings
Sub-menu:  /ip smb share

O submenu permite configurar nomes e diretórios de compartilhamento que serão acessíveis pelo SMB.
Se o diretório fornecido na configuração não existir, ele será criado automaticamente.

Property Description

disabled (y Se desativado, o compartilhamento não estará acessível.


es | no;
Default: no)
max- Quantas conexões simultâneas SMB têm permissão para pasta compartilhada
sessions (n
umber;
Default: 10)

name (string; Nome do compartilhamento SMB


Default: )

directory ( Diretório no roteador atribuído ao compartilhamento SMB. Se deixado, o valor vazio do 
string;
argumento name será usado na pasta raiz.
Default: )

User setup
Sub-menu:  /ip smb share

Configure usuários que possam acessar compartilhamentos SMB do roteador.

Property Description

disabled ( Se o serviço SMB estiver ativado


yes | no;
Default: no)

name (string nome de login do usuário do serviço SMB


; Default: )

password ( senha para o usuário SMB se conectar ao serviço SMB


string;
Default: )

read-only  Define se o usuário tem apenas direitos de somente leitura ao acessar compartilhamentos
(yes | no;
ou acesso total.
Default: yes)

Example
Para disponibilizar algumas pastas do RouterOS através do serviço SMB, siga estas etapas:

 create user:

/ip smb user add read-only=no name=mtuser password=mtpasswd

 add shared folder - adicionar pasta compartilhada


/ip smb share add name=backup

 enable SMB service - habilitar serviço SMB

/ip smb set enabled=yes

Now check for results:

 Check general service settings:

/ip smb print

[admin@MikroTik] /ip smb> print


enabled: yes
domain: MSHOME
comment: MikrotikSMB
allow-guests: yes
interfaces: all

 SMB user settings:

/ip smb users print

[admin@MikroTik] /ip smb> users print


Flags: * - default, X - disabled
# NAME PASSWORD READ-ONLY
0 * guest yes
1 mtuser mtpasswd no

 And finally SMB shares settings:

/ip smb shares print

[admin@MikroTik] /ip smb> shares print

Flags: X - disabled, I - inactive, * - default


# NAME DIRECTORY MAX-SESSIONS
0 * ;;; default share
pub /pub 10
1 backup /backup 10

Now additional configuration changes can be done, like disabling default user and share etc.