O firewall (ou filtro de pacotes) é um tópico amplo e complexo, tanto em termos teóricos quanto práticos. Um filtro de pacotes em vários sistemas operacionais pode ter seus prós e contras em comparação com outras implementações. Neste artigo, considerarei exclusivamente o Firewall no RouterOS de olho em suas tabelas de ip progenitoras.
Prefácio
Para quem é este artigo?
Se você souber trabalhar com o iptables, vá em frente e configure um firewall, neste artigo não haverá nada novo para você (bem, exceto que cadeias com outros nomes são usadas na tabela NAT). Se esta é a primeira vez que você vê um firewall no RouterOS e deseja obter um script pronto para configuração, você não o encontrará aqui. O material é direcionado àqueles que desejam ter uma idéia básica de como o firewall funciona e o que acontece com o pacote ip em diferentes estágios de seu processamento. Um entendimento mais profundo virá com a experiência e a solução de problemas cotidianos e incomuns usando um filtro de pacotes.
Parte teórica
O que é o Layer3 Firewall?

Suponha que você tenha um roteador com acesso à Internet e duas interfaces de ponte: bridge-lan (ether2-ether5) e bridge-dmz (ether6-ether10).
Na interface Bridge, os dispositivos encontram independentemente vizinhos de seus pacotes de sub-rede e de troca, o roteador atua como um comutador e não monitora esse tráfego no nível da rede (é claro, você pode forçá-lo a fazer isso, mas falaremos sobre o Layer2 Firewall outra vez).
Se necessário, entre em contato com o dispositivo conectado a outra interface de ponte ou localizado na rede global. Os dispositivos transmitem pacotes ao roteador, que determina a rota e os processa no nível da rede (Camada 3).
Diagrama de fluxo de pacotes
O caminho completo do tráfego é descrito no diagrama de fluxo de pacotes, existem várias versões oficiais (v5, v6 ), elas precisam ser conhecidas e usadas no trabalho diário, mas para entender a operação do filtro de pacotes, elas estão sobrecarregadas, portanto, explicarei em uma versão leve.

A interface de entrada / saída é qualquer interface de roteador da camada 3 (física ou virtual). Um pacote que vai da rede local para a Internet chega à interface de entrada e sai da interface de saída. Um pacote da Internet para a rede local também acessa a interface de entrada e sai da interface de saída. O fluxo de pacotes é sempre lido em uma direção de entrada -> saída.
Recursos de terminologia
Estudando o fluxo de pacotes para o iptables, é possível encontrar descrições em "cadeias nas tabelas" ou "tabelas nas cadeias". O diagrama mostra as tabelas em cadeias; ao adicionar regras ao firewall, tudo será vice-versa.
Mas, de fato, o pacote se move entre os blocos [chain + tables], por exemplo, se você aceitar no bloco [prerouting + mangle], o pacote de trânsito ainda será processado em [forward + mangle]. É importante lembrar em configurações complexas com pbr e filas.
A documentação do iptables possui definições mais precisas, mas em palavras simples:
As cadeias são responsáveis por onde o pacote é processado e pela sequência de regras.
As tabelas determinam as ações que podem ser executadas em um pacote.
Pacote básico seguintes opções

Trânsito

- Um pacote da rede chega a uma das interfaces do roteador
- Na cadeia PREROUTING, o administrador pode influenciar a rota do pacote: determine a interface de saída (roteamento da base de políticas) ou redirecione para outro endereço (dst-nat).
- De acordo com a tabela de roteamento do pacote, a interface de saída é determinada.
- A cadeia FORWARD é o principal local de filtragem para a passagem de tráfego.
- O último item antes de entrar na rede é a cadeia POSTROUTING, na qual você pode alterar o endereço do remetente (src-nat).
- O pacote ficou online.
De entrada

- Um pacote da rede chegou a uma das interfaces do roteador
- Bata na cadeia PREROUTING.
- De acordo com a tabela de roteamento, o pacote foi enviado para processamento no processo local.
- A cadeia INPUT filtra o tráfego recebido pelo administrador.
- O pacote foi processado pelo processo local.
Saída

- Um dos processos do roteador gerou um pacote IP (novo ou resposta - isso não importa).
- De acordo com a tabela de roteamento, uma interface de saída é definida para o pacote.
- O administrador pode filtrar o tráfego de saída ou alterar a rota na cadeia OUTPUT.
- Para o pacote, é tomada a decisão final sobre a interface de saída.
- O pacote cai em POSTROUTING, assim como o tráfego que passa .
- O pacote ficou online.
Rastreador de conexão
Primeiro, você precisa entender o que são filtros de pacotes com e sem estado.

