Как перенаправить порт с помощью IPTables в Red Hat Linux (RHEL)?

Как перенаправить порт с помощью IPTables в Red Hat Linux (RHEL)?

Я хотел бы перенаправить порт 80 на 8080. Поэтому я попытался отредактировать /etc/syscongfig/iptables:

-A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Но получил:

# service iptables restart
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules: iptables-restore v1.4.7: 
          Line 8 seems to have a -t table  option.

В чем проблема? Как это сделать?

решение1

Имеет ли файл /etc/syscongfig/iptablesправильную структуру для iptables-restore?

Попробуйте вручную добавить это правило в брандмауэр.

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

И сравните /etc/sysconfig/iptablesс выводом iptables-saveкоманды

решение2

Это вашiptablesправило:

-A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Но я считаю, что вместо этого должно быть что-то вроде этого:

-A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

Обратите внимание, что -m tcpдобавлено. Пока -p tcpсоответствует протоколу правила или пакета для проверки, -m tcpявно указывает IPTables сопоставлять пакет TCP. Это кажется запутанным, но, насколько я знаю, -p tcpдолжно быть сопряжено с -m tcp, когда вызываются правила, специфичные для порта.

Если кто-то может расширить обоснование/логику этого требования, пожалуйста, напишите об этом в комментариях.

Связанный контент