포트 80에서 실행되는 gunicorn/Flask 앱에 액세스하기 위해 우분투 서버의 방화벽 열기

포트 80에서 실행되는 gunicorn/Flask 앱에 액세스하기 위해 우분투 서버의 방화벽 열기

로컬 네트워크에서 Ubuntu 18.04를 실행하는 서버에서 인트라넷 애플리케이션을 제공하려고 합니다.

애플리케이션이 작성되었으며 다음 명령을 Flask사용하여 배포했습니다.gunicorn

me@appserver:~$ authbind gunicorn -w 4 -b 127.0.0.1:80 app:app

디스플레이 포트 전달을 사용하여 서버에 SSH로 연결하기 Firefox를 사용하여 앱을 열고 정상적으로 상호 작용할 수 있습니다. 그러나 서브넷의 다른 컴퓨터에서 시도하면 연결이 거부됩니다.

포트 22에 텔넷을 연결할 수 있습니다. 예,

me@clientmachine:~$ telnet 123.45.67.89 22
Trying 123.45.67.89...
Connected to 123.45.67.89.

하지만 포트 80에서 연결이 거부되었습니다.

me@clientmachine:~$ telnet 123.45.67.89 80
Trying 123.45.67.89...
telnet: Unable to connect to remote host: Connection refused

ufw명령을 사용 하여 방화벽을 구성했습니다.

me@appserver:~$ sudo ufw allow 80

나에게주는

me@appserver:~$ sudo ufw status

Status: active

To                         Action      From
--                         ------      ----
80                         ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere
80/udp                     ALLOW       Anywhere
80 (v6)                    ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
22/tcp (v6)                ALLOW       Anywhere (v6)
80/udp (v6)                ALLOW       Anywhere (v6)

나도 이걸로 확인했어

me@appserver:~$ netstat -an | grep :80
tcp        0      0 127.0.0.1:80            0.0.0.0:*               LISTEN

me@appserver:~$ lsof -i:80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
gunicorn 1818 me    5u  IPv4  31215      0t0  TCP localhost:http (LISTEN)
gunicorn 1822 me    5u  IPv4  31215      0t0  TCP localhost:http (LISTEN)
gunicorn 1823 me    5u  IPv4  31215      0t0  TCP localhost:http (LISTEN)
gunicorn 1824 me    5u  IPv4  31215      0t0  TCP localhost:http (LISTEN)
gunicorn 1825 me    5u  IPv4  31215      0t0  TCP localhost:http (LISTEN)

그리고

me@appserver:~$ sudo iptables -L -n | grep :80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:80

그러나 nmap클라이언트에서 실행하면 80이 표시되지만 닫혀 있다고 표시됩니다.

me@clientmachine:~$ nmap 123.45.67.89

Starting Nmap 7.01 ( https://nmap.org ) at 2019-07-24 16:41 AEST
Nmap scan report for appserver.myuni.edu (123.45.67.89)
Host is up (0.00041s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   closed http

왜 이런 일이 발생하고 어떻게 해결하는지 아시나요? 이런 일을 네트워크 관리자가 관리하는 서브넷 설정으로 관리할 수 있나요?

답변1

메시지는 Connection refused해당 포트에서 수신 대기 중인 항목이 없으며 포트가 닫혀 있음을 나타냅니다. 방화벽이 액세스를 차단하는 경우 시간 초과에 대한 메시지가 표시됩니다.

문제는 루프백 인터페이스에서만 수신하도록 애플리케이션을 시작했다는 것입니다 127.0.0.1. 따라서 출력에서 ​​확인한 해당 인터페이스에서만 사용할 수 있습니다 netstat. 외부 인터페이스에서 사용할 수 있도록 하려면 시작 시 해당 IP를 제공하거나 0.0.0.0모든 인터페이스를 허용해야 합니다.

me@appserver:~$ authbind gunicorn -w 4 -b 123.45.67.89:80 app:app

관련 정보