Перенаправить веб-сервер с порта 5000 на порт 80 на локальном хосте (Fedora)

В Fedora 24 веб-сервер (Node.js) работает (автономно, без apache/других) на порту 5000. Пытаюсь сделать его доступным на порту 80.

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

Для других это просто работает: Лучшие практики запуск Node.js с портом 80 (Ubuntu/Linode)

Запуск узла от имени пользователя root на порту 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     

person Marius    schedule 09.05.2017    source источник


Ответы (1)


Вам следует избегать использования 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

person eljefedelrodeodeljefe    schedule 09.05.2017
comment
Спасибо, отредактировано для удаления nodejs. # firewall-cmd --add-service=http --permanent FirewallD не запущен Я попытался запустить его, запустить их, затем снова iptables, но все равно не работает. Затем снова остановил брандмауэр. - person Marius; 11.05.2017
comment
Также пробовал: 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 брандмауэр-cmd --reload - person Marius; 11.05.2017
comment
Что тогда было решением? - person eljefedelrodeodeljefe; 14.05.2017
comment
см. другой ответ - person Marius; 15.05.2017