LINUX.ORG.RU

Дублирование в iptables

 


0

1

У меня в роутере ASUS в iptables записаны такие правила

Chain FORWARD (policy ACCEPT) num target prot opt source destination

1 ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED

2 DROP all – anywhere anywhere

3 DROP all – anywhere anywhere state INVALID

4 ACCEPT all – anywhere anywhere

5 ACCEPT all – anywhere anywhere ctstate DNAT

Я их понимаю следующим образом:

1 - разрешить всё и всем, кто установил соединение.

2 - запретить всё и всем (вроде только тем, у кого state не RELATED и не ESTABLISHED)

3 - запретить всё и всем, кто установил некорректное соединение

4 - разрешить всё и всем

5 - разрешить чё-то там (получать ответ не от того, кого спрашивали, вроде)

Правильно ли я это всё понимаю?

Зачем такой огород? Что изменится, если переписать в таком порядке: 1,5,3,2?



Последнее исправление: mf_ (всего исправлений: 2)

Покажите правила в нормальном виде, ″iptables -L -n -v″, а лучше ″iptables-save″.

А с другой стороны, в правилах, генерируемых скриптами и надстройками часто бывает много лишнего и не особо осмысленного.

mky ★★★★★
()
Ответ на: комментарий от mky

Спасибо за ответ. Хотел скинуть всю эту огромную портянку с правилами, но передумал. Во-первых, правила FORWARD уже поменялись, во-вторых всё о чём я хотел спросить уже приведено в исходном сообщении. Как на ваш взгляд, что изменится, если удалить правило 4 и остальные расположить в порядке 1,5,3,2? У меня нет конкретной проблемы, я хочу понять принцип. Спасибо.

mf_
() автор топика

Правила в цепочке исполняются по порядку. В правиле есть сравнения и действие. Сравнения могут подходить к пакету (тогда действие выполняется) или не подходить (тогда правило пропускается). Действие может быть финальным (ACCEPT или DROP) или не финальным (return, jump, call, etc). После финального действия обработка пакета завершена.

В правиле 2 сравнения подходят к любому пакету, действие финальное. Поэтому правила 3,4,5 не исполняются никогда. По идее на них должны быть нулевые счётчики пакетов.

iliyap ★★★★★
()
Ответ на: комментарий от mf_

Я не могу сказать что поменяется, не видя правил полностью. Может быть, что «anywhere anywhere» не для всех интерфесов, а ограничен конкретным интерфейса (интерфейсами). И такой набор правил подразумевает указание в них интерфейса, иначе правило 2 уничтожит все пакеты, поэтому не возникнет пакетов, с состоянием RELATED,ESTABLISHED.

А по поводу правила 4, если его удалить, и ограничиться только этим правилами, то пакеты NEW могут пройти только как DNAT, то есть будут проходить только соединения, попавшие под -j DNAT правило в таблице nat. Если пакет NEW не прошёл, то ESTABLISHED не возникнет.

хочу понять принцип

Принцип — читать правило целиком, с интерфейсами. В работающей системе обращать внимания на счётчики у правил, если там всё время нули, значит правило не разу не сработало, и, возможно, бесполезно.

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)