iptables не распознает --dport
с участием -p all
.
iptables -A INPUT -p all --dport www -j ACCEPT
дает:
iptables v1.4.4: unknown option `--dport'
Try `iptables -h' or 'iptables --help' for more information.
--destination-port doesn't work either: iptables v1.4.4: unknown option `--destination-port'
Добавление двух отдельных правил для -p tcp
и -p udp
работает нормально, так почему это не работает для -p all
?
Если это важно, это на сервере Ubuntu 10.04 LTS с пакетом iptables версии 1.4.4-2ubuntu2.
--dport не является флагом общих правил iptables. Это флаг для одного из них расширенные модули согласования пакетов. Они загружаются, когда вы используете -p protocol
или -m
. Если вы не укажете -m <protocol>
или -p <protocol>
с конкретный протокол ты не можешь использовать --dport
Вы увидите это в iptables (8) страница руководства:
tcp
These extensions can be used if `--protocol tcp' is specified. It provides the
following options:
...
[!] --destination-port,--dport port[:port]
Destination port or port range specification. The flag --dport is a
convenient alias for this option.
...
Не все протоколы имеют флаг --dport, потому что не все протоколы поддерживают понятие портов.
«все» охватывает не только TCP и UDP; он также охватывает такие протоколы, как ICMP, которые не имеют понятия номеров портов и, следовательно, не могут принимать параметр --dport.