Manual do IPtables - Comentários e sugestões de regras

Tradução do manual do IPtables com alguns comentários, explicações e sugestões de algumas regras.

[ Hits: 97.647 ]

Por: Buckminster em 11/03/2013


Extensões alvo



O iptables pode usar módulos estendidos: a seguir estão incluídos na distribuição padrão.

classify :: Este módulo permite que você defina o "skb->priority value" (e assim, classificar o pacote em uma classe cbq específica).

--set-class major:minor :: Define os valores maior e menor da classe. Os valores são sempre interpretados como hexadecimal mesmo sem o prefixo 0x.

clusterip :: Este módulo permite que você configure um conjunto simples de nós que compartilham um determinado IP e um endereço MAC sem um balanceador de carga explícito. As conexões são estaticamente distribuídas entre os nós do cluster (aglomerado).
  • --new :: Cria um clusterip novo. Você sempre tem que setar isso na primeira regra de um clusterip.
  • --hashmode mode :: Especifica o modo de hash. Tem que ser um dos sourceip, sourceip-sourceport, sourceip-sourceport-destport.
  • --clustermac mac :: Especifica o clusterip do endereço MAC. Tem que ser um endereço de multicast da camada de enlace.
  • --total-nodes num :: Número de nós totais dentro deste cluster.
  • --local-node num :: Número do nó local neste cluster.
  • --hash-init rnd :: Especifica o random seed utilizado para inicialização de hash.

connmark :: Este módulo define o valor de marca netfilter associado a uma conexão. A marca tem 32 bits de tamanho.
  • --set-xmark value[/mask] :: Zera os bits de dados por máscara e valor xor no ctmark.
  • --save-mark [--nfmask nfmask] [--ctmask ctmask] :: Copia a marca do pacote (nfmark) para a marca de conexão (ctmark) usando as máscaras especificadas.

    O valor nfmark novo é determinado como se segue:

    ctmark = (ctmark & ctmask ~) ^ (& nfmark nfmask)

    Ou seja, ctmask define os bits para limpar e nfmask os bits do nfmark em xor no ctmark. Para ctmask e nfmask o padrão é 0xffffffff.

  • --restore-mark [--nfmask nfmask] [--ctmask ctmask] :: Copia a marca da conexão (ctmark) para a marca de pacotes (nfmark) usando as máscaras especificadas.

    O valor ctmark novo é determinado como se segue:

    nfmark = (nfmark & ~ nfmask) ^ (& ctmark ctmask);

    Ou seja, nfmask define quais bits limpar e ctmask define quais bits do ctmark fazem xor em nfmark. Para ctmask e nfmask o padrão é 0xffffffff.

  • --restore-mark :: Só é válido na tabela mangle.

Os mnemônicos a seguir estão disponíveis para "--set-xmark":
  • --and-mark bits :: Faz um "and do ctmark" com os bits (mnemônico para "--set-xmark 0/invbits", onde invbits é a negação binária dos bits).
  • --or-mark bits :: Faz um or do ctmark com os bits (mnemônico para "--set-xmark bits/bits").
  • --xor-mark bits :: Faz um xor do ctmark com os bits (mnemônico para "--set-xmark bits/0").
  • --set-mark value[/mask] :: Define a marca da conexão. Se uma máscara for especificada, apenas os bits definidos na máscara são modificados.
  • --save-mark [--mask mask] :: Copia a nfmark para a ctmark. Se uma máscara for especificada, apenas os bits são copiados.
  • --restore-mark [--mask mask] :: Copia a ctmark para a nfmark. Se uma máscara for especificada, apenas os bits são copiados. Isso só é válido na tabela mangle.

connsecmark :: Este módulo copia as marcas de segurança dos pacotes para as conexões (se não marcados), e de conexões de volta para os pacotes (também se não marcados). Normalmente é utilizado em conjunto com secmark, só é válido na tabela mangle.
  • --save :: Se o pacote tem uma marcação de segurança, copia para a conexão se a conexão não está marcada.
  • --restore :: Se o pacote não tiver uma marca de segurança e a conexão está feita, copia a marca de segurança da conexão para o pacote.

