क्या Listen_addresses को वास्तव में एक सूची में सेट किया जा सकता है?


32

मेरे पास IP पता 192.168.0.192 के साथ एक VM है जो पोस्टग्रेक्यूएल चला रहा है।

अगर मैं निर्दिष्ट करता

listen_addresses = '*'

फिर मैं 192.168.0.191 पर और लोकलहोस्ट से दूसरे वीएम से जुड़ सकता हूं।

लेकिन मैं उन दो पतों का उपयोग करने के लिए postgreSQL बताने के लिए एक सूची का उपयोग नहीं कर सकता । यदि मैं एक सूची में सुनो_ड्रेस बदल देता हूं:

listen_addresses = '192.168.0.191, localhost'

फिर मैं 192.168.0.191 से नहीं जुड़ सकता।

मुझे लगता है कि stackexchange पर लगभग सभी उदाहरणों ने सुन_ड्रेस्रेस को '*' पर सेट कर दिया है। क्या यह इसलिए है क्योंकि सूची प्रपत्र काम नहीं करता है?

जवाबों:


45

हाँ, listen_addresses सुनने के लिए बाध्य करने के लिए स्थानीय होस्ट के पते की सूची पर सेट किया जा सकता है ।

आपके उदाहरण में:

सुन_दादरे = '192.168.0.191, लोकलहोस्ट'

यदि स्थानीय मशीन में आई.पी. 192.168.0.192 , तो आपको उस आईपी को निर्दिष्ट करना चाहिए, न कि रिमोट होस्ट 192.168.0.191आईपी ​​को। PostgreSQL दूरस्थ होस्ट के IP पते से नहीं जुड़ सकता है।

आप यह नहीं कह रहे हैं "जो कनेक्ट करने की अनुमति है", आप कह रहे हैं "कौन से इंटरफेस को पोस्टग्रेक्यूएल को कनेक्शन स्वीकार करना चाहिए"। "जिसे कनेक्ट करने की अनुमति है" बिट अगले है, और में कॉन्फ़िगर किया गया हैpg_hba.conf

तो: कोशिश करो '192.168.0.192, localhost'। या बस *, चूंकि आप वास्तव में सभी नेटवर्क इंटरफेस पर सुनना चाहते हैं।


1
यह काम करता हैं। तो क्या सूची और '*' के बीच कोई व्यावहारिक अंतर है?
zabouti

10
@zabouti ज़रूर यदि आपके सर्वर में दो बाहरी नेटवर्क इंटरफेस हैं, तो आप PostgreSQL को उनमें से केवल एक पर बाइंड करने के लिए कह सकते हैं, इसलिए दूसरे पर Pg के लिए टीसीपी कनेक्शन बनाना भी संभव नहीं है। यह ज्यादातर सुरक्षा के लिए एक अतिरिक्त स्तर है, जिसमें विभिन्न सुरक्षा डोमेन के लिए कई इंटरफेस होते हैं। वीएलएएन, वर्चुअल स्विच आदि के साथ संयोजन में काफी आसान है। इसका सबसे आम उपयोग यह है localhostकि टीसीपी / आईपी कनेक्शन किसी भी बाहरी नेटवर्क इंटरफेस से संभव नहीं है, केवल लूपबैक पता।
क्रेग रिंगर

1
@ क्रेगिंगर: बहुत अच्छा जवाब!
फ़्रैंक

@ क्रेगिंगर आपको अपने जवाब में उन टिप्पणियों को जोड़ना चाहिए। यह बहुत उपयोगी जानकारी है।
जोआ पोएला

1
हाँ, मुझे लगता है कि टिप्पणी उत्तर से बेहतर हो सकती है। क्रेग पर रॉक!
डार्थ एलीगेंट

2

मैंने पाया है कि इसके बजाय localhostइसका उपयोग करने की आवश्यकता है 127.0.0.1यदि आप किसी अन्य पते को भी निर्दिष्ट कर रहे हैं।

इसलिए मेरे मामले में डॉकर होस्ट के आईपी पते के साथ-साथ लोकलहोस्ट के बारे में भी नहीं, बल्कि बाहरी आईपी पर, यह काम नहीं करता है (मुझे मेरे डॉकटर कंटेनरों के अंदर से कनेक्शन लेने से मना कर दिया गया है):

listen_addresses = '172.17.0.1, localhost'

लेकिन यह करता है:

listen_addresses = '172.17.0.1, 127.0.0.1'

0

प्रवेश 0.0.0.0 सभी IPv4 पतों के लिए सुनने की अनुमति देता है और :: सभी IPv6 पतों के लिए सुनने की अनुमति देता है। यदि सूची खाली है, तो सर्वर किसी भी आईपी इंटरफ़ेस पर बिल्कुल भी नहीं सुनता है, जिस स्थिति में केवल यूनिक्स-डोमेन सॉकेट्स को इससे कनेक्ट करने के लिए उपयोग किया जा सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.