iptables та RETURN target


16

Я не розумію, що RETURNробить ціль у команді iptables.

Сумніви виникають з цього посібника, де написано:

Ланцюг - це набір правил, за допомогою яких послідовно перевіряється пакет. Коли пакет відповідає одному з правил, він виконує пов'язану дію і не перевіряється щодо решти правил у ланцюзі.

Отже, якщо пакет відповідає правилу і він перестає перевіряти інші правила, навіщо мені це потрібно RETURN?

Наприклад, я знайшов це в Інтернеті:

iptables -A PREROUTING -t mangle -i wlan0 -s 192.168.1.10 -j MARK --set-mark 30;
iptables -A PREROUTING -t mangle -i wlan0 -s 192.168.1.10 -j RETURN;

Навіщо мені це потрібно RETURN? Якщо пакет відповідає першому правилу, то він автоматично припиняє виконання інших правил.

Відповіді:


34

Пакети перетинають ланцюг , поки вони не потрапили ACCEPT, DROP, REJECTабо RETURN. Вони не зупиняються на матчі, якщо цей матч не містить дії, що закінчується. У вашому прикладі пакет, що відповідає першому правилу, буде позначений, але потім буде вивчений (і, можливо, оброблений) другим правилом.

Для довідки, ось відповідні розділи зі сторінки man :

Правило брандмауера визначає критерії для пакету та цілі. Якщо пакет не відповідає, наступне правило ланцюга - це досліджувана; якщо він відповідає, то наступне правило визначається значенням цілі, яке може бути назвою визначеної користувачем ланцюга або одним із спеціальних значень ACCEPT, DROP[, REJECT] QUEUEабо RETURN.

  • ACCEPT означає пропустити пакет наскрізь.
  • DROP означає скинути пакет на підлогу, тобто відкинути його і не надсилати жодної відповіді
  • [ REJECTвикористовується для відправки назад пакета помилок у відповідь на узгоджений пакет: інакше він еквівалентний DROPтому він закінчує ТАРГЕТ, закінчуючи перехід правила.]
  • QUEUE означає передати пакет в простір користувачів.
  • RETURNозначає перестати проходити цей ланцюг і відновити наступне правило в попередньому (виклику) ланцюжку. Якщо досягнуто кінця вбудованого ланцюга або RETURNзбігається правило у вбудованому ланцюжку з ціллю , ціль, визначена політикою ланцюга, визначає долю пакета.

У відповідь на вашу конкретну стурбованість я б сказав, що ваш путівник вводить в оману. Якщо "асоційована дія" не є однією з п'яти термінальних дій, пакети продовжуватимуть протікати по ланцюгу, поки вони не дістають неявного RETURNв кінці.


Я б підтримав цю відповідь не раз, якби міг.
JakeRobb

Варто зазначити, що дією за замовчуванням для визначених користувачем ланцюгів є RETURN.
Сувора

@stark - це не те, що говорить останнє речення?
roaima

1
Ах, тепер я краще розумію ДРОП. Це пояснює, чому я не маю кімнати для ніг під цим столом.
Джонатан Нойфельд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.