웹 서버를 포트 5000에서 localhost(Fedora, Firewall-cmd)의 포트 80으로 리디렉션

웹 서버를 포트 5000에서 localhost(Fedora, Firewall-cmd)의 포트 80으로 리디렉션

Fedora 24에서 웹 서버(Node.js)는 포트 5000(독립형, apache/nginx 없음)에서 실행됩니다. http://localhost:5000일하다

포트 80에 액세스할 수 있게 만드는 방법은 무엇입니까?

이것을 시도했다

systemctl restart firewalld
firewall-cmd --add-service=http --permanent
firewall-cmd --add-masquerade --permanent
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=5000 
firewall-cmd --list-all
FedoraWorkstation (active)
  target: default
  icmp-block-inversion: no
  interfaces: wlp3s0
  sources: 
  services: mdns ssh dhcpv6-client samba-client https http
  ports: 1025-65535/tcp 1025-65535/udp
  protocols: 
  masquerade: yes
  forward-ports: port=80:proto=tcp:toport=5000:toaddr=
  source-ports: 
  icmp-blocks: 
  rich rules: 

추가 정보 또한 위의 모든 항목에 대해 --zone=external을 사용해 보았습니다.

포트 80에서 노드를 루트로 실행하면 작동합니다. IPv4는 없습니다.

netstat -tpln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:4433            0.0.0.0:*               LISTEN      3977/deluge-gtk     
tcp        0      0 0.0.0.0:51157           0.0.0.0:*               LISTEN      3977/deluge-gtk     
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      900/postgres        
tcp        0      0 0.0.0.0:17500           0.0.0.0:*               LISTEN      3203/dropbox        
tcp        0      0 127.0.0.1:17600         0.0.0.0:*               LISTEN      3203/dropbox        
tcp        0      0 127.0.0.1:17603         0.0.0.0:*               LISTEN      3203/dropbox        
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::4433                 :::*                    LISTEN      3977/deluge-gtk     
tcp6       0      0 :::51157                :::*                    LISTEN      3977/deluge-gtk     
tcp6       0      0 :::5432                 :::*                    LISTEN      900/postgres        
tcp6       0      0 :::17500                :::*                    LISTEN      3203/dropbox        
tcp6       0      0 :::34017                :::*                    LISTEN      10532/code          
tcp6       0      0 :::5858                 :::*                    LISTEN      30394/node          
tcp6       0      0 :::5000                 :::*                    LISTEN      30394/node     

답변1

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --add-masquerade --permanent
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=5000 --permanent

#make port forwarding work on localhost
iptables -t nat -I OUTPUT --source 127.0.0.1 --destination 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 5000

답변2

firewall-cmd --reload영구 규칙을 설정한 후 실행하는 것을 잊지 마세요. 그렇지 않으면 서비스가 다시 시작될 때까지 규칙을 읽을 수 없습니다 firewalld.

관련 정보