ct :: O alvo "ct" permite definir parâmetros para um pacote ou para as suas conexões. O alvo atribui um "template" para a entrada de conexão de rastreamento do pacote, que é então utilizado pelo núcleo conntrack ao inicializar uma nova entrada no ct. Este alvo, portanto, só é válida na tabela raw.
  • --notrack :: Desativa o rastreamento de conexão dos pacotes.
  • --helper name :: Use a ajuda identificando a conexão pelo nome. É mais flexível do que utilizar os módulos conntrack helper com portas predefinidas.
  • --ctevents event[,...] :: Apenas gera os eventos conntrack especificados para a conexão. Tipos de eventos possíveis são: : new, related, destroy, reply, assured, protoinfo, helper, mark (refere-se a ctmark, notnfmark), natseqinfo, secmark (ctsecmark).
  • --expevents event[,...] :: Apenas gera os eventos especificados para a conexão. Tipos de eventos possíveis são: new.
  • --zone id :: Atribui o pacote para a zona id e só faz pesquisas nesta zona. Por padrão, os pacotes têm zona 0.

dnat :: Este alvo só é válido na tabela nat, nas chains prerouting e output e chains definidas pelo usuário que são chamadas somente a partir dessas chains. Ele especifica que o endereço de destino do pacote deve ser modificado (e todos os outros pacotes, neste contexto, também serão modificados) e as regras deixam de ser examinadas. É preciso um tipo de opção:
  • --to-destination [ipaddr][-ipaddr][:port[-port]] :: Que pode especificar um novo endereço IP de destino único, uma gama abrangente de endereços IP e, opcionalmente, uma gama de portas (que só são válidas se a regra também especifica -p tcp ou -p udp). Se nenhum intervalo de porta for especificado, então a porta de destino nunca será modificada. Se nenhum endereço IP for especificado, então somente a porta de destino será modificada.

    Em kernels até 2.6.10 você pode adicionar várias opções --to-destination. Para esses kernels, se você especificar mais de um endereço de destino, quer através de um intervalo de endereços onde múltiplas opções "--to-destination", um simples round-robin (um após o outro no ciclo) com balanceamento de carga ocorre entre esses endereços. kernels posteriores (>= 2.6.11-rc1) não têm mais a capacidade de nat para vários intervalos.

  • --random :: Se a opção --random for usada, então o mapeamento de porta será randomizado (kernel >= 2.6.22).
  • --persistent :: Entrega para um cliente o mesmo source-/destination-address para cada conexão. Substitui o alvo same. O suporte para mapeamentos persistentes está disponível a partir do kernel 2.6.29-rc2.

Nota do tradutor: Com o "dnat" é possível alterar o endereço de destino dos pacotes que combinarem com a regra criada.

iptables -t nat prerouting -i eth0 -j dnat --to 172.16.1.123

Nesta regra, todos os pacotes que entrarem pela interface de rede eth0 terão o endereço de destino alterados para 172.16.1.123.

dscp :: Este alvo permite alterar o valor dos bits DSCP dentro do cabeçalho tos do pacote IPv4. Como manipula um pacote, pode ser utilizado apenas na tabela mangle.
  • --set-dscp value :: Define o campo DSCP para um valor numérico (pode ser hexadecimal ou decimal)
  • --set-dscp-class class :: Define o campo DSCP para a uma classe diffserv.

ecn :: Esse alvo permite contornar seletivamente os blackholes ecn conhecidos. Ele pode ser utilizado apenas na tabela mangle.
  • --ecn-tcp-remove :: Remove todos os bits ECN do cabeçalho TCP. Só pode ser utilizado em conjunto com -p tcp.

log :: Ativa o log do kernel para os pacotes. Quando esta opção está definida em uma regra, o kernel Linux irá mostrar algumas informações sobre todos os pacotes correspondentes (como os campos do cabeçalho IP) através do registro no kernel (onde pode ser lido com dmesg ou syslogd (8)).

Este é um "alvo não-terminante", isto é, uma regra continua na próxima regra. Então, se você deseja registrar os pacotes que você recusa, use duas regras separadas com os mesmos critérios de correspondência, primeiro usando log, então drop (ou reject).
  • --log-level level :: Nível de log (numérico ou veja syslog.conf (5)).
  • --log-prefix prefix :: Prefixo mensagens de log com o prefixo especificado; até 29 letras, é útil para distinguir mensagens nos logs.
  • --log-tcp-sequence :: Acessa os números de sequência TCP. Este é um risco de segurança se o registro for acessado por usuários.
  • --log-tcp-options :: Acessa as opções do cabeçalho do pacote TCP.
  • --log-ip-options :: Acessa as opções do cabeçalho do pacote IP.
  • --log-uid :: Acessa o userid do processo que gerou o pacote.

Nota do tradutor: uma regra básica para gerar um arquivo de log dos acessos pela porta 22, SSH:

