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

iptables перенаправляет диапазон и исключает

у меня есть этот iptables и он работает.

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 0:20 -j REDIRECT --to-port 8080 #bypass SSH
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23:442 -j REDIRECT --to-port 8080 #bypass SSL
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 444:2082 -j REDIRECT --to-port 8080 #Cpanel SSL
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2084:2086 -j REDIRECT --to-port 8080 #WHM SSL

любая идея изменить это на следующее условие более простыми правилами:

Перенаправить ВЕСЬ трафик на 8080

и исключить перенаправление, если порт назначения совпадает 22 443 2083 и 2087

Спасибо.

Обновить:

Мультипорты поддерживают до 15 отдельных портов Ref: Заметки о фильтрации пакетов iptables

Итак, я использовал другой метод для прямого приема определенных портов, например whois (port43)

iptables -t nat -A PREROUTING -i eth0  -p tcp -m multiport \
--dports 43 \
-j ACCEPT

Кто-то может возразить, что это может сработать как попытка краткости ваших правил, но это не сработает так, как ожидалось.

iptables -t nat -A PREROUTING -i eth0  -p tcp -m multiport --dports ! 22,443,2083,2087 -j REDIRECT --to-port 8080

условие «-option a, b» эквивалентно «-option a OR -option b», что представляет собой ровно 4 правила, сгенерированных из одного. Однако, если «! -Option a, b» следует интерпретировать как «NOT (-option a OR -option b)», то на самом деле это «(NOT -option a) AND (NOT -option b)», которое просто не может быть взорвался на два правила.