Şişeye uzak bağlantılara nasıl izin verilir?


30

Sistemin içinde sanal makinede çalışan çalışan sunucuya adresinden erişebiliyorum 127.0.0.1:5000.

Vm'nin 'uzak' adresi 192.168.56.101 (ping ve ssh iyi çalışıyor) olsa da, ne sanal makineden ne de yerelden 192.168.50.101:5000 ile sunucuya erişemiyorum.

Uzak bağlantıları engelleyen bir şey var galiba.

İşte / etc / network / arayüzleri:

auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0

ufw etkin değil.

Bu sorunu nasıl düzeltebilirim?

Yanıtlar:


48

Her şeyden önce - HTTP sunucunuzun çıktılarını kontrol ederek 192.168.50.101:5000(veya her yerde 0.0.0.0:5000) dinlediğinden emin olun :

netstat -tupln | grep ':5000'

Değilse, localhost dışındaki bir adrese bağlanmak için Flask'in belgelerine bakın .

Eğer öyleyse, trafiğin iptables kullanarak olmasına izin ver:

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

Flask'in belgelerine göre:

Dışarıdan Görünür Sunucu Sunucuyu çalıştırırsanız, sunucuya yalnızca kendi bilgisayarınızdan erişilebilir olduğunu fark edersiniz, ağdaki hiçbir ağdan değil. Varsayılan değer, hata ayıklama modunda, uygulamanın bir kullanıcısı bilgisayarınızda rasgele Python kodunu çalıştırabilmesidir.

Hata ayıklamayı devre dışı bıraktıysanız veya ağınızdaki kullanıcılara güveniyorsanız, aşağıdaki run()gibi görünmesi için yöntemi değiştirerek sunucuyu herkese açık hale getirebilirsiniz :

app.run(host='0.0.0.0')

1) çıkış 127.0.0.1:5000 0.0.0.0:* LISTEN'dir. Bu, sunucunun diğer yerel ev sahiplerinin adreslerini dinlemediği anlamına mı geliyor? 2) 5000 tane izinli ufw denedim, sonuç yok
Ilya Smagin

Bu nedenle, Flask'ın belgelerine tüm adresleri dinleyecek şekilde yapılandırmayı önerdim. Baktın mı? Güvenlik duvarından tek başına izin vermek düzeltmez.
Marcin Kaminski

Evet, teşekkür ederim, anlıyorum. Zaten localtunnel kullandım (Çok fazla olduğunu biliyorum ama işe yarıyor). Netstat'ın "127.0.0.1:5000 0.0.0.0:* LISTEN" çıktısının ne anlama geldiğini anlamaya çalışıyorum.
Ilya Smagin

Localtunnel'a ihtiyacınız yok :) netstat çıktısının size gösterdiği şey, HTTP sunucunuzun yalnızca yerel makinenizden bağlantı kabul ettiğidir. Flask'in yapılandırmasında SERVER_NAME değişkenini değiştirmeniz gerekiyor gibi görünüyor.
Marcin Kaminski

2
Burada soruyu favori yapmak ve bu cevabı yükseltmek için bir hesap oluşturduk!
Hephaestus


4

Ben de aynı sorunu yaşadım. Bunu çözmek için uygulamayı çalıştırma yöntemini güncelledim:

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

Host = 0.0.0.0 kullanarak yerel ağım üzerinden uygulamama erişmeme izin verin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.