iptables -a input -p tcp --dport 22 -i eth0 -j log --log-prefix "firewall-ssh"

Alterando a porta você tem o log do serviço desejado.

mark :: Este alvo é utilizado para definir o valor do netfilter associado com o pacote. O alvo pode ser utilizado apenas na tabela mangle. Ele pode, por exemplo, ser utilizado em conjunto com o roteamento baseado em fwmark (precisa iproute2). Tem tamanho de 32 bits.
  • --set-xmark value[/mask] :: Zera os bits dados pela máscara e faz um xor com o valor da marca do pacote ("nfmark"). Se a máscara for omitida, 0xffffffff é assumido.
  • --set-mark value[/mask] :: Zera os bits dados pela máscara e faz um or com o valor da marca do pacote. Se a máscara for omitida, 0xffffffff é assumido.

Os mnemônicos a seguir, estão disponíveis:
  • --and-mark bits :: Faz um and da nfmark com os bits (mnemônico para "--set-xmark 0/invbits", onde "invbits" é a negação binária dos bits).
  • --or-mark bits :: Faz um or da nfmark com os bits (mnemônico para--set-xmark bits/bits).
  • --xor-mark bits :: Faz um xor da nfmark com os bits (mnemônico para--set-xmark bits/o).

masquerade :: Este alvo só é válido na tabela nat na chain postrouting. Ele só deve ser utilizado com IP atribuído dinamicamente (dialup): se você tem um endereço IP estático, você deve usar o alvo snat.

O mascaramento é equivalente a especificar um mapeamento do endereço de IP dos pacotes da interface de saída. Quando a interface estiver desligada a conexão é perdida. Este é o comportamento correto quando a conexão seguinte seja pouco provável que tenha o endereço mesma interface (e, portanto, todas as conexões estabelecidas serão perdidas de qualquer maneira).

É preciso uma opção:
  • --to-ports port[-port] :: Especifica uma faixa de portas de origem, substituindo o padrão snat de seleção heurística de porta (ver acima). Isso só é válido se a regra também especifica -p tcp ou -p udp.
  • --random :: Randomiza o mapeamento da porta de origem (kernel >= 2.6.21).

mirror :: É uma demonstração experimental que inverte a origem e os campos de destino do cabeçalho IP e retransmite o pacote. Só é válido nas chains input, forward e prerouting e nas chains definidas pelo usuário que são chamadas somente a partir dessas chains.

Note que os pacotes de saída não são vistos por qualquer filtragem de pacotes, roteamento de conexões ou nat para evitar loops e outros problemas.

netmap :: Esse alvo permite mapear estaticamente toda uma rede de endereços para outra rede de endereços. Ele só pode ser utilizado a partir de regras na tabela nat.
  • --to address[/mask] :: Endereço de rede para mapear. O endereço resultante será construído da seguinte maneira: todos os bits 1 da máscara são preenchidos a partir do 'endereço' novo. Todos os bits zero na máscara são preenchidos a partir do endereço de origem.

nflog :: Este alvo fornece logging dos pacotes. Quando este alvo está definido para uma regra, o kernel do Linux vai passar o pacote para o registro back-end para registrar o pacote.

Isso geralmente é utilizado em combinação com "nfnetlink_log" como back-end de registro, que será o pacote multicast através de um soquete netlink para um grupo específico de multicast.

Processos userspace podem se inscrever para o grupo para receber os pacotes. Como o log, este é um alvo não-terminante, ou seja, a regra atual continua na próxima regra.
  • --nflog-group nlgroup :: Define o grupo de netlink (1 - 2 ^ 32-1) a que os pacotes pertencem (aplicável apenas para nfnetlink_log). O valor padrão é 0.
  • --nflog-prefix prefix :: chain de prefixo para incluir na mensagem de registo, até 64 caracteres, útil para distinguir mensagens nos logs.
  • --nflog-range size :: Número de bytes a serem copiados para o userspace (aplicável apenas para nfnetlink_log). Caso o nfnetlink_log especificar seu próprio range, esta opção o substitui.
  • --nflog-threshold size :: Número fila de pacotes do kernel antes de enviá-los para o userspace (aplicável apenas para nfnetlink_log). Valores mais altos resultam em menos sobrecarga por pacote, mas demora mais até que os pacotes procurem o userspace. O valor padrão é 1.

nfqueue :: Este alvo é uma extensão do alvo "queue". Ao contrário de queue, ele permite que você coloque um pacote em qualquer fila específica, identificada pelo seu número de fila de 16 bits.

