Bagaimana cara mengizinkan koneksi jarak jauh ke Flask?


30

Di dalam sistem, berjalan di mesin virtual, saya dapat mengakses server yang berjalan di 127.0.0.1:5000.

Meskipun alamat 'remote' dari vm adalah 192.168.56.101 (ping dan ssh berfungsi dengan baik), saya tidak dapat mengakses server dengan 192.168.50.101-01000 baik dari mesin virtual maupun dari mesin lokal.

Saya kira ada sesuatu yang mencegah koneksi jarak jauh.

Inilah / etc / network / interfaces:

auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0

ufw tidak aktif.

Bagaimana saya memperbaiki masalah ini?

Jawaban:


48

Pertama-tama - pastikan server HTTP Anda mendengarkan 192.168.50.101:5000atau di mana saja ( 0.0.0.0:5000) dengan memeriksa output dari:

netstat -tupln | grep ':5000'

Jika tidak, bacalah dokumentasi Flask untuk mengikat ke alamat selain localhost.

Jika ya, izinkan lalu lintas menggunakan iptables:

iptables -I INPUT -p tcp --dport 5000 -j ACCEPT

Dari dokumentasi Flask:

Server Terlihat Eksternal Jika Anda menjalankan server, Anda akan melihat bahwa server hanya dapat diakses dari komputer Anda sendiri, bukan dari yang lain dalam jaringan. Ini adalah default karena dalam mode debugging, pengguna aplikasi dapat mengeksekusi kode Python sewenang-wenang di komputer Anda.

Jika debug Anda dinonaktifkan atau dipercayai pengguna di jaringan Anda, Anda dapat membuat server tersedia untuk umum hanya dengan mengubah panggilan run()metode agar terlihat seperti ini:

app.run(host='0.0.0.0')

1) hasilnya adalah 127.0.0.1.1000 0.0.0.0:* DENGARKAN. Ini berarti server tidak mendengarkan alamat host lokal lain? 2) Saya mencoba ufw mengizinkan 5000, tanpa hasil
Ilya Smagin

Inilah sebabnya saya menyarankan untuk melihat dokumen Flask untuk mengkonfigurasinya agar mendengarkan semua alamat. Sudahkah Anda melihatnya? Membiarkannya melalui firewall saja tidak akan memperbaikinya.
Marcin Kaminski

Ya, terima kasih, saya mengerti, sudah mencari. Sudah menggunakan localtunnel (saya tahu itu terlalu banyak, tetapi berhasil). Hanya mencoba memahami apa artinya keluaran netstat "127.0.0.1-01000 0.0.0.0:* DENGARKAN" artinya.
Ilya Smagin

Anda tidak memerlukan localtunnel :) Yang ditunjukkan oleh keluaran netstat adalah bahwa server HTTP Anda hanya menerima koneksi dari mesin lokal Anda. Sepertinya Anda perlu mengubah variabel SERVER_NAME dalam konfigurasi Flask.
Marcin Kaminski

2
Buat akun di sini hanya untuk memfavoritkan pertanyaan dan jawablah jawaban ini!
Hephaestus

6

Cara terbaik untuk melakukannya

flask run --host=0.0.0.0

4

Saya baru saja mengalami masalah yang sama. Untuk mengatasinya, saya memperbarui cara menjalankan aplikasi:

 app.run(debug=True,host='0.0.0.0')

Menggunakan host = 0.0.0.0 biarkan saya mengakses aplikasi saya melalui jaringan lokal saya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.