Это то, что я использовал в качестве ссылки: https://unix.stackexchange.com/a/145933

Так что если я сделаю:

iptables -I INPUT -p tcp -s MY IP --dport 21 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 21 -j DROP

Я понимаю, что только MY IP сможет подключиться к порту 21. Но есть ли способ добавить другой принятый IP к этому?

Я пытался сделать:

iptables -I INPUT -p tcp -s MY OTHER IP --dport 21 -j ACCEPT

Но он все еще заблокирован, но я предполагаю, что это потому, что DROP раньше. Могу ли я добавить без удаления правила DROP?

1 ответ1

1

Есть несколько проблем с вашим подходом. Во- первых, вы -I nsert все правила. Без указания индекса это означает, что он будет вставлен сверху. Это не то, что вы хотите. Когда не вставляете, используйте -A ppend, чтобы уточнить, что вы делаете. Таким образом, новые правила окажутся внизу.

Все дело в порядке: правила обрабатываются сверху вниз, пока не закончится правило, заканчивающее обработку. Что-то вроде ACCEPT или DROP .

То, что вы хотите, это что-то вроде этого:

iptables -A INPUT -p tcp -s MY IP --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 21 -j DROP
iptables -I INPUT 2 -p tcp -s MY OTHER IP --dport 21 -j ACCEPT

Сначала он воссоздает то состояние, которое вы имели изначально. Затем он вставляет другое правило, чтобы он оказался в позиции 2, удаляя другие правила. Это означает, что результат эквивалентен выполнению этого:

iptables -A INPUT -p tcp -s MY IP --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -s MY OTHER IP --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 21 -j DROP

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .