Как правильно открыть диапазон портов в iptables


56

Я сталкивался со статьями, советующими для следующего:

iptables -A INPUT -p tcp 1000:2000 -j ACCEPT

И другие утверждают, что вышеупомянутое не будет работать, и iptables поддерживает только несколько объявлений портов с этой --multiportопцией.

Есть ли правильный способ открыть много портов с iptables?


Ответы:


60

Это правильный путь:

iptables -A INPUT -p tcp --match multiport --dports 1024:3000 -j ACCEPT

В качестве примера. Источник здесь .


5
Если вы не знаете, состояние набора правил -Iнесколько безопаснее, чем -A.
user9517 поддерживает GoFundMonica

@ Иан, не могли бы вы объяснить причины этого?
Джейхендрен

2
@jayhendren Многие наборы правил будут иметь правило удаления по умолчанию, например, -A INPUT -j REJECT --reject-with icmp-host-prohibitedв конце INPUT и других таблиц. Использование -Aдобавляет правило в конце таблицы, после последнего правила, так что оно никогда не будет рассматриваться, как сетевой фильтр работает при первом совпадении. Использование -Iвставки правила в начале таблицы и как таковое всегда будет учитываться.
user9517 поддерживает GoFundMonica

4
@ Однако, некоторые наборы правил также имеют в начале правила, которые фильтруют или ограничивают скорость пакетов, поэтому стоит отметить, что -Iне всегда безопаснее, если вы не знаете набор правил.
Джейхендрен

3
@jayhendren Я думаю, что вы только что сделали, и заметьте, я сказал, что не всегда .
user9517 поддерживает GoFundMonica

54

То, что вам сказали, правильно, хотя вы написали это неправильно (вы забыли --dport).

iptables -A INPUT -p tcp --dport 1000:2000 откроет входящий трафик на порты TCP от 1000 до 2000 включительно.

-m multiport --dportsнужен только если диапазон вы хотите открыть не является непрерывным, например -m multiport --dports 80,443, который откроет HTTP и HTTPS только - не те , что между ними.

Обратите внимание, что порядок правил важен, и (как упоминает Иэн в своем комментарии в другом месте) ваша задача - убедиться, что любое добавленное вами правило находится в месте, где оно будет эффективным.


1
Я мог бы упомянуть и здесь, если хотите;)
user9517 поддерживает GoFundMonica

1
Хи хи хи! Продолжайте, тогда сообщение стоит повторить!
MadHatter

2
Это правильный ответ; это более тщательно.
Андрей Козак

10

TL; DR но ...

Чистый диапазон портов без многопортового модуля: iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT

Эквивалентный мультипортовый пример: iptables -A INPUT -p tcp -m multiport --dports 1000:2000 -j ACCEPT

... и вариант с несколькими портами с несколькими диапазонами (да, это также возможно): iptables -A INPUT -p tcp -m multiport --dports 1000,1001,1002:1500,1501:2000 -j ACCEPT

... и эквивалентный многопортовый мультидиапазонный пример с отрицанием: iptables -A INPUT -p tcp -m multiport ! --dports 0:999,2001:65535 -j ACCEPT

Имейте phun.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.