Ele só pode ser utilizado com as versões do kernel 2.6.14 ou acima, uma vez que exige o apoio do kernel nfnetlink_queue. A opção "queue-balance" foi adicionada no linux 2.6.31.
  • --queue-num value :: Isso especifica o número da fila. Números de fila válidos são de 0 a 65535. O valor padrão é 0.
  • --queue-balance value:value :: Isto especifica uma série de filas. Os pacotes são então equilibrados entre as filas de dados. Isso é útil para sistemas multicore: inicia várias instâncias do programa userspace em queues x, x+1, .. x+n and use "--queue-balance x:x+n". Pacotes pertencentes à mesma conexão são colocados na mesma nfqueue.

notrack :: Este alvo desativa o rastreamento de conexões. Ela pode apenas ser utilizado na tabela raw.

rateest :: O alvo rateest coleta estatísticas, realiza cálculo de estimativa de taxas e salva os resultados para posterior avaliação.
  • --rateest-name name :: Conta os pacotes combinados no pool referido pelo nome, que é de escolha livre.
  • --rateest-interval amount{s|ms|us} :: Intervalo de taxa de medição em segundos, milissegundos ou microssegundos.
  • --rateest-ewmalog value :: Medição da taxa média de tempo constante.

redirect :: Este alvo só é válido na tabela nat nas chains prerouting e output e nas chains definidas pelo usuário que são chamadas somente a partir dessas chains. Ele redireciona o pacote para a própria máquina, alterando o IP de destino para o endereço principal da interface de entrada (pacotes gerados localmente são mapeados para o endereço 127.0.0.1).
  • --to-ports port[-port] :: Especifica uma porta de destino ou intervalo de portas: sem isso a porta de destino nunca é alterada. Isso só é válido se a regra também especifica "-p tcp", ou "-p udp".
  • --random :: Se a opção "--random" for usada, então os mapeamentos de portas serão randomizados (kernel >= 2.6.22).

reject :: É utilizado para enviar de volta um pacote de erro em resposta ao pacote combinado: caso contrário, é equivalente a drop por isso é um target terminado, finalizando a regra em execução.

Esse alvo é válido apenas nas chains input, forward e output e nas chains definidas pelo usuário que são chamadas somente a partir dessas chains. A seguinte opção controla a natureza do pacote de erros retornados:
  • --reject-with type :: O tipo de dado pode ser icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreachable, icmp-net-prohibited, icmp-host-prohibited ou icmp-admin-prohibited (*) que retorna a mensagem de erro icmp apropriada (port-unreachable é o padrão).

A opção "tcp-reset" pode ser usada em regras que correspondem apenas ao protocolo TCP: isso faz com que um pacote TCP RST seja enviado de volta. Isto é principalmente útil para bloquear sondagem ident (113/TCP) que frequentemente ocorrem ao enviar e-mail para hosts de correio quebrados (que não vai aceitar o e-mail de qualquer maneira).

(*) Usando icmp-admin-prohibited com kernels que não suportam irá resultar em drop ao invés de reject.

same :: Similar ao snat/dnat dependendo da chain: é preciso um intervalo de endereços ("--to 1.2.3.4-1.2.3.7") e dá ao cliente o mesmo source-/destination-address para cada conexão.
  • nb :: o alvo dnat com a opção "--persistent" substitui alvo "same".
  • --to ipaddr[-ipaddr] :: Endereços para mapear a origem. Pode ser especificado mais de uma vez para vários intervalos.
  • --nodst :: Não utiliza IP de destino nos cálculos quando seleciona um novo endereço IP de origem.
  • --random :: O mapeamento de portas será forçosamente randomizado para evitar ataques baseados na previsão de porta (kernel >= 2.6.21).

secmark :: Isto é utilizado para definir o valor da marca de segurança associado com o pacote para uso de subsistemas de segurança, tais como o SELinux. Só é válido na tabela mangle. Tem 32 bits de tamanho.
  • --selctx security_context

set :: Este módulo adiciona e/ou exclui entradas de conjuntos de IP que podem ser definidas pelo ipset (8).
  • --add-set setname flag[,flag...] :: Adiciona o(s) endereço(s)/porta(s) do pacote para os conjuntos.
  • --del-set setname flag[,flag...] :: Apaga o(s) endereço(s)/porta(s) do pacote a partir dos conjuntos onde as flags são especificações src e/ou dst e não pode haver mais do que seis delas.

O uso de "-j" set exige que o kernel tenha suporte para ipset. Como kernels padrões não possuem, o pacote ipset ou xtables-addons precisa ser instalado.