Um exemplo O computador 192.168.100.10 abre uma conexão tcp com o servidor 192.0.2.10. No lado do cliente, a porta dinâmica 49149 é usada, no lado do servidor 80. Antes de o conteúdo ser recebido, o cliente e o servidor devem trocar pacotes para estabelecer uma sessão tcp.
No estado sem estado, é necessário abrir o tráfego da rede local para a Internet e da Internet para a rede local (pelo menos para o intervalo de portas dinâmicas). Que como um todo é um buraco.
Em um roteador stateful , ele analisa os pacotes e, tendo recebido o tcp syn de 192.168.100.10:49149 para 192.0.2.10:80, considera isso o início de uma nova conexão. Todos os pacotes adicionais (em qualquer direção) entre 192.168.100.10:49149 e 192.0.2.10:80 serão considerados parte da conexão estabelecida até que a sessão tcp seja fechada ou que os temporizadores expirem.
Para UDP / ICMP e outros tipos de tráfego, onde o início e o fim da conexão não podem ser claramente distinguidos, o primeiro pacote é o primeiro, o restante é considerado parte da conexão estabelecida e atualiza os cronômetros, o roteador esquece essas conexões depois que os cronômetros expiram.
O rastreador de conexão divide os pacotes em vários tipos:

novo - um pacote que abre uma conexão, por exemplo, syn for tcp ou o primeiro pacote em um fluxo udp.
estabelecido - um pacote relacionado a uma conexão conhecida.
related - pacote relacionado à conexão adicional no multiprotocolo (sip, pptp, ftp, ...).
inválido - pacote de uma conexão desconhecida.
não rastreado - pacote não rastreado rastreador de conexão.
Configuração do rastreador de conexão
enabled = yes - ativado.
ativado = não - desativado.
enabed = desativado automaticamente até que uma regra que use os recursos do conntrack apareça no firewall. É usado por padrão.

Os parâmetros restantes são temporizadores diferentes e geralmente não requerem sintonia.
O administrador pode visualizar e excluir conexões, por exemplo, a conexão com o NAT se parece com isso:

O uso do conntrack afeta o desempenho e o consumo de recursos (especialmente com um grande número de conexões), mas não funciona na maioria das configurações, pois você terá um firewall sem estado sem NAT.
Lista de funções dependentes do rastreador de conexão TTL
Time To Live - um campo no cabeçalho do pacote IP que define o número de roteadores pelos quais um pacote pode passar antes de ser destruído, protege contra o encaminhamento de pacotes sem fim durante os loops de roteamento.

Ao encaminhar, o roteador diminui o valor TTL em 1, se TTL = 0. Nesse caso, um pacote com TTL = 1 chegará ao processo local do roteador.
Algumas operadoras usam truques TTL para impedir o uso de roteadores. Todas essas limitações valem o valor ttl na tabela mangle.
NAT
Tradução de endereços de rede - tecnologia para alterar endereços no cabeçalho do pacote ip. Como o Linux, o NAT faz parte do filtro de pacotes. O NAT funciona com base no rastreador de conexão.
Inicialmente, o NAT foi projetado como uma solução rápida para o problema de exaustão de endereços IPv4; para redes locais, foi proposto o uso de uma sub-rede nos intervalos: 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16 e converta-os em um (ou vários) endereços roteáveis. De fato, existem mais algumas sub-redes de serviço que podem ser usadas em redes privadas e o roteador, em princípio, é o mesmo que o NAT, mas é recomendável seguir os padrões.
Apenas processos NAT: tcp, udp, icmp e alguns protocolos múltiplos de [IP] -> [Firewall] -> [Service Port]. Somente o primeiro pacote (estado da conexão = novo) na conexão é processado, os pacotes restantes são processados automaticamente sem a participação da tabela NAT. Isso pode ser rastreado pela alteração nos contadores nas regras.
O cabeçalho do pacote contém os endereços de origem e de destino, respectivamente, e o NAT é dividido em NAT de origem e de destino.
Origem falsificação de endereço do remetente NAT , presente na grande maioria dos roteadores domésticos e corporativos do mundo.

