将web服务器从端口5000重定向到本地主机上的端口80(Fedora)

将web服务器从端口5000重定向到本地主机上的端口80(Fedora)

问题描述:

在Fedora 24上,端口5000上正在运行Web服务器(Node.js)(独立,没有apache/others)。试图使其可以在端口上访问80.将web服务器从端口5000重定向到本地主机上的端口80(Fedora)

http://localhost:5000工作

尝试这样:

systemctl stop firewalld 
iptables -t nat -F 
iptables -t mangle -F 
iptables -F 
iptables -X 

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 5000 

http://localhost不起作用

试过这种

systemctl restart firewalld 
firewall-cmd --add-service=http --permanent 
firewall-cmd --zone=external --add-masquerade 
firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=5000 
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: 

其他信息 尝试这些

sysctl -w net.ipv4.ip_forward=1 
iptables -A FORWARD -j ACCEPT 
iptables -A FORWARD -j ACCEPT 
iptables -t nat --list 

Chain PREROUTING (policy ACCEPT) 
target  prot opt source    destination   
REDIRECT tcp -- anywhere    anywhere    tcp dpt:http redir ports 5000 
REDIRECT tcp -- anywhere    anywhere    tcp dpt:https redir ports 5000 

Chain INPUT (policy ACCEPT) 
target  prot opt source    destination   

Chain OUTPUT (policy ACCEPT) 
target  prot opt source    destination   

Chain POSTROUTING (policy ACCEPT) 
target  prot opt source    destination   

ifconfig 
enp0s25: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 

wlp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 

ip route 
default via 192.168.1.1 dev wlp3s0 proto static metric 600 
192.168.1.0/24 dev wlp3s0 proto kernel scope link src 192.168.1.4 metric 600 

对于其他人只是工作: Best practices when running Node.js with port 80 (Ubuntu/Linode)

运行节点上的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  

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 

您应该避免使用iptables这样的事情,但是在Fedora上你需要设置防火墙适当。同样这个问题无关,与Node.js的

firewall-cmd --add-service=http --permanent 
firewall-cmd --reload 

相关:https://unix.stackexchange.com/questions/39216/cannot-connect-to-fedora-on-port-80

+0

谢谢,编辑删除的NodeJS。 #firewall-cmd --add-service = http --permanent FirewallD没有运行 我试过启动它,运行这些,然后再次运行iptables,仍然不起作用。然后再次停止防火墙。 –

+0

还试过: firewall-cmd --add-service = http --permanent firewall-cmd --zone = external --add-masquerade firewall-cmd --zone = external --add-forward-port = port = 80:proto = tcp:toport = 5000 firewall-cmd --reload –

+0

找到了解决方法,谢谢! –