Diede
(usa Debian)
Enviado em 09/09/2010 - 00:12h
rodrigo,
Na regra "iptables -A INPUT -i eth0 -s 192.168.100.100 -p tcp --dport 22 -j ACCEPT" a tabela é a FILTER. Como ela (a filter) é a padrão, qualquer regra em que se omite um "-t algumacoisa" tem-se automaticamente filter.
Regras mais extensas são possíveis combinando módulos com opções padrões e afinando-se as especificações da regra. Imagine que uma regra é uma condição, e toda condição pode ser mais detalhada até certo limite.
Veja sua regra: "iptables -A INPUT -i eth0 -s 192.168.100.100 -p tcp --dport 22 -j ACCEPT"
Ela quer dizer "Permita toda tráfego TCP vindo da interface eth0 sob remetente 192.168.100.100 com porta de destino 22".
Esta mesma condição poderia ser ampliada para
"Permita toda tráfego TCP vindo da interface eth0 sob remetente 192.168.100.100 com porta de destino 22 desde que o MAC do remetente seja 09:FF:11:22:44:CC", ao que a regra ficaria
"iptables -A INPUT -i eth0 -s 192.168.100.100 -p tcp -m mac --mac-source 09:FF:11:22:44:CC --dport 22 -j ACCEPT"
Agora, não entendi o que você quis dizer com dados e opções, então não sei te dizer como diferenciá-los.
A sequencia não é bem essa de "iptables [-t tabela] [opção] [chain] [dados] -j [ação]".
Se você seguir a própria man do iptables, a sintaxe mais básica de regra é "iptables [-t table] {-A|-D} chain rule-specification [options...]"
A ordem dos elementos de cada regra não importa (até porque tudo é um fragmento de uma coisa só), desde que os switchs estejam a esquerda de seus valores ("-m mac" e não "mac -m")
Basicamente não há diferença entre as regras:
"iptables -A INPUT -i eth0 -s 192.168.100.100 -p tcp --dport 22 -j ACCEPT"
"iptables -A INPUT -s 192.168.100.100 -p tcp --dport 22 -i eth0 -j ACCEPT"
"iptables -A INPUT --dport 22 -s 192.168.100.100 -p tcp -i eth0 -j ACCEPT"
"iptables -A INPUT -p tcp --dport 22 -s 192.168.100.100 -i eth0 -j ACCEPT"