snat :: Este alvo só é válido na tabela nat na chain postrouting. Ele especifica que o endereço de origem do pacote deve ser modificado (e todos os outros pacotes, neste contexto, também serão modificados), e as regras deixam de ser examinadas. É preciso um tipo de opção:
  • --to-source ipaddr[-ipaddr][:port[-port]] :: Que pode especificar um novo endereço IP de origem único, um range abrangente de endereços IP e, opcionalmente, um range de portas (que só é válido se a regra também especifica -p tcp ou -p udp).

    Se nenhum intervalo de porta for especificado, então as portas de origem abaixo de 512 serão mapeadas para outras portas abaixo de 512; aquelas entre 512 e 1023, inclusive, serão mapeadas para portas abaixo de 1024, e outras portas serão mapeadas para portas acima de 1024, inclusive.

    Sempre que possível, nenhuma alteração de porta será feita em kernels até 2.6.10, você pode adicionar várias opções "--to-source". Para esses kernels, se você especificar mais de um endereço de origem, quer através de um intervalo de endereços ou múltiplas opções "--to-source", um simples round-robin (um após o outro no ciclo) ocorre entre esses endereços. kernels posteriores (>= 2.6.11-rc1) não têm mais a capacidade de nat para vários intervalos.

  • --random :: Se a opção "--random" for usada, então os mapeamentos de portas serão randomizados (kernel >= 2.6.21).
  • --persistent :: Dá a um cliente o mesmo "source-/destination-address" para cada conexão. Substitui o alvo same. O suporte para mapeamentos persistentes está disponível a partir de 2.6.29-rc2.

Nota do tradutor: Com o snat ( source nat ) é possível alterar o endereço de origem no cabeçalho (header) dos pacotes que combinam com a regra criada.

# iptables -t nat -a postrouting -o eth0 -j snat --to 172.16.1.123

Nesta regra, todos os pacotes que saírem pela interface de rede eth0 terão os endereços de origem alterados para 172.16.1.123.

tcpmss :: Esse alvo permite alterar o valor MSS de pacotes TCP SYN para controlar o tamanho máximo da conexão (geralmente limitando a MTU de sua interface de saída para menos 40 no IPv4 ou 60 para IPv6). É claro, que só pode ser utilizado em conjunto com -p tcp e só é válido na tabela mangle.

Este alvo é utilizado para levar a melhor sobre "isps braindead" mal intencionados, ou para servidores que bloqueiam "icmp fragmentation needed" ou pacotes "icmpv6 packet too big".

Os sintomas deste problema são que tudo funciona bem a partir do seu GNU/Linux firewall/router, mas as máquinas por trás dele nunca pode trocar pacotes grandes:
  1. Os navegadores da web conectam, mas não recebem dados.
  2. E-mails pequenos funcionam bem, mas e-mails grandes travam.
  3. SSH funciona bem, mas o SCP trava depois do handshaking inicial.

A solução é ativar essa opção e adicionar a seguinte regra na configuração do firewall:

iptables -t mangle -a forward -p tcp --tcp-flags syn,rst syn -j tcpmss --clamp-mss-to-pmtu
--set-mss value


Ela define explicitamente a opção MSS para o valor especificado. Se o MSS do pacote é menor do que o valor, então não vai ser aumentado (de Linux 2.6.25 em diante). Evitar problemas com hosts depende de um MSS adequado.

--clamp-mss-to-pmtu :: O valor MSS é ajustado automaticamente para path_mtu -40 para IPv4 e -60 para IPv6. Isto pode não funcionar como desejado, pois onde existem rotas assimétricas com diferentes caminhos MTU, o kernel utiliza o caminho MTU que iria utilizar para enviar pacotes de si mesmo para endereços IP de origem e destino.

Antes do Linux 2.6.25, apenas o caminho MTU para o endereço IP de destino era considerado para esta opção; kernels subsequentes também consideram o caminho MTU para o endereço IP de origem. Estas opções são mutuamente exclusivas.

tcpoptstrip :: Este alvo tira as opções TCP fora de um pacote TCP (ela vai substituí-las por no-ops) você vai precisar adicionar os parâmetros "-p tcp".
  • --strip-options option[,option...] :: Tira a(s) opções dada(s). As opções podem ser especificadas pela opção de número do TCP ou pelo nome simbólico.

A lista de opções reconhecidas podem ser obtidas com:

iptables with -j tcpoptstrip -h

