
로컬 네트워크에서 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