In alcuni casi può essere utile marcare i pacchetti per poi prendere, in base a queste, delle decisioni di instradamento particolari (routing).
In particolare può essere utilizzato assieme al comando tc del pacchetto iproute2 per gestire il controllo del traffico.
I pacchetti sono sottoposti a tutte le regole presenti in questa tabella, anche se ad esempio soddisfano già la prima regola.
Permette di specificare il valore ed eventualmente anche la maschera che contrassegnerà i pacchetti specificati. E' possibile far precedere all'opzione il carattere '!' per negare.
Esempio1
#!/bin/bash # # Esempio 1 # modprobe ipt_MARK ETH=eth0 FTP=1 TELNET=2 PC1=192.168.0.2 PC2=192.168.0.3 FAST=1 SLOW=0 # -------------------------------------------------------------------------------- # Prima che i pacchetti generati localmente siano immessi nella rete in base alla # porta di destinazione sono marcati con un valore. # NOTA: Qui si utilizza la catena OUTPUT ma della tabella mangle ! # -------------------------------------------------------------------------------- iptables -A OUTPUT -o $ETH -t mangle -p tcp --dport ftp -j MARK --set-mark $FTP iptables -A OUTPUT -o $ETH -t mangle -p tcp --dport telnet -j MARK --set-mark $TELNET # -------------------------------------------------------------------------------- # Prima che i pacchetti siano instradati sono marcati in base all'indirizzo di destinazione # Il kernel potrà utilizzare queste informazioni ad esempio per indirizzare i # pacchetti FAST su una "banda" veloce e i SLOW su una lenta. # -------------------------------------------------------------------------------- iptables -A PREROUTING -t mangle -p tcp -d $PC1 -j MARK --set-mark $FAST iptables -A PREROUTING -t mangle -p tcp -d $PC2 -j MARK --set-mark $SLOW