2222로 리디렉션되는 몇 개의 포트 8080 및 22를 열려고 합니다. /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
에서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
내 iptables 규칙에 ESTABLISHED를 추가해야 했습니다.
iptables -I INPUT -i eth0 -p tcp --dport 8080 -m state --state NEW,ESTABLISHED -j ACCEPT