여러 서비스가 포함된 로컬로 실행되는 서버(Arch Linux)가 있고 다른 포트에서 실행되는 새로운 Python 서비스(Flask)를 추가하고 싶습니다. 로컬에서는 서버가 실행 중이며 192.168.x.x
현재 서버에서 실행 중인 모든 서비스에 이미 액세스할 수 있습니다. 포트에서 Flask 서버를 시작했지만 5000
노트북에서 nmap을 실행하면 포트가 여전히 닫혀 있는 것으로 표시됩니다.
mylaptop~$ nmap 192.168.x.x
PORT STATE SERVICE
22/tcp open ssh
3000/tcp open ppp
5432/tcp open postgresql
그러나 서버의 로컬 호스트에는 포트가 열려 있습니다.
myserver~$ nmap localhost
PORT STATE SERVICE
22/tcp open ssh
3000/tcp open ppp
5000/tcp open upnp
5432/tcp open postgresql
나는 이것이 iptables에 대한 일종의 문제라고 생각했지만(나는 이것에 대해 잘 알지 못합니다), 3000
포트에서 express.js 서버를 실행하려고 시도했고(이미 포트에서 실행 중인 서버가 있었습니다) 5000
충분히 작동했습니다.
mylaptop~$ nmap 192.168.x.x
PORT STATE SERVICE
22/tcp open ssh
3000/tcp open ppp
5000/tcp open upnp
5432/tcp open postgresql
Flask 서버를 어떻게 전달해야 할지 아직 잘 모르겠고, 왜 ssh, express.js, postgres 서비스가 기본적으로 전달되는지 궁금합니다. 도움을 주시면 감사하겠습니다!
답변1
HTTP 서버에 내장된 Flask를 사용한다고 가정하면 다음에서 작동합니다.플라스크 문서(외부에서 볼 수 있는 서버까지 아래로 스크롤):
서버를 실행하면 네트워크의 다른 컴퓨터가 아닌 자신의 컴퓨터에서만 서버에 액세스할 수 있다는 것을 알 수 있습니다. 디버그 모드에서는 애플리케이션 사용자가 컴퓨터에서 임의의 Python 코드를 실행할 수 있기 때문에 이것이 기본 설정입니다.
디버거를 비활성화했거나 네트워크의 사용자를 신뢰하는 경우 명령줄에 --host=0.0.0.0을 추가하면 서버를 공개적으로 사용할 수 있습니다.
플라스크 실행 --host=0.0.0.0
이는 운영 체제가 모든 공용 IP를 수신하도록 지시합니다.
nmap
컴퓨터의 출력에는 myserver
포트 5000이 열려 있는 것으로 표시됩니다. 를 사용했기 때문에 nmap localhost
로컬 호스트에서 192.168.xx가 아닌 127.0.0.1의 열린 포트를 검색합니다.