tos :: Este módulo define o campo tipo de serviço no cabeçalho IPv4 (incluindo o "precedence" bits) ou define o campo "priority"no cabeçalho IPv6. Note que os tos compartilham os mesmos bits DSCP e ECN. O alvo tos só é válido na tabela mangle.
  • --set-tos value[/mask] :: Zera os bits dados pela máscara e faz um xor nos campos ToS/priority. Se a máscara for omitida, 0xff é assumido.
  • --set-tos symbol :: Especifica um nome simbólico quando utiliza o alvo tos para IPv4. Ele implica uma máscara de 0xff.

A lista de nomes reconhecidos ToS, pode ser obtida pelo:

# iptables with -j tos -h

Os mnemônicos a seguir, estão disponíveis:
  • --and-tos bits :: Faz um and do valor tos com os bits (mnemônico para --set-tos 0/invbits, onde invbits é a negação binária dos bits).
  • --or-tos bits :: Faz um "or" do valor tos com os bits (mnemônico para --set-tos bits/bits).
  • --xor-tos bits :: Faz um "xor" do valor tos com os bits (mnemônico para "--set-tos bits/0").

tproxy :: Este alvo só é válido na tabela mangle na chain prerouting e nas chains definidas pelo usuário que são chamadas somente a partir desta chain. Ele redireciona o pacote para um socket local sem alterar o cabeçalho do pacote. Pode também alterar o valor da marca que pode então ser usado em regras avançadas de roteamento. Leva três opções:
  • --on-port port :: Especifica uma porta de destino a ser usada. É uma opção desejada, 0 significa que a porta de destino é a mesma que a original. Isso só é válido se a regra também especifica "-p tcp", ou "-p udp".
  • --on-ip address :: Especifica um endereço de destino. Por padrão, é o endereço IP da interface de entrada. Isso só é válido se a regra também especificar "-p tcp", ou "-p udp".
  • --tproxy-mark value[/mask] :: Marca os pacotes com value/mask. O valor ajustado fwmark pode ser utilizado para roteamento avançado (necessário para o proxy transparente trabalhar, caso contrário estes pacotes serão encaminhados, o que provavelmente não é o que você quer).

trace :: Este alvo marca pacotes para o kernel registrar cada regra com os pacotes que atravessam as tabelas, as chains e as regras (os módulo ipt_log ou ip6t_log são necessários).

Os pacotes são registrados com o prefixo string: "trace: tablename:chainname:type:rulenum" onde o tipo pode ser "rule" para a regra simples, "return" para regra implícita no final de uma chain definida pelo usuário e "policy" para a política construída nas chains. Ele pode apenas ser utilizado na tabela raw.

ttl :: É utilizado para modificar o campo TTL do cabeçalho IPv4. O campo TTL determina quantos saltos (roteadores) que um pacote pode atravessar até o tempo de vida.

Definir ou incrementar o campo TTL pode ser potencialmente muito perigoso por isso deve ser evitado a qualquer custo.

Nunca defina ou incremente o valor dos pacotes que deixam sua rede local!

mangle table.
--ttl-set value - Define o valor TTL para 'valor'.
--ttl-dec value - Decrementa o valor do campo TTL.
--ttl-inc value - Incrementa o valor do campo TTL.


ulog :: Este alvo fornece o log do userspace dos pacotes. Quando está definido para uma regra, o kernel do Linux será multicast para este pacote através de um soquete netlink.

Um ou mais processos do usuário podem então inscrever vários grupos de multicast e receber os pacotes. Tal como log, este é um "alvo não-terminante", isto é, a regra atual continua na próxima regra.
  • --ulog-nlgroup nlgroup :: Isto especifica o grupo netlink (1-32) para o qual o pacote é enviado. O valor padrão é 1.
  • --ulog-prefix prefix :: Estabelece o prefixo das mensagens de log; até 32 caracteres, é útil para distinguir mensagens nos logs.
  • --ulog-cprange size :: Número de bytes a serem copiados para o espaço do usuário. O valor de 0 sempre copia o pacote inteiro, independentemente de seu tamanho. O padrão é 0.
  • --ulog-qthreshold size :: Número de pacotes para a fila dentro do kernel. Definir esse valor como, por exemplo, 10, acumula 10 pacotes dentro do kernel e os transmite como uma mensagem netlink multipart para o userspace. O padrão é 1 (para compatibilidade com versões anteriores).

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Outras opções / Match Extensions
   3. Match Extensions (Parte 1)
   4. Match Extensions (Parte 2)
   5. Extensões alvo
   6. Diagnósticos / Compatibilidade / Autores
Outros artigos deste autor

