Когда я слушаю порт 80 с помощью NodeJS v10, все другие машины могут получить доступ к порту, но сама машина не может. Это очень странно, и то же самое для loopback и IP-адреса eth0. Однако он может получить доступ к порту 90 сам по себе, как и другие машины в сети.
Я использовал простое приложение hello world, чтобы убедиться, что скрипт NodeJS не виноват.
Это также происходит в NodeJS 12.13.0, поэтому я не думаю, что Node вообще проблема.
iptables -L
говорит, что все пусто с политикой ПРИНЯТЬ.
netstat -tulpn
не перечисляет порт 80, кроме того, с которым я тестирую.
Я нашел эту строку в /etc/rc.local
.
iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080
Обнаружена проблема!
В этом ответе говорится, почему правило не появилось в iptables -L
: https://serverfault.com/a/685948/32875.
Есть 5 таблиц (фильтр, нат, исключение, сырье, безопасность). Ты звонишь
iptables -L -t table
для каждого.
Это может быть связано с тем, что если вы хотите использовать порт 80, вам нужны разрешения sudo для его открытия.