Outras opções
As seguintes opções adicionais podem ser especificadas:
-v, --verbose :: Saída detalhada. Esta opção faz com que o comando "-L" (list) mostre o nome da interface, as opções de regras (se houver) e as máscaras de ToS (Type of Service - Tipo de Serviço, RFC791).
Os contadores de pacotes e bytes serão listados com os sufixos 'K', 'M' ou 'G' para multiplicadores 1000, 1.000.000 e 1.000.000.000, respectivamente (veja a flag "-x" para mudar isso). Para APPEND, INSERT, DELETE e REPLACE, isso faz com que sejam mostradas informações detalhadas sobre a regra ou regras.
-n, --numeric :: Saída numérica. Endereços IP e números de porta serão mostrados em formato numérico. Por padrão, o programa vai tentar mostrá-los como nomes de host, nomes de rede, ou serviços (quando aplicável).
-x, --exact :: Expande números. Mostra o valor exato dos contadores de pacotes e bytes em vez de apenas o número arredondado em K (múltiplos de 1000), M (múltiplos de 1000K) ou G (múltiplos de 1000M). Esta opção só é relevante para o comando "-L".
--line-numbers :: Ao listar regras, este comando adiciona números de linhas para o início de cada regra, correspondendo à posição da regra na chain.
--modprobe=command :: Ao adicionar ou inserir regras em uma chain, use este comando para carregar os módulos necessários (targtes, match extensions, etc.)
Match Extensions
O iptables pode usar módulos correspondentes para pacotes grandes. Estes são carregados de duas maneiras: implicitamente, quando "-p" ou "-protocol" for especificado; ou com as opções "-m" ou "--match" seguidas pelo nome do módulo correspondente.
Após várias opções de linha de comando adicionais tornam-se disponíveis, dependendo do módulo especificado. Você pode especificar vários módulos em uma linha e você pode usar a opção "-h" ou "--help", ajuda, após o módulo especificado, para receber ajuda específica para o módulo.
Os módulos a seguir, estão incluídos no pacote de base e a maioria deles podem ser precedidos por um "!", para inverter o sentido da regra:
addrtype :: Este módulo combina pacotes baseado no
address type. Tipos de endereços são utilizados dentro da pilha de rede do kernel e categorizam endereços em vários grupos. A definição exata desse grupo específico depende do protocolo de três camadas.
Os tipos de endereços possíveis são:
- unspec :: Um endereço indeterminado (ou seja 0.0.0.0)
- unicast :: Um endereço unicast
- local :: Um endereço local
- broadcast :: Um endereço de broadcast
- anycast :: Um pacote de anycast
- multicast :: Um endereço de multicast
- blackhole :: Um endereço de blackhole
- unreachable :: Um endereço inacessível
- prohibit :: Um endereço proibido
- throw fixme
- nat fixme
- xresolve
- [!] --src-type type :: Combina se o endereço de origem é de determinado tipo
- [!] --dst-type type :: Combina se o endereço de destino é de determinado tipo
- --limit-iface-in :: A verificação do tipo de endereço pode ser limitada à interface do pacote que está entrando. Esta opção só é válida com prerouting, input e forward. Ela não pode ser especificada com a opção "--limit-iface-out".
- --limit-iface-out :: A verificação do tipo de endereço pode ser limitada à interface do pacote que está saindo. Esta opção é válida apenas com postrouting, output e forward. Ela não pode ser especificada com a opção "--limite-iface-in".
ah :: Este módulo corresponde ao
spis no cabeçalho de autenticação de pacotes ipsec. [!] --ahspi spi[:spi]
cluster :: Permite implantar gateway e back-end de carga de compartilhamento de grupos sem a necessidade de balanceadores de carga.
Requer que todos os nós enxerguem os mesmos pacotes. Assim, o grupo decide se o nó tem de lidar com um determinado pacote, seguindo as seguintes opções:
--cluster-total-nodes num :: Define o número de nós totais em cluster.
[!] --cluster-local-node num :: Define o número de identificação do nó local.
[!] --cluster-local-nodemask mask :: Define o número id da máscara do nó local. Você pode usar esta opção em vez de "--cluster-local-node".
--cluster-hash-seed value :: Define o valor do
hash jenkins.
Exemplo:
# iptables -a prerouting -t mangle -i eth1 -m cluster --cluster-total-nodes 2 --cluster-local-node 1 --cluster-hash-seed 0xdeadbeef -j mark --set-mark 0xffff
# iptables -a prerouting -t mangle -i eth2 -m cluster --cluster-total-nodes 2 --cluster-local-node 1 --cluster-hash-seed 0xdeadbeef -j mark --set-mark 0xffff
# iptables -a prerouting -t mangle -i eth1 -m mark ! --mark 0xffff -j drop
# iptables -a prerouting -t mangle -i eth2 -m mark ! --mark 0xffff -j drop
E os seguintes comandos para fazer todos os nós verem os mesmos pacotes:
# ip maddr add 01:00:5e:00:01:01 dev eth1
# ip maddr add 01:00:5e:00:01:02 dev eth2
# arptables -a output -o eth1 --h-length 6 -j mangle --mangle-mac-s 01:00:5e:00:01:01
# arptables -a input -i eth1 --h-length 6 --destination-mac 01:00:5e:00:01:01 -j mangle --mangle-mac-d 00:zz:yy:xx:5a:27
# arptables -a output -o eth2 --h-length 6 -j mangle --mangle-mac-s 01:00:5e:00:01:02
# arptables -a input -i eth2 --h-length 6 --destination-mac 01:00:5e:00:01:02 -j mangle --mangle-mac-d 00:zz:yy:xx:5a:27
No caso de conexões TCP, a facilidade de captação (pickup facility) tem que ser desativada para evitar a marcação de pacotes TCP ACK que venham como resposta direta válida:
# echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose
comment :: Permite adicionar comentários (até 256 caracteres) para qualquer regra:
--comment comment
Exemplo:
# iptables -a input -s 192.168.0.0/16 -m comment --comment "a privatized ip block"
connbytes :: Significa que o número de bytes, ou pacotes, de uma conexão (ou um dos dois fluxos que constituem a conexão) foi transferido para longe, ou por média de bytes por pacote.
Os contadores são de 64 bits e, portanto, espera-se que não dê
overflow. ;)
O uso principal é detectar vida longa de downloads e marcá-los para serem agendados usando uma faixa de menor prioridade no controle de tráfego.
Os bytes transferidos por conexão também podem ser vistos através de "conntrack -l" e acessado via
ctnetlink.
Note que, para conexões que não têm contadores de informações, sempre retornará falso. O controle de flag sysctl "net.netfilter.nf_conntrack_acct" será utilizado se as novas conexões forem de bytes/pacotes contados. Fluxos de conexão existentes não serão gaining/losing se a estrutura do contador estiver com a flag sysctl invertida.
[!] --connbytes from[:to] :: Coincide pacotes a partir de uma conexão cuja pacotes/bytes/média do tamanho do pacote for mais do que "from" e menos do que to bytes/pacotes. Se to for omitido, apenas a verificação "from" é feita. "!" é utilizado para combinar com pacotes que não se incluam no intervalo.
--connbytes-dir {original|reply|both} :: Define quais os pacotes a serem considerados.
--connbytes-mode {packets|bytes|avgpkt} :: Verifica a quantidade de pacotes, o número de bytes transferidos ou o tamanho médio (em bytes) de todos os pacotes recebidos até o momento.
Note-se que quando "both" é utilizado em conjunto com "avgpkt", e os dados vão (principalmente) apenas num sentido (por exemplo HTTP), o tamanho do pacote médio será de cerca de metade dos pacotes de dados reais.
Exemplo:
# iptables .. -m connbytes --connbytes 10000:100000 --connbytes-dir both --connbytes-mode bytes ...
connlimit :: Permite restringir o número de conexões paralelas para um servidor por endereço IP do cliente (ou bloco de endereços do cliente).
[!] --connlimit-above n :: Combina se o número de conexões existentes for (não) acima de "n".
--connlimit-mask prefix_length :: Grupo de hosts utilizando o tamanho do prefixo. Para o IPv4, este deve ser um número entre 0 (inclusive) e 32. Para o IPv6, entre 0 e 128.
Exemplos:
#Permite duas conexões telnet por host cliente
iptables -a input -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j reject
#Você também pode definir o contrário utilizando "!" e accept
iptables -a input -p tcp --syn --dport 23 -m connlimit ! --connlimit-above 2 -j accept
#Limita o número de solicitações paralelas HTTP para 16 por rede classe c porte (24 netmask bit)
iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 --connlimit-mask 24 -j reject
#Limita o número para 16 solicitações HTTP paralelas para a rede de conexão local (ipv6)
ip6tables -p tcp --syn --dport 80 -s fe80::/64 -m connlimit --connlimit-above 16 --connlimit-mask 64 -j reject
connmark :: Este módulo corresponde ao campo netfilter associado a uma conexão (que pode ser definido com o alvo "connmark" abaixo).
[!] --mark value[/mask] :: Pacotes em conexões com o valor de marca dada (se uma máscara é especificada, esta é, logicamente, "anded" (concatenada, operador "and") com a marca antes da comparação).
conntrack :: Este módulo, quando combinado com rastreamento de conexão, permite o acesso ao estado de rastreamento da conexão para este pacote/conexão.
[!] --ctstate statelist ::
statelist é uma lista separada por vírgulas dos estados de conexão para combinar. Estados possíveis estão listados abaixo:
- [!] --ctproto l4proto layer-4 :: Protocolo para combinar (por número ou nome)
- [!] --ctorigsrc address[/mask]
- [!] --ctorigdst address[/mask]
- [!] --ctreplsrc address[/mask]
- [!] --ctrepldst address[/mask] :: Combina contra o endereço original/reply source/destination
- [!] --ctorigsrcport port
- [!] --ctorigdstport port
- [!] --ctreplsrcport port
- [!] --ctrepldstport port :: Combina contra original/reply source/destination (tcp/udp/etc.) ou a tecla "gre".
- [!] --ctstatus statelist :: Statelist é uma lista separada por vírgula dos status de conexão para combinar. Os status possíveis estão listados abaixo.
- [!] --ctexpire time[:time] :: Combina tempo restante de vida em segundos contra determinado valor ou intervalo de valores (inclusive)
- --ctdir {original|reply} :: Corresponde a pacotes que estão fluindo na direção especificada. Se este sinalizador não for especificado, corresponde pacotes em ambas as direções.
Estados para "--ctstate":
- invalid :: Significa que o pacote está associado com nenhuma conexão conhecida.
- new :: Significa que o pacote começou uma nova conexão ou está associado a uma conexão que não tem pacotes vindos de ambas as direções.
- established :: Significa que o pacote está associado com uma conexão que tem pacotes vindos de ambas direções.
- related :: Significa que o pacote está começando uma nova conexão, mas está associado a uma conexão existente, como uma transferência de dados de FTP, ou um erro ICMP.
- untracked :: Significa que o pacote não é seguido em tudo. Isso acontece se você usa o alvo notrack na tabela raw.
- snat :: É um estado virtual, combina se o endereço de origem for diferente do endereço de destino.
- dnat :: É um estado virtual, combina se o endereço de destino difere do endereço de origem.
Estados para "--ctstatus":
- none :: Nenhum dos abaixo.
- expected :: Esta é uma conexão esperada (ou seja, um conntrack pode configurar)
- seen_reply :: conntrack viu pacotes em ambas as direções.
- assured :: Entrada conntrack nunca deve ser precocemente expirada.
- confirmed :: Conexão confirmada: pacote originário deixou a caixa.
dccp
- [!] --source-port,--sport port[:port]
- [!] --destination-port,--dport port[:port]
- [!] --dccp-types mask :: Combina quando o tipo de pacote DCCP é uma das 'mask'. 'mask' é uma lista dos tipos de pacotes, separada por vírgula. Os tipos de pacotes são: request response data ack dataack closereq close reset sync syncack invalid.
- [!] --dccp-option number :: Combina se DCP for um conjunto de opções.
dscp :: Este módulo corresponde ao campo de 6 bits DSCP dentro do campo ToS no cabeçalho IP.
dscp substituiu ToS na IETF (Internet Engineering Task Force):
- [!] --dscp value :: Combina contra um valor numérico (decimal ou hexadecimal) o valor [0-63].
- [!] --dscp-class class :: Coincide com a classe diffserv. Este valor pode ser qualquer uma das classes: be, ef, afxx ou csx. Será, então, convertido de acordo com seu valor numérico.
ecn :: Permite combinar os bits ecn do IPv4 com o cabeçalho TCP. ecn é o mecanismo de notificação explícita de congestionamento, como especificado na rfc3168:
- [!] --ecn-tcp-cwr :: Combina se o tcp ecn cwr (janela de congestionamento recebida) bit é definido.
- [!] --ecn-tcp-ece :: Combina se o tcp ecn ece (ecn echo) bit está definido.
- [!] --ecn-ip-ect num :: Corresponde a um determinado ipv4 ect (ecn- capable transport). Você tem que especificar um número entre '0 'e '3'.
esp :: Este módulo corresponde às spis dos cabeçalhos ESP dos pacotes IPsec:
hashlimit ::
hashlimit usa hash para expressar uma taxa limite (como limit) para um grupo de conexões, usando uma única regra do iptables. O agrupamento pode ser feito por hostgroup (source and/or destination address) e/ou por porta.
Dá a capacidade de expressar "-n" pacotes por quantum de tempo por grupo:
- matching on source host "1000 packets per second for every host in 192.168.0.0/16"
- matching on source prot "100 packets per second for every service of 192.168.1.1"
- matching on subnet "10000 packets per minute for every /28 subnet in 10.0.0.0/8"
As opções "--hashlimit-upto", "--hashlimit-above" e "--hashlimit-name" são requeridas.
--hashlimit-upto amount[/second|/minute|/hour|/day] :: Combina se a taxa é menor ou igual a amount/quantum. É especificado como um número, com um sufixo opcional quantum de tempo, o padrão é 3/hour.
--hashlimit-above amount[/second|/minute|/hour|/day] :: Combina se a taxa está acima de amount/quantum.
--hashlimit-burst amount :: Número inicial máximo de pacotes: este número é recarregado por um cada vez que o limite especificado não for atingido, o padrão é 5.
--hashlimit-mode {srcip|srcport|dstip|dstport},... :: É uma lista separada por vírgulas de objetos para levar em consideração. Se nenhuma opção "--hashlimit-mode" for dada, o hashlimit age como limite para fazer a limpeza de hash.
--hashlimit-srcmask prefix :: Quando "--hashlimit-mode srcip" for utilizado, todos os endereços de origem encontrados serão agrupados de acordo com o tamanho do prefixo dado e a sub-rede estará sujeita a hashlimit. O prefix tem de ser entre 0 (inclusive) e 32.
Note que "--hashlimit-srcmask 0" é basicamente fazer a mesma coisa que não for especificada para "--hashlimit-mode srcip", mas é tecnicamente mais caro.
--hashlimit-dstmask prefix :: É como "--hashlimit-srcmask", mas para endereços de destino.
--hashlimit-name foo :: Nome para a entrada
/proc/net/ipt_hashlimit/foo.
--hashlimit-htable-size buckets :: Número de buckets (baldes) da tabela hash
--hashlimit-htable-max entries :: Máximo de entradas no hash.
--hashlimit-htable-expire msec :: Agrupar depois de tantos milissegundos se as entradas de hash expirarem.
--hashlimit-htable-gcinterval msec :: Quantos milissegundos entre intervalos de coleta de lixo.
helper :: Este módulo corresponde aos pacotes relativos a um determinado conntrack-helper.
[!] --helper string :: Combina pacotes relacionados com o especificado no conntrack-helper.
chain :: Pode ser "ftp" para os pacotes relacionados a uma sessão FTP na porta padrão. Para outras portas acrescentar "-portnr" ao valor, ou seja. "ftp-2121".
As mesmas regras se aplicam a outros conntrack-helpers.
icmp :: Esta extensão pode ser usada se '--protocolo icmp' for especificada. Ela oferece a seguinte opção:
[!] --icmp-type {type[/code]|typename} :: Permite a especificação do tipo ICMP, que pode ser um tipo numérico ICMP, par tipo/código, ou um dos nomes ICMP mostrados pelo comando:
# iptables -p icmp -h
iprange :: Combina um determinado intervalo arbitrário de endereços IP:
- [!] --src-range from[-to] :: Combina IP de origem no intervalo especificado.
- [!] --dst-range from[-to] :: Combina o IP de destino com o intervalo especificado.
length :: Este módulo corresponde ao tamanho da carga de camada 3 (por exemplo, camada 4 de pacotes) de um pacote de encontro a um valor específico, ou intervalo de valores.
[!] --length length[:length]
limit :: Este módulo corresponde a uma taxa limite usando um filtro de
token bucket. Uma regra usando esta extensão irá corresponder até este limite ser atingido (a menos que a flag '!' seja usada). Ele pode ser utilizado em combinação com o alvo log para dar o log limitado.
Por exemplo:
- --limit rate[/second|/minute|/hour|/day] :: Taxa média máxima de correspondência: especificada como um número com um opcional '/second', '/minute', '/hour', or '/day', o padrão é 3/hour.
- --limit-burst number :: Número inicial máximo de pacotes: este número é recarregado por um cada vez que o limite especificado acima não for atingido, o padrão é 5.
- mac - [!] --mac-source address :: Corresponde ao endereço MAC de origem. Deve ser na forma: xx: xx: xx: xx: xx:xx. Note-se que isso só faz sentido para os pacotes provenientes de um dispositivo ethernet que entram nas chains prerouting, forward ou input.
mark :: Este módulo corresponde ao campo netfilter associado com um pacote (que pode ser definido com o alvo "mark" abaixo).
[!] --mark value[/mask] :: Combina pacotes com o valor de marca unsigned (não assinado) (se uma máscara é especificada, esta é logicamente anded com a máscara antes da comparação).
multiport :: Este módulo corresponde à um conjunto de portas de origem ou destino. Até 15 portas podem ser especificadas. A faixa de porta (port:port) conta como duas portas. Ela apenas pode ser utilizada em conjunto com "-p tcp" ou "-p udp".
[!] --source-ports,--sports port[,port|,port:port]... :: Combina se a porta de origem é uma das portas especificadas. A flag "--sports" é um apelido conveniente para essa opção.
Várias portas ou intervalos de portas são separados usando uma vírgula e um intervalo de portas é especificado usando dois pontos. O conjunto 53,1024:65535, portanto, combina a porta 53 e todo o intervalo entre 1024 a 65535.
[!] --destination-ports,--dports port[,port|,port:port]... :: Combina se a porta de destino é uma das portas dadas. A flag "--dports" é um álias conveniente para essa opção.
[!] --ports port[,port|,port:port]... :: Combina se a porta de origem ou destino são iguais a uma das portas especificadas.
Nota do tradutor: O módulo multiport permite que seja especificado múltiplas portas para um alvo. Podem ser especificadas até 15 portas em um único parâmetro e basta que uma porta confira para que a regra entre em ação, pois a comparação é feita usando o operador "or.
iptables -a forward -p udp -m multiport --dport 80,1024:65535 -j drop :: Esta regra bloqueia todos os pacotes vindo de todas interfaces para as portas 80 e todo o intervalo entre as portas 1024 e 65535.
osf :: O módulo "osf" faz fingerprinting passivo no sistema operacional. Este módulo compara alguns dados (tamanho da janela, mss, opções e sua ordem, TTL, df, e outros) a partir de pacotes com o conjunto de bits syn.
[!] --genre string :: Combina um operacional utilizando fingerprint (impressão digital) passiva.
--ttl level :: Faz verificações adicionais ttl sobre o pacote para determinar o sistema operacional.
Pode ser um dos seguintes valores:
- 0 → Verdadeiro endereço IP e comparação fingerprint TTL. Geralmente feito em lans.
- 1 → Verifica se o TTL do cabeçalho IP é menor do que a fingerprint. Geralmente feito para endereços globalmente roteáveis (wans, mans etc).
- 2 → Não comparar o TTL.
--log level :: Loga determinado gêneros dentro do
dmesg mesmo que não correspondam ao que se quer. O nível pode ser um dos seguintes valores:
- 0 → Log de tudo ou das assinaturas desconhecidas
- 1 → Acesse apenas o primeiro
- 2 → Registra todas as assinaturas conhecidas correspondentes
Nota do tradutor: O módulo "osf" é bastante interessante para descobrir qual o sistema operacional de onde estão vindo os pacotes. Exemplo:
iptables -i input -j accept -p tcp -m osf --genre linux --log 0 --ttl 2
Este comando gera uma entrada no syslog parecida com esta abaixo:
windows [2000:sp3:windows xp pro sp1, 2000 sp3]: 11.22.33.55:4024 ->
11.22.33.44:139 hops=3 linux [2.5-2.6:] : 1.2.3.4:42624 -> 1.2.3.5:22
hops=4
Os fingerprints do sistema operacional são carregáveis utilizando o programa "nfnl_osf". Para carregar as fingerprints de um arquivo, utilize:
# nfnl_osf -f /usr/share/xtables/pf.os
Para remover:
# nfnl_osf -f /usr/share/xtables/pf.os -d
O banco de dados de fingerprints pode ser baixado de:
owner :: Este módulo tenta combinar várias características do criador do pacote, para pacotes gerados localmente. É válido apenas nas chains output e postrouting.
Pacotes enviados não têm qualquer socket associado a eles. Pacotes de threads do kernel têm um soquete, mas geralmente não proprietário:
- [!] --uid-owner username
- [!] --uid-owner userid[-userid] :: Combina se a estrutura do socket de pacotes de arquivos (se tiver uma) é de propriedade do usuário fornecido. Você também pode especificar um uid numérico ou um intervalo uid.
- [!] --gid-owner groupname
- [!] --gid-owner groupid[-groupid] :: Combina se a estrutura do socket para um pacote de arquivos é de propriedade de um grupo determinado. Você também pode especificar um gid numérico ou um intervalo gid.
- [!] --socket-exists :: Combina se o pacote é associado com um soquete.
Nota do tradutor: O módulo "owner" só examina pacotes que possuem detalhes suficientes no cabeçalho, pacotes que não possuem detalhes suficientes de cabeçalho nunca serão conferidos!
iptables -a output -m owner --gid-owner 1 -p udp -j drop :: Esta regra rejeita conexões indo para portas UDP de pacotes criados pelos usuários pertencentes ao grupo 1.
physdev :: Este módulo corresponde à porta de entrada da ponte e dos dispositivos de saída escravizados num dispositivo de ponte. Este módulo é uma parte da infra-estrutura e permite um transparent bridging ip firewall e só é útil para as versões do kernel 2.5.44 e acima:
- [!] --physdev-in name :: Nome de uma ponte de portas através do qual um pacote é recebido (somente para pacotes que entram nas chains input, forward e prerouting). Se o nome da interface termina em um "+", então qualquer interface que começa com este nome irá corresponder. Se o pacote não chegou por meio de um dispositivo de ponte, este pacote não irá corresponder a esta opção, a menos que '!' seja utilizado.
- [!] --physdev-out name :: Nome de uma ponte de portas através da qual um pacote vai ser enviado (para pacotes que entram nas chains output, forward e postrouting).
Se o nome da interface termina em um "+", então qualquer interface que começa com este nome irá corresponder. Note-se que a chain output de nat e mangle, não pode coincidir com a porta de saída da ponte, no entanto pode coincidir se for na chain output de filter. Se o pacote não sair por um dispositivo de ponte ou se o dispositivo é ainda desconhecido o pacote não irá corresponder a esta opção, a menos que '!' seja utilizado.
- [!] --physdev-is-in :: Combina se o pacote entrou através de uma interface de ponte.
- [!] --physdev-is-out :: Combina se o pacote vai sair através de uma interface de ponte.
- [!] --physdev-is-bridged :: Combina se o pacote está sendo superado e, portanto, não está sendo roteado. Isto só é útil nas chains forward e postrouting.
pkttype :: Este módulo corresponde ao tipo de pacote da camada de enlace.
[!] --pkt-type {unicast|broadcast|multicast}
policy :: Este módulo corresponde à política utilizada por IPsec para o tratamento de um pacote:
- --dir {in|out} :: Utilizado para selecionar a política usada para decapsulation ou para a política que será usada para encapsulamento. "in" é válido nas chains "prerouting, input" e "forward"; "out" é válido nas cahins "postrouting, output" e "forward".
- --pol {none|ipsec} :: Combina se o pacote está sujeito a processamento IPsec.
- --strict :: Combina se para corresponder à política exata ou se alguma regra da política coincide com a política determinada.
- [!] --reqid id :: Corresponde ao reqid da regra de política. O reqid pode ser especificado com setkey(8) usando unique:id como nível.
- [!] --spi spi :: Combina com o spi da sa.
- [!] --proto {ah|esp|ipcomp} :: Coincide com o protocolo de encapsulamento.
- [!] --mode {tunnel|transport} :: Coincide com o modo de encapsulamento.
- [!] --tunnel-src addr[/mask] :: Corresponde à fonte de ponto final endereço de um modo túnel sa. Só é válida com "--mode tunnel".
- [!] --tunnel-dst addr[/mask] :: Coincide com o endereço de destino do ponto final de um túnel de modo sa. Só é válida com --mode tunnel.
- --next :: Inicia o próximo elemento da política especificada. Só pode ser utilizado com "--strict".
quota :: Implementa cotas de rede, diminuindo um contador de bytes em cada pacote:
- --quota bytes :: Quota em bytes.
rateest :: O estimador de taxa pode corresponder com taxas estimadas coletadas pelo alvo "rateest". Ele suporta valores absolutos em bps/pps, comparando dois estimadores de taxa e de correspondência sobre a diferença entre dois estimadores de taxa:
- --rateest1 name :: Nome do estimador de primeira.
- --rateest2 name :: Nome do estimador de segunda (se a diferença deve ser calculado).
- --rateest-delta :: Comparar difference(s) de determinadas rate(s)
- --rateest1-bps value
- --rateest2-bps value :: Compare bytes por segundo.
- --rateest1-pps value
- --rateest2-pps value :: Compare pacotes por segundo.
- [!] --rateest-lt :: Combina se a taxa é menor do que a taxa dada rate/estimator.
- [!] --rateest-gt :: Combina se a taxa é maior do que a taxa dada rate/estimator.
- [!] --rateest-eq :: Combina se a taxa é igual à taxa dada rate/estimator.
Exemplo: Este é o que pode ser utilizado para conexões de percurso de saída de dados a partir de um servidor de FTP em duas linhas com base na largura de banda, disponível no momento que a conexão de dados foi iniciada:
#Estima as taxas de saída:
iptables -t mangle -a postrouting -o eth0 -j rateest --rateest-name eth0 --rateest-interval 250ms --rateest-ewma 0.5s
iptables -t mangle -a postrouting -o ppp0 -j rateest --rateest-name ppp0 --rateest-interval 250ms --rateest-ewma 0.5s
#Marca baseado na largura de banda disponível:
iptables -t mangle -a balance -m conntrack --ctstate new -m helper --helper ftp -m rateest --rateest-delta --rateest1 eth0 --rateest-bps1 2.5mbit --rateest-gt --rateest2 ppp0 --rateest-bps2 2mbit -j connmark --set-mark 1
iptables -t mangle -a balance -m conntrack --ctstate new -m helper --helper ftp -m rateest --rateest-delta --rateest1 ppp0 --rateest-bps1 2mbit --rateest-gt --rateest2 eth0 --rateest-bps2 2.5mbit -j connmark --set-mark 2
iptables -t mangle -a balance -j connmark --restore-mark