Назад | Перейти на главную страницу

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

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

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

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

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

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

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

Например. Источник Вот.

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

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

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

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

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.

Согласно man iptables-extensions вы можете определить диапазон портов, просто используя переключатель --dport.

tcp
Эти расширения можно использовать, если указан параметр --protocol tcp. Он предоставляет следующие возможности:
[!] --destination-port, - dport port [: port]

Порт назначения или порт спецификация диапазона. Флаг --dport - удобный псевдоним для этой опции.

Таким образом, это также указывает диапазон портов:
iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT