로컬 포트를 LAN 포트로 리디렉션할 수 있나요?

로컬 포트를 LAN 포트로 리디렉션할 수 있나요?

가상 환경에서 Flask 애플리케이션을 사용하고 있습니다. 서버를 시작하면 IP를 통해 로컬로 액세스할 수 있지만 서버를 샌드박스 127.0.0.1:5000하는 것이 WLAN (pointing at 10.0.0.1:5000)가능한지 모르겠습니다.

/etc/hosts순진하게 파일을 바꾸려고 했는데

127.0.0.1    10.0.0.2

하지만 브라우저를 실행하면http://10.0.0.2:5000, 그건 작동하지 않습니다. (다른 서비스에는 계속 액세스할 수 있습니다.http://10.0.0.2, 그러나 포트 5000의 리디렉션은 작동하지 않습니다).

맞는지 잘 모르겠습니다. 도움을 주셔서 감사합니다.

편집하다 방금 사용하는 가상 환경의 경우가상 환경, Python 종속성을 처리하기 위한 유틸리티입니다. 그런 다음 설치했습니다.플라스크 소켓IO. 실제로 샌드박스 처리되었는지는 확실하지 않지만 문제는 포트 5000에 연결할 수 없다는 것입니다.

만약 내가한다면

sudo nestat -anp | grep 5000

나는 얻다:

tcp     0      0 127.0.0.1:5000      0.0.0.0:*       LISTEN     18541/python

답변1

Flask가 모든 공개 IP를 수신하도록 하는 것은 어떨까요?

http://flask.pocoo.org/docs/0.10/quickstart/#a-minimal-application

외부에서 볼 수 있는 서버

서버를 실행하면 네트워크의 다른 컴퓨터가 아닌 자신의 컴퓨터에서만 서버에 액세스할 수 있다는 것을 알 수 있습니다. 디버그 모드에서는 애플리케이션 사용자가 컴퓨터에서 임의의 Python 코드를 실행할 수 있기 때문에 이것이 기본 설정입니다.

디버깅을 비활성화했거나 네트워크의 사용자를 신뢰하는 경우 run() 메서드 호출을 다음과 같이 변경하여 서버를 공개적으로 사용할 수 있도록 할 수 있습니다.

app.run(호스트='0.0.0.0')

이는 운영 체제가 모든 공용 IP를 수신하도록 지시합니다.

답변2

/etc/hosts 파일은 IP 주소 간 리디렉션이 아닌 이름 조회에 사용됩니다. 또한 샌드박스가 적용되는 경우 LAN/WLAN 측에서 가상 서버에 액세스할 수 없어야 합니다. 문제를 해결할 수 있는 두 가지 방법을 제안할 수 있지만 다른 방법도 있을 수 있습니다.

1) 가상 서버를 소프트 샌드박스, 즉 루프백이 아닌 IP 주소로 구성할 수 있다면 가장 쉬운 솔루션이 될 것입니다.

2) 두 번째 방법은 더 많은 작업이 필요합니다. 이를 위해서는 백그라운드에서 실행되고 포트 5000에서 실제 컴퓨터 주소(임의 주소는 아님)를 수신하고 패킷을 127.0.0.1로 전달하는 간단한 수신기/전달자 프로그램을 작성해야 합니다. 가능한 경우 라우터를 사용하여 개인 IP 주소:포트(예: 10.0.0.2:5000)로 전송된 패킷을 수신기 컴퓨터의 주소로 전달할 수 있습니다.

관련 정보