Iptabili e dichiarazioni condizionali. È ansible?

Ho provato una ricerca ma non sono riuscito, nel caso mi dispiace e apprezzerò il reindirizzamento.

Ho avuto questo problema in mente: un computer con MAC address M sta inviando pacchetti tramite un router openwrt (o un sistema basato su Linux) e vorrei, solo per provare la possibilità, di passare attraverso un pacchetto da M ma il pacchetto immediatamente dopo essere sceso, poi accettato di nuovo, poi abbandonato e così via.

  • Come faccio ad aprire le porte personalizzate nel mio firewall iptables?
  • Come abilitare il target di TRACE IPtables su Debian Squeeze (6)
  • iptables-save non riesce a scrivere nel file
  • Come bloccare l'accesso a Internet a determinati programmi su Linux
  • I miei iptables sono protetti?
  • iptables, ICMP e RELATIVI
  • Quindi, se il computer con mac M invia 20 pacchetti, passerà solo 10, gli altri 10 saranno eliminati. In modo verboso il risultato desiderato è: accettare, abbandonare, accettare, abbandonare, accettare, abbandonare, accettare, abbandonare, ecc …

    Una spiegazione pseudocode

    condition=ACCEPT for each packet { if ( packet_is_sent_from_adapter_with_mac_M ) { if (condition == ACCEPT) { accept_packet condition=DROP } else { drop_packet condition=ACCEPT } } } 

    È ansible? Dopo googling un po 'sembra che iptables non supporti alcuna dichiarazione condizionale o scripting.

    E se è ansible, che dire di una condizione generale "drop X pacchetti consecutivi dopo Y accetta consecutivamente"?

    addition1 : La domanda in generale è "controllo del stream" non è consentito in iptables? o meglio, poiché le decisioni condizionate sono basate su uno stato ( condizione nello pseudocode), come possiamo salvare lo stato relativo a una certa condizione in iptables e fare qualcosa a verificare questo stato?

    addition2 : Nei commenti sono suggeriti strumenti aggiuntivi (tc) per get il controllo del stream (vale a dire se dichiarazioni, loops, ecc.), si sentono liberi di suggerire combinazioni (forse con un po 'di spiegazione). Grazie!

    One Solution collect form web for “Iptabili e dichiarazioni condizionali. È ansible?”

    Per le tue esigenze, statistic estensione statistic iptables potrebbe funzionare. Impostare la modalità a nth , every a 2 e collegarla alla regola DROP . Quindi forse qualcosa di simile

     iptables -A INPUT -m statistic --mode nth --every 2 -m mac --mac-source xx:xx:xx:xx:xx -j DROP 

    dovrebbe funzionare.

    iptables-extensions man page dice di module statistico questo:

     statistic This module matches packets based on some statistic condition. It supports two distinct modes settable with the --mode option. Supported options: --mode mode Set the matching mode of the matching rule, supported modes are random and nth. [!] --probability p Set the probability for a packet to be randomly matched. It only works with the random mode. p must be within 0.0 and 1.0. The supported granularity is in 1/2147483648th increments. [!] --every n Match one packet every nth packet. It works only with the nth mode (see also the --packet option). --packet p Set the initial counter value (0 <= p <= n-1, default 0) for the nth mode. 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.