Як дозволити віддалене підключення до колби?


30

Всередині системи, що працює на віртуальній машині, я можу отримати доступ до запущеного сервера за адресою 127.0.0.1:5000.

Незважаючи на те, що "віддалена" адреса vm - 192.168.56.101 (ping і ssh працює нормально), я не можу отримати доступ до сервера з 192.168.50.101what000 ні з віртуальної машини, ні з локальної.

Я думаю, що щось перешкоджає віддаленим з'єднанням.

Ось / etc / network / interface:

auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0

ufw неактивний.

Як виправити цю проблему?

Відповіді:


48

Перш за все, переконайтеся, що ваш HTTP-сервер слухає 192.168.50.101:5000або скрізь ( 0.0.0.0:5000) перевіряючи вихід:

netstat -tupln | grep ':5000'

Якщо це не так, зверніться до документації Flask, щоб прив’язати до адреси, відмінної від localhost.

Якщо це так, дозвольте трафік за допомогою iptables:

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

З документації на колбу:

Зовнішньо видимий сервер Якщо ви запустите сервер, ви помітите, що сервер доступний лише з вашого власного комп'ютера, а не з будь-якого іншого в мережі. Це за замовчуванням, оскільки в режимі налагодження користувач програми може виконувати довільний код Python на вашому комп'ютері.

Якщо ви налагоджено налагодження або довіряєте користувачам вашої мережі, ви можете зробити сервер загальнодоступним, просто змінивши виклик run()методу, щоб виглядати так:

app.run(host='0.0.0.0')

1) вихід 127.0.0.1.1000000 0.0.0.0:* LISTEN. Це означає, що сервер не слухає адреси інших місцевих хостів? 2) Я спробував ufw дозволити 5000, безрезультатного результату
Ілля Смагін

Ось чому я запропонував переглянути документи Flask, щоб налаштувати його на прослуховування за всіма адресами. Ви подивилися на це? Дозволити його лише через брандмауер не виправить.
Марцін Камінський

Так, дякую, я розумію, вже дивлячись. Вже використовувався localtunnel (я знаю, що це занадто багато, але він працює). Просто намагаюся зрозуміти, що означає вихід Netstat "127.0.0.1.1000000 0.0.0.0:* LISTEN".
Ілля Смагін

Вам не потрібен localtunnel :) Те, що показує netstat, показує, що ваш HTTP-сервер приймає з'єднання лише з вашої локальної машини. Схоже, вам потрібно змінити змінну SERVER_NAME у конфігурації Flask.
Марцін Камінський

2
Створили тут обліковий запис, щоб просто вподобати питання та підтвердити цю відповідь!
Гефест


4

У мене щойно виникло те саме питання. Щоб вирішити це, я оновив спосіб запуску програми:

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

Використовуючи хост = 0.0.0.0, дозвольте мені отримати доступ до свого додатка через локальну мережу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.