« Отговор #6 -: Jul 16, 2010, 22:51 »
Винаги е по-добре да се филтрират, при това с DROP. Включително в случаят, когато няма приложение което си е bind-нало listening socket на тоя порт. Там логиката е проста - за всеки TCP пакет който пристигне на този порт, TCP стека на машината ще върне RST, за да уведоми изпращащия че връзката е отказана. Така че просто увеличаваш трафика с 60-тина байта за всеки пакет, който получиш, за да върнеш RST отговора.
Когато слухти нещо, зависи разбира се как е написано, но дори да си имат нормален лимит на backlog-а и да има нормален лимит на броя на accept-натите връзки и да не разхищава особено много ресурси на връзка, пак е същото - само дето ще отговаряш със SYN-ACK пакет, вместо с RST и пак ще увеличаваш трафика. Ядрото хаби памет да ти пази skbuff-овете, които са асоцирани със сокета. Ако имаш connection tracking, съответно още памет се хаби за да се пазят новите "връзки" в conntrack таблицата. И процесорната утилизация скача, макар че това много зависи от много фактори, но при всички положения - повече, отколкото ако просто дроп-ваш пакетите.
Така че дроп-ването на пакети е последното нещо, което можеш да направиш от гледна точка на хоста. Оттам нататък, нищо повече не можеш да направиш.