Ele permite que muitos dispositivos com endereços "cinza" na rede local se comuniquem com a Internet usando um (ou vários) endereços reais.

Voltando ao fluxo de pacotes, vemos que o SRC-NAT está no Postrouting, depois de decidir se deve encaminhar o pacote.
O pacote de resposta passa por um DST-NAT implícito no qual o endereço do destinatário é alterado para local.
NAT de destino - substituição do endereço do destinatário.

É usado, se necessário, para encaminhar o pacote para outro endereço, geralmente é usado para "encaminhar portas" da rede externa para a local.

De acordo com o Packet Flow, a operação DST-NAT ocorre antes da tomada de decisão sobre o roteamento no Pré-roteamento; SRC-NAT implícito está presente para o tráfego de resposta.
O NAT é uma ferramenta de gerenciamento de tráfego bastante poderosa, mas deve ser usada por último (quando outras ferramentas não puderem ajudar).
Correntes (correntes) básicas e de usuário
As cadeias consistem em regras e forçam a lógica do processamento de pacotes.
Existem várias cadeias básicas mapeadas para o fluxo de pacotes:
Pré-roteamento (dstnat) - processamento de pacotes antes de decidir sobre o roteamento
Pacotes de processamento de entrada destinados aos processos locais do roteador
Saída - pacotes de processamento de pacotes gerados pelos processos locais do roteador
Encaminhar - Processando Tráfego de Passagem
Postrouting (srcnat) - Processando o tráfego pronto para transmissão à interface
Tudo é como no iptables, mas as cadeias no nat são renomeadas. O que isso está conectado (provavelmente com hotspot ou descarregamento de hardware nat) é desconhecido para mim, mas não muda nada.
O pacote passa as regras na cadeia sequencialmente, se for adequado para todas as condições, a ação será aplicada ao pacote. Se a ação estiver finalizando e não soltar o pacote, ela será passada para o próximo bloco de fluxo de pacotes.
Todas as cadeias de base têm uma ação padrão (se o pacote não couber em nenhuma das regras) - aceite .
Cadeias personalizadas são necessárias para reduzir o número de regras que cada pacote passa e criar regras complexas para o processamento de tráfego. Todas as cadeias de usuários têm uma ação padrão - return .

Dentro da tabela, você pode encaminhar as regras de várias cadeias base (e usuário) diferentes para a cadeia de usuários, mas o pacote retornará à cadeia da qual veio.

Termos e Condições Gerais
Cadeias consistem em regras, cada regra consiste em condições e ações. Existem muitas condições, mas nem todos vocês usarão em configurações reais. A maioria das condições pode ser prefixada com "not" (sinal "!"). Para coincidir com a regra, o pacote deve ser adequado para todas essas condições.

Algumas das condiçõesCondição | Descrição do produto |
---|
src-address | Endereço de origem |
endereço dst | Endereço do destinatário |
src-address-list | O endereço de origem está listado. |
lista de endereços dst | O endereço do destinatário está listado |
protocolo | Protocolo da camada de transporte |
src-port | Porta de origem |
dst-port | Porta do Destinatário |
porta | Porta de origem ou destino |
na interface | A interface na qual o pacote veio |
interface externa | A interface da qual o pacote será enviado para a rede |
na lista de interface | A interface para a qual o pacote veio é listada |
lista de interface externa | A interface da qual o pacote será enviado para a rede está listada |
protocolo layer7 | Análise do conteúdo dos 10 primeiros pacotes em uma conexão |
conteúdo | Procure uma determinada sequência em um lote |
tls-host | Host de pesquisa no cabeçalho tls |
ipsec-policy | Verifique se o pacote corresponde à política ipsec ou não |
tamanho do pacote | tamanho do pacote em bytes |
src-mac-address | endereço de origem do pacote mac |
marca de conexão | Etiqueta de conexão |
marca de pacote | Etiqueta do pacote |
marca de roteamento | Waypoint do pacote |
estado da conexão | Status do pacote de conexão |
tcp-flags | Pacote tcp de sinalizadores |
icmp-options | Opções de pacote ICMP |
aleatório | A regra é acionada (quando outras condições coincidem) com uma determinada probabilidade |
tempo | Você pode especificar o horário de trabalho da regra, infelizmente sem uma conversão de data |
ttl | Valor do campo ttl no pacote |
dscp | Valor do campo DSCP (ToS) no pacote |
- // - | - // - |
lugar antes | Opção de console (sem condição), permite adicionar uma regra antes do especificado |
desabilitado | Opção de console (não condição), permite desativar a regra |
Anotações
Como Endereço src. (Dst.), Você pode especificar: um único ip, um intervalo de endereços por meio de um hífen ou uma sub-rede.
São necessárias listas de endereços para combinar vários ip não conectados com o mesmo nome. Diferentemente do ipset no netfilter, as entradas nas listas do MikroTik podem ser excluídas após um período especificado. Você pode visualizar as listas e fazer alterações em [IP] -> [Firewall] -> [Listas de endereços].
Como número da porta (porta, src-porta, dst-porta), você pode especificar uma única porta, várias portas separadas por vírgulas ou um intervalo de portas através de um hífen.
No último MUM no MSC, houve uma boa apresentação sobre o efeito de várias condições na velocidade de processamento de pacotes (lá você aprenderá como usar a tabela bruta para reduzir a carga no roteador), interessados em: gravação e apresentação .
Ações de tabelas
O conjunto de ações disponíveis no pacote depende da tabela em que é processado.

