Я пытаюсь открыть несколько портов 8080 и 22, перенаправив их на 2222. У меня отключен selinux в /etc/sysconfig/selinux
.
Я использую 8080 для доступа к Tomcat и порт 22, чтобы перенаправить его на 2222. Когда я использую следующие команды:
[root@tomcat7test bin]# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
[root@tomcat7test bin]# iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
А затем перезапускаю iptables, я не могу получить доступ к своей веб-страницеhttp://localhost:8080/
Когда я запускаю netstat, я вижу, что порты открыты:
[root@tomcat7test ~]$ netstat -an | grep '22'
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
unix 2 [ ACC ] STREAM LISTENING 9922 private/smtp
unix 3 [ ] STREAM CONNECTED 3848226 /var/run/dbus/system_bus_socket
unix 3 [ ] STREAM CONNECTED 3848225
[rkahil@tomcat7test ~]$ netstat -an | grep '8080'
tcp 0 0 :::8080 :::* LISTEN
Я всегда получаю: Эта страница не может быть отображена в веб-браузере. Есть ли у кого-нибудь предложения, как сделать веб-страницу более доступной?
решение1
Трафик обратной связи не проходит от PREROUTING, а только от OUTPUT.
поэтому вам следует добавить:
iptables -t nat -A OUTPUT -o lo -p tcp --dport 22 -j REDIRECT --to-port 2222
решение2
Мне пришлось добавить ESTABLISHED в правило iptables:
iptables -I INPUT -i eth0 -p tcp --dport 8080 -m state --state NEW,ESTABLISHED -j ACCEPT