ফ্লাস্কে দূরবর্তী সংযোগগুলি কীভাবে অনুমতি দেবেন?


30

ভার্চুয়াল মেশিনে চলমান সিস্টেমের অভ্যন্তরে আমি চলমান সার্ভারটি অ্যাক্সেস করতে পারি 127.0.0.1:5000

যদিও ভিএম এর 'রিমোট' ঠিকানা 192.168.56.101 (পিং এবং এসএসএস কাজ সূক্ষ্ম), আমি ভার্চুয়াল মেশিন বা স্থানীয় কোনওরই থেকে 192.168.50.101:5000 সহ সার্ভারটি অ্যাক্সেস করতে পারি না।

আমার ধারণা দূরবর্তী সংযোগগুলি রোধ করার মতো কিছু আছে।

এখানে / ইত্যাদি / নেটওয়ার্ক / ইন্টারফেস:

auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0

ufw নিষ্ক্রিয়

আমি কীভাবে এই সমস্যাটি সমাধান করব?

উত্তর:


48

প্রথমত - নিশ্চিত করুন যে আপনার এইচটিটিপি সার্ভারটি 192.168.50.101:5000(অথবা 0.0.0.0:5000) সর্বত্র শুনছে বা এর আউটপুট যাচাই করে:

netstat -tupln | grep ':5000'

যদি তা না হয় তবে লোকালহোস্ট ব্যতীত অন্য কোনও ঠিকানার সাথে আবদ্ধ হতে ফ্লাস্কের ডকুমেন্টেশনের পরামর্শ নিন

যদি এটি হয় তবে iptables ব্যবহার করে ট্র্যাফিকের অনুমতি দিন:

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

ফ্লাস্কের ডকুমেন্টেশন থেকে:

বাহ্যিকভাবে দৃশ্যমান সার্ভার আপনি সার্ভারটি চালনা করলে আপনি লক্ষ্য করবেন যে সার্ভারটি কেবলমাত্র আপনার নিজের কম্পিউটার থেকে অ্যাক্সেসযোগ্য, কোনও নেটওয়ার্কের অন্য কোনও থেকে নয়। এটি ডিফল্ট কারণ ডিবাগিং মোডে অ্যাপ্লিকেশনটির কোনও ব্যবহারকারী আপনার কম্পিউটারে পাইথন কোড নির্বিচারে কার্যকর করতে পারে।

আপনি যদি ডিবাগ অক্ষম করে থাকেন বা আপনার নেটওয়ার্কের ব্যবহারকারীদের উপর বিশ্বাস রাখেন তবে আপনি run()এই জাতীয় দেখতে পদ্ধতির কল পরিবর্তন করে কেবল সার্ভারটিকে সর্বজনীনভাবে উপলভ্য করতে পারেন:

app.run(host='0.0.0.0')

1) আউটপুটটি 127.0.0.1:54000 0.0.0.0:* তালিকাভুক্ত। এর অর্থ সার্ভার অন্য লোকাল হোস্টগুলিকে সম্বোধন করে না? 2) আমি ufw 5000 এর অনুমতি দেওয়ার চেষ্টা করেছি, কোনও ফল নেই
ইলিয়া স্মাগিন

এই কারণেই আমি ফ্লাস্কের ডক্সটিকে সমস্ত ঠিকানাতে শুনতে কনফিগার করার পরামর্শ দিয়েছি। আপনি কি এটি তাকান? একা ফায়ারওয়ালের মাধ্যমে এটিকে অনুমতি দেওয়া ঠিক করে না।
মার্সিন কামিনস্কি

হ্যাঁ, আপনাকে ধন্যবাদ, আমি এটি পেয়েছি, ইতিমধ্যে খুঁজছি। ইতিমধ্যে স্থানীয় লোকাল ব্যবহার করা হয়েছে (আমি জানি এটি খুব বেশি, তবে এটি কার্যকর)। নেটস্ট্যাট এর আউটপুট "127.0.0.1:56000 0.0.0.0:* তালিকা" এর অর্থ কী তা বোঝার চেষ্টা করছি।
ইলিয়া স্মাগিন

আপনার স্থানীয় লোকাল দরকার নেই :) নেটস্যাট আউটপুট যা দেখায় তা হ'ল আপনার এইচটিটিপি সার্ভারটি কেবলমাত্র আপনার স্থানীয় মেশিন থেকে সংযোগ গ্রহণ করছে accepting দেখে মনে হচ্ছে ফ্লাস্কের কনফিগারেশনে আপনাকে SERVER_NAME ভেরিয়েবল পরিবর্তন করতে হবে।
মার্সিন কামিনস্কি

2
প্রশ্নের উত্তর পছন্দ করতে এবং এই উত্তরটিকে উর্ধ্বমুখী করতে এখানে একটি অ্যাকাউন্ট তৈরি করেছেন!
হেফেসটাস


4

আমি ঠিক একই সমস্যা ছিল। এটি সমাধান করার জন্য, আমি অ্যাপ্লিকেশনটি চালনার উপায় আপডেট করেছি:

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

হোস্ট = 0.0.0.0 ব্যবহার করে আমাকে আমার স্থানীয় নেটওয়ার্কের মাধ্যমে আমার অ্যাপ্লিকেশনটি অ্যাক্সেস করতে দিন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.