Como um monte de letras de um código fonte transforma-se em voltagens?

Instalação do PostgreSQL, Apache2 e PHP8 no Debian Buster 10 e no Stretch 9

Manual traduzido do Squid

Compilação do Squid 3 no Debian Wheezy

Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET

Leitura recomendada

IPTABLES - Conceitos e aplicação

Instalação do Layer7 no Debian Etch

Iptables + Layer7

Usando o PF - Packet Filter

Mandrake Firewall - Firewall com interface amigável

  
Comentários
[1] Comentário enviado por danniel-lara em 11/03/2013 - 19:59h

Parabéns ,
Ficou Bagual mesmo o Artigo
já esta nos favoritos , assim o dia que vir um Manolo querendo saber sobre Iptables
já tenho uma boa referencia de leitura para o vivente

[2] Comentário enviado por Buckminster em 11/03/2013 - 20:35h

Obrigado, tchê!

[3] Comentário enviado por l0g1in em 12/03/2013 - 01:16h

Parabéns ficou massa, tudo bem explicadinho e de facil compreensão belo manual e parabéns por disponibilizar seu tempo e seu conhecimento para galera do VOL, o mundo Software Livre agradece! [];

[4] Comentário enviado por Buckminster em 12/03/2013 - 02:14h

Grato. Estamos aí, fuçando no Linux.

[5] Comentário enviado por cruzeirense em 12/03/2013 - 10:37h

Parabens cara! Algo muito útil...

[6] Comentário enviado por Buckminster em 12/03/2013 - 15:41h

Grato. Estamos aí.

[7] Comentário enviado por Roger86 em 12/03/2013 - 18:07h

Muito bom !!! Parabéns.

[8] Comentário enviado por Buckminster em 13/03/2013 - 12:58h


[7] Comentário enviado por Roger86 em 12/03/2013 - 18:07h:

Muito bom !!! Parabéns.


Obrigado.

[9] Comentário enviado por phrich em 15/03/2013 - 16:48h

Excelente artigo!

[10] Comentário enviado por Buckminster em 15/03/2013 - 23:41h


[9] Comentário enviado por phrich em 15/03/2013 - 16:48h:

Excelente artigo!


Obrigado.


[11] Comentário enviado por Tacioandrade em 02/04/2013 - 13:42h

Parabéns pelo artigo, esse guia ficou simplificado, porem bem completo e explicativo, serve muito bem como um guia de bolso. =D


Sucesso.

[12] Comentário enviado por Buckminster em 02/04/2013 - 14:54h


[11] Comentário enviado por Tacioandrade em 02/04/2013 - 13:42h:

Parabéns pelo artigo, esse guia ficou simplificado, porem bem completo e explicativo, serve muito bem como um guia de bolso. =D


Sucesso.


Obrigado. A intenção foi essa mesma.

[13] Comentário enviado por IgorBruttal em 24/08/2013 - 06:58h

Muito bom, parabéns!

[14] Comentário enviado por elsonsantos em 28/08/2013 - 21:40h

Prezados,

Estou com o seguinte problema. Tenho um firewall configurado, controlando um rede da seguinte forma:

eth0 recebe internet
eth1 distribui a internet já filtrada e com squid (nao transparente)

A empresa mudou agora para um empresa de internet que interligou as 4 filiais e a matriz. O que acontece é que recebemos a internet através de um roteador dessa empresa pela porta 1 do roteador e a 2 faz a comunicação das outras 7.4 redes.
O que eu fiz foi ligar essa porta 1 na eth0 do meu firewall e coloquei a eth1 para a porta 2 do roteador da empresa de internet para que pegue as regras de meu firewall com squid.
Essa empresa pediu para que eu fizesse as regras corretamente pois o meu firewall que vai distribuir a net para as outras redes.

lá esta assim

chega o ip válido 177.x.x.x que vai na etho do firewall
sai 172.16.16.x na eth1 para a porta 2 do roteador da empresa. Essa porta 2 comunica com as demais redes:

filial1 172.16.17.x
filial2 172.16.18.x
filial3 172.16.18.x

Como faço o firewall controlar essas redes e compartilhar a internet. A intenção é que essas redes conversem entre si e respeitem as regras do proxy.

acho que é isso!!!

[15] Comentário enviado por Buckminster em 27/09/2013 - 02:24h


[14] Comentário enviado por elsonsantos em 28/08/2013 - 21:40h:

Prezados,

Estou com o seguinte problema. Tenho um firewall configurado, controlando um rede da seguinte forma:

