Я наткнулся на статьи, в которых даются следующие советы:
iptables -A INPUT -p tcp 1000:2000 -j ACCEPT
Другие утверждают, что вышеизложенное не сработает, и iptables поддерживает только несколько объявлений портов с этой --multiport
опцией.
Есть ли правильный способ открыть много портов с помощью iptables?
решение1
Вот правильный способ:
iptables -A INPUT -p tcp --match multiport --dports 1024:3000 -j ACCEPT
В качестве примера. Источникздесь.
решение2
То, что вам сказали, верно, хотя вы написали неправильно (вы забыли --dport
).
iptables -A INPUT -p tcp --dport 1000:2000
откроет входящий трафик на TCP-порты с 1000 по 2000 включительно.
-m multiport --dports
необходимо только в том случае, если диапазон, который вы хотите открыть, не является непрерывным, например -m multiport --dports 80,443
, который откроет HTTP и HTTPSтолько- а не те, что между ними.
Обратите внимание, что порядок правил важен, и (как упоминает Иэн в своем комментарии в другом месте) ваша задача — убедиться, что любое добавляемое вами правило находится в том месте, где оно будет эффективным.
решение3
Короче говоря, но...
Чистый диапазон портов без многопортового модуля:
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
Есть фун.
решение4
есть другой способ добавить запись непосредственно в файл Iptables. местоположение/etc/sysconfig/iptables
-A INPUT -p tcp -m multiport --dports 1024:3000 -m state --state NEW -j ACCEPT
после этого перезапустите службу iptable