Filtro - tabela de filtragem de tráfego, um dos dois lugares onde você pode soltar o pacote.
NAT - tabela para modificar endereços e portas IP (tpc, udp) no cabeçalho do pacote ip.
Mangle - uma tabela para modificar outros campos do pacote ip e configurar vários rótulos.

Existem três tipos de etiquetas de pacotes internos: conexão, pacote, rota. As etiquetas existem apenas dentro do roteador e não vão para a rede. Um pacote pode ter um rótulo de cada tipo e, ao passar várias regras mark- * em sequência, os rótulos são substituídos.
Os rótulos de rota podem ser configurados apenas nas cadeias de pré-roteamento e saída, o restante em todas as cadeias.
É uma boa prática marcar primeiro a conexão, depois o pacote (pacote) ou a rota (rota). A verificação de etiquetas é mais rápida que os campos de pacotes. Na prática, esse nem sempre é o caso em filas complexas ou a marcação adicional da conexão pbr não é útil.
RAW - uma tabela que permite que os pacotes ignorem o rastreador de conexão. É usado para neutralizar o DoS e reduzir a carga na CPU (por exemplo, eliminando o tráfego multicast). Permite soltar o pacote.
As ações de término concluem o processamento de um pacote na cadeia e o passam para o próximo bloco no fluxo de pacotes, ou descarte-o.
AcçõesQuadro | Acção | Descrição do produto | Terminando? |
---|
Todos | aceitar | Pare de processar o pacote e transfira-o para o próximo bloco de fluxo Pakcet | Sim |
Todos | registro | Informações do pacote de log. Nas versões modernas, você pode adicionar log a qualquer outra ação. | Não |
Todos | passagem | Conte o número de pacotes. Usado para depuração | Não |
Todos | adicione src à lista de endereços e adicione dst à lista de endereços | Adicione o endereço de origem (destino) do pacote à lista fornecida | Não |
Todos | pular | Ir para a cadeia de usuários | Sim |
Todos | retornar | Retornar à cadeia pai. Nas cadeias de base, funciona como aceitar | Sim |
Filtro e Raw | cair | Pare o fluxo de pacotes no fluxo de pacotes e descarte | Sim |
Filtro e Pré-roteamento | fasttrack | Pacote de sinalizador para fluxo rápido de pacotes | Sim |
Filtro | rejeitar | Como queda, mas um remetente de pacote recebe uma notificação (tcp ou icmp) sobre o pacote descartado | Sim |
Filtro | armadilha | Emule a presença de uma porta aberta. Usado para proteção contra DoS, enganosa e (às vezes) depuração | Sim |
NAT | src-nat | Substituição do endereço do remetente pelo especificado | Sim |
NAT | mascarar | Um caso especial de src-nat, substitui o endereço do remetente por um dos endereços da interface, é usado em interfaces dinâmicas (dhcp, vpn). Não é recomendável usar se houver vários ip na interface | Sim |
NAT | o mesmo | Um caso especial de src-nat. Substitui o endereço do remetente por um endereço do intervalo especificado | Sim |
NAT | dst-nat | Substitui o endereço do destinatário pelo especificado | Sim |
NAT | redirecionar | Um caso especial de dst-nat, substitui o endereço do destinatário pelo endereço da interface do roteador ao qual o pacote veio | Sim |
NAT | netmap | Não é um substituto para o dst-nat. Usado para tradução rede a rede, veja exemplos | Sim |
Mangle | marcar conexão | Etiqueta de conexão | Não |
Mangle | marcar pacote | Rótulo de pacote aplicado em filas | Não |
Mangle | marcar roteamento | Rótulo de rota aplicado no roteamento da base de diretiva | Não |
Mangle | mudar ttl | Editar ttl | Não |
Mangle | alterar dcsp (tos) | Alterar decimal dcsp | Não |
Mangle | mudar mss | Alterar mss para tcp syn | Não |
Mangle | limpar df | Sinalizador de limpar não fragmentar | Não |
Mangle | opções de strip ipv4 | Opções avançadas de ipv4 | Não |
Mangle | definir prioridade | Definir prioridade para CoS | Não |
Mangle | rota | Defina o gateway para o pacote. Versão simples do PBR | Não |
Mangle | cheirar tzsp | Encapsular pacotes no udp e enviar para o ip especificado | Não |
Mangle | cheirar pc | Um análogo de tzsp, mas com um tipo diferente de encapsulamento. No wiki, se casos de uso com calea | Não |
Mangle | passagem | Por padrão, a maioria das regras do mangle não impede a passagem do pacote, você pode alterar esse comportamento definindo passtrough = no | Não |
Raw | notrack | Não rastrear pacote no rastreador de conexão | Sim |
Se houver quem deseje, posso escrever mais sobre o FastTrack e o FastPath, mas você não deve esperar milagres com essas tecnologias.
Algumas palavras sobre o DPI
Existem várias possibilidades de examinar o pacote um pouco mais profundo do que o cabeçalho da camada de transporte:
content - procura por uma determinada string em um pacote.
layer7-protocol - armazena em buffer os primeiros 10 pacotes (ou 2KiB) da conexão e procura regexp em dados armazenados em buffer. Um grande número de regras da camada7 afeta significativamente o desempenho.
tls-host é o endereço do nome do host no cabeçalho TLS / SNI de uma conexão HTTPS.
Exemplos
Não copie os exemplos sem pensar, é melhor usar o dispositivo e tentar escrever a configuração você mesmo (ou reescrever os exemplos, mas aprofundar-se no que cada uma das regras faz). Se você não sabe como complementar as regras: nas configurações padrão e mínima da casa, não há acesso ao roteador a partir da interface wan, adicione-o com filtragem pela lista de endereços.
RouterOS de firewall padrão
Uma configuração bastante segura, mas em locais muito confusos:
/ip firewall filter # (established, related) (untracked) add action=accept chain=input connection-state=established,related,untracked # (invalid) add action=drop chain=input connection-state=invalid # icmp add action=accept chain=input protocol=icmp # add action=drop chain=input in-interface-list=!LAN # ipsec add action=accept chain=forward ipsec-policy=in,ipsec add action=accept chain=forward ipsec-policy=out,ipsec # add action=fasttrack-connection chain=forward connection-state=established,related # add action=accept chain=forward connection-state=established,related,untracked # add action=drop chain=forward connection-state=invalid # wan , dstnat (, src-nat dst-nat) add action=drop chain=forward connection-nat-state=!dstnat connection-state=new in-interface-list=WAN /ip firewall nat #Source NAT ipsec, WAN add action=masquerade chain=srcnat ipsec-policy=out,none out-interface-list=WAN
Eu nunca usei a configuração padrão, mas antes o firewall padrão era muito pior.
Firewall doméstico mínimo
A coisa mais fácil de fazer. Sim, o tráfego não rastreado não é permitido nele (mas no estágio do estudo básico do firewall você ainda não precisa dele) e haverá problemas com o ipsec do túnel (novamente, se você pode configurar o ipsec, você mesmo sabe o que precisa ser feito).
/ip firewall filter # (established, related) add chain=input connection-state=established,related action=accept # icmp add chain=input connection-state=new protocol=icmp action=accept # add chain=input connection-state=new in-interface-list=LAN action=accept # add chain=input action=drop # add chain=forward connection-state=established,related action=accept # add chain=forward connection-state=new in-interface-list=LAN action=accept # add chain=forward action=drop /ip firewall nat #Source NAT WAN add chain=srcnat out-interface-list=WAN action=masquerade
Exemplo DMZ
Nos roteadores "domésticos", o acrônimo DMZ gosta de chamar um computador na sub-rede local para o qual todas as portas da rede externa são encaminhadas.
De fato, não é assim, e uma das opções da DMZ é separar o recurso ao qual você deve fornecer acesso da Internet e um ataque bem-sucedido pode ser realizado (um servidor da Web com cms no qual buracos são encontrados constantemente é um bom alvo para um invasor). No caso de hackers, um invasor não poderá afetar os participantes na rede local.

# /ip firewall nat add chain=dstnat dst-port=80,443 action=dst-nat to-address=192.168.200.2 /ip firewall filter # icmp add chain=input connection-state=established,related action=accept add chain=input protocol=icmp connection-state=new action=accept # add chain=input in-interface=ether2-lan action=accept # add chain=input action=drop # add chain=forward connection-state=established,related action=accept # add chain=forward in-interface=ether2-lan connection-state=new action=accept # web add chain=forward out-interface=ether3-dmz dst-address=192.168.200.2 dst-port=80,443 connection-state=new action=accept # add chain=forward action=drop
Hairpin NAT

/ip firewall nat add chain=dstnat dst-port=80 action=dst-nat to-address=192.168.100.2
Uma situação típica é quando você encaminha uma porta para um servidor em uma rede local e tudo funciona de fora, mas dentro da rede local o servidor não está acessível em um endereço externo.
Vamos ver o que acontece:
- O computador 192.168.100.10 envia uma solicitação para 192.0.2.100
- Ele executa o DST-NAT no roteador e o pacote é encaminhado para 192.168.100.2
- O servidor vê que um pacote de 192.168.100.10 chegou a ele no endereço 192.168.100.2 e está respondendo a partir do endereço local
- O computador recebe um pacote inesperado de 192.168.100.2 e o descarta.
A solução é adicionar uma regra adicional que altere o endereço de origem para o endereço do roteador, para que o servidor retorne o pacote ao roteador, que o enviará ao computador inicializador.
/ip firewall nat # add chain=dstnat dst-port=80 action=dst-nat to-address=192.168.100.2 # , add chain=srcnat src-address=192.168.100.0/24 dst-address=192.168.100.2 action=masquerade
Na prática, esse esquema não é usado com frequência, mas, como exemplo de depuração de um firewall, eu realmente gosto dele.
Uso adequado do netmap