eth0 recebe internet
eth1 distribui a internet já filtrada e com squid (nao transparente)

A empresa mudou agora para um empresa de internet que interligou as 4 filiais e a matriz. O que acontece é que recebemos a internet através de um roteador dessa empresa pela porta 1 do roteador e a 2 faz a comunicação das outras 7.4 redes.
O que eu fiz foi ligar essa porta 1 na eth0 do meu firewall e coloquei a eth1 para a porta 2 do roteador da empresa de internet para que pegue as regras de meu firewall com squid.
Essa empresa pediu para que eu fizesse as regras corretamente pois o meu firewall que vai distribuir a net para as outras redes.

lá esta assim

chega o ip válido 177.x.x.x que vai na etho do firewall
sai 172.16.16.x na eth1 para a porta 2 do roteador da empresa. Essa porta 2 comunica com as demais redes:

filial1 172.16.17.x
filial2 172.16.18.x
filial3 172.16.18.x

Como faço o firewall controlar essas redes e compartilhar a internet. A intenção é que essas redes conversem entre si e respeitem as regras do proxy.

acho que é isso!!!


Cria uma VPN entre as redes e depois tendo os servidores pingando as estações da rede remota através da VPN, faça o masquerade via Iptables da matriz para as filais.

Mais ou menos assim:

iptables -t nat -A POSTROUTING -s 172.16.16.0/xx -o tun0 -j MASQUERADE << Iptables Matriz


Depois libera a comunicação no FORWARD do servidor da Matriz e Filiais


Iptables Matriz:

iptables -A FORWARD -s 172.16.16.0/xx -d 172.16.17.0/xx -j ACCEPT
iptables -A FORWARD -s 172.16.16.0/xx -d 172.16.18.0/xx -j ACCEPT
iptables -A FORWARD -s 172.16.16.0/xx -d 172.16.19.0/xx -j ACCEPT

iptables -A FORWARD -s 177.x.x.0/xx -d 172.16.16.0 -p icmp -j ACCEPT

Iptables Filiais (essas duas regras abaixo você coloca em cada Iptables das filiais mudando os endereços de rede para cada filial):

iptables -A FORWARD -s 172.16.17.0/xx -d 172.16.16.0/xx -j ACCEPT
iptables -A FORWARD -s 177.x.x.0/xx -d 172.16.17.0/xx -p icmp -j ACCEPT

É mais ou menos isso. De repente você precise acrescentar uma regra ou outra, mas acredito que assim já dá para você ter uma boa idéia.

E como teu Squid não é transparente é só setar o proxy da matriz nos navegadores e redirecionar para ele no servidor da matriz com Iptables.

[16] Comentário enviado por removido em 18/11/2013 - 14:46h

òtima referência, parabéns, grande trabalho. Um ótimo link para responder a preguiçosos no fórum.

[17] Comentário enviado por Buckminster em 30/11/2013 - 01:19h


[16] Comentário enviado por tropper em 18/11/2013 - 14:46h:

òtima referência, parabéns, grande trabalho. Um ótimo link para responder a preguiçosos no fórum.


Obrigado.

[18] Comentário enviado por alysonpires em 05/12/2013 - 05:01h

Tu é o cara! Parabéns novamente!

[19] Comentário enviado por Buckminster em 16/12/2013 - 13:10h


[18] Comentário enviado por alysonpires em 05/12/2013 - 05:01h:

Tu é o cara! Parabéns novamente!


Obrigado!

[20] Comentário enviado por Kalang0o em 01/01/2014 - 11:01h

Buckminster,

Grato por compartilhar seu conhecimento, este material é uma excelente fonte de pesquisa e você está contribuindo para o aprendizado não só do pessoal daqui do VOL, mas também da galáxia inteira. Depois que o google inventou o "google tradutor", este artigo será visitado até pelo pessoal de outros planetas =].

Valeu !!!

[21] Comentário enviado por Buckminster em 10/01/2014 - 10:48h


[20] Comentário enviado por Kalang0o em 01/01/2014 - 11:01h:

Buckminster,

Grato por compartilhar seu conhecimento, este material é uma excelente fonte de pesquisa e você está contribuindo para o aprendizado não só do pessoal daqui do VOL, mas também da galáxia inteira. Depois que o google inventou o "google tradutor", este artigo será visitado até pelo pessoal de outros planetas =].

Valeu !!!


Obrigado.

O Google Tradutor é uma ótima ferramenta. Eu uso sempre quando estou com preguiça de traduzir um texto grande, depois é só ajeitar algumas coisas na tradução.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts