Сегодня я просматривал страницу руководства iptables и заметил, что описание -A гласит: «Добавить одинили большеправила до конца выбранной цепочки». Означает ли это, что если у меня есть:
iptables -A INPUT {...rule1...}
iptables -A INPUT {...rule2...}
можно ли упростить до одной строки?
iptables -A INPUT {...rule1; rule2...}
Я поискал в Google и не нашел ни одного примера, чтобы кто-то делал это, но если возможно, я бы просто использовал некоторые из моих скриптов.
решение1
В одном вызове можно указать только одно определение правила iptables -A
.
Однако если вы используете адрес, например www.example.com, который преобразуется в несколько адресов, то добавляется несколько правил, по одному для каждого адреса.
Например: (используются поддельные IP-адреса...):
$ host www.example.com
www.example.com has address 10.1.2.3
www.example.com has address 10.1.2.4
$ sudo iptables -A INPUT -s www.example.com -j ACCEPT
$ sudo iptables -L INPUT -vn
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
208K 250M ACCEPT all -- * * 192.168.0.0/16 0.0.0.0/0
0 0 ACCEPT all -- * * 10.1.2.3 0.0.0.0/0
0 0 ACCEPT all -- * * 10.1.2.4 0.0.0.0/0
Итак, теперь вы вставили более одного правила с помощью одного iptables -A
вызова.
Согласен, что это не совсем очевидно из описания на странице руководства.
решение2
Правило № 1 на вызов iptables. Параметр «Добавить» отличается от параметра «Вставить». «Добавить» означает... новое правило помещается в конец списка правил, а «Вставить» добавляет правило в начало списка.
iptables -I INPUT {Rule1}
iptables -I INPUT {Rule2}
в результате правила будут выглядеть следующим образом:
{Rule2}
{Rule1}
где
iptables -A INPUT {Rule1}
iptables -A INPUT {Rule2}
приведет к
{Rule1}
{Rule2}