O Netmap é uma tecnologia para converter endereços de uma sub-rede para os endereços de outra sub-rede.
O endereço IP (na entrada da máscara) consiste em duas partes: a rede (o número de bits especificado na máscara de sub-rede) e o host (bits restantes). O Netmap altera a parte da rede do endereço, mas não toca na parte do host.

Existem dois roteadores conectados por um canal VPN. Os roteadores servem sub-redes com o mesmo endereçamento. É necessário fazer o acesso entre sub-redes.
Você não pode ficar sem endereçamento adicional.
Os usuários da sub-rede esquerda baterão para a direita através da sub-rede 192.168.102.0/24
Os usuários da sub-rede direita baterão para a esquerda na sub-rede 192.168.101.0/24
Configuração no MikroTik 1.
# /ip route add distance=1 dst-address=192.168.102.0/24 gateway /ip firewall nat # add action=netmap chain=srcnat dst-address=192.168.102.0/24 out-interface=ipip src-address=192.168.100.0/24 to-address=192.168.101.0/24 # add action=netmap chain=dstnat dst-address=192.168.101.0/24 in-interface=ipip src-address=192.168.102.0/24 to-address=192.168.100.0/24
A configuração do MikroTik2 é quase a mesma:
/ip route add distance=1 dst-address=192.168.101.0/24 gateway=10.10.10.1 /ip firewall nat add action=netmap chain=srcnat dst-address=192.168.101.0/24 out-interface=ipip src-address=192.168.100.0/24 to-address=192.168.102.0/24 add action=netmap chain=dstnat dst-address=192.168.102.0/24 in-interface=ipip src-address=192.168.101.0/24 to-address=192.168.100.0/24
Existem configurações mais complexas usando o netmap, por exemplo, se você tiver muitas conexões com pontos remotos com sub-redes que se cruzam e não houver maneira de alterar as configurações no equipamento remoto, mas isso já é um roteamento avançado.
Se você não entende nada (sobre o netmap), não precisa disso e simplesmente não usa esta ação ao encaminhar portas.