Назад | Перейти на главную страницу

iptables блокирует трафик

Может кто-нибудь объяснить, почему IPTABLES блокирует любые порты в этом списке правил:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:mysql
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Мне кажется, что строка ACCEPT ALL должна принимать весь трафик, но это не так.

Ваши iptables следует рассматривать для каждой цепочки.

  1. Весь трафик принимается в INPUT цепь.
  2. Весь трафик принимается в OUTPUT цепь.
  3. Весь трафик отклоняется в FORWARD цепочка, даже если для политики по умолчанию установлено значение ACCEPT.

Таким образом, ваш брандмауэр разрешает все входящие и исходящие соединения. Однако он отказывается пересылать любой пакет на любой другой хост.

Общее правило - следовать вашим правилам iptables для совпадения. Если ничего не найдено, примените политику цепочки по умолчанию.

 pkts bytes target     prot opt in     out     source               destination
 6741  691K ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
    1    84 ACCEPT     icmp --  any    any     anywhere             anywhere
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere

Оказывается, то, что я считал пропусканием всего трафика, было разрешением только кольцевого трафика (т.е. "lo").