我正在尝试打开一些端口 8080 和 22 重定向到 2222。我在/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://本地主机: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
从https://askubuntu.com/questions/444729/redirect-port-80-to-8080-and-make-it-work-on-local-machine:
环回流量不从 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