Listen_adresler gerçekten bir listeye ayarlanabilir mi?


32

PostgreSQL çalıştıran 192.168.0.192 IP adresine sahip bir VM'im var.

Belirtirsem

listen_addresses = '*'

daha sonra 192.168.0.191'de başka bir VM'den ve localhost'tan bağlanabilirim.

Ancak postgreSQL'e bu iki adresi kullanmasını söylemek için bir liste kullanamıyorum. Listen_adreslerini bir listeye değiştirirsem:

listen_addresses = '192.168.0.191, localhost'

o zaman artık 192.168.0.191'den bağlanamıyorum.

Stackexchange'teki neredeyse tüm örneklerin listen_addresses '*' olarak ayarlandığını fark ettim. Liste formu çalışmadığı için mi?

Yanıtlar:


45

Evet, yerel ana bilgisayardaki dinlenmeye bağlamak üzere bir listen_addressesadres listesine ayarlanabilir .

Örnekte:

listen_addresses = '192.168.0.191, yerel ana bilgisayar'

Yerel makinenin IP'si 192.168.0.192varsa, uzak ana 192.168.0.191IP'yi değil, bu IP'yi belirtmelisiniz . PostgreSQL uzaktaki bir ana bilgisayarın IP adresine bağlanamaz.

"Kimin bağlanmasına izin verilir" demiyorsunuz, "PostgreSQL'in hangi arabirimlerin bağlantı kabul etmesi gerektiğini" söylüyorsunuz. "Kimin bağlanmasına izin verilir" biti bir sonraki adımdır ve yapılandırılmıştır pg_hba.conf.

Öyleyse dene '192.168.0.192, localhost'. Ya da sadece *, muhtemelen tüm ağ arayüzlerini dinlemek istemenizden dolayı.


1
İşe yarıyor. Peki liste ile '*' arasında herhangi bir pratik fark var mı?
zabouti

10
@zabouti Tabii. Sunucunuz (örneğin) iki harici ağ arayüzüne sahipse, PostgreSQL'in sadece bir tanesine bağlanmasını söyleyebilirsiniz, bu yüzden diğerinde Pg'ye TCP bağlantısı yapmak bile mümkün değildir. Farklı güvenlik alanlarına çoklu arayüzleri olan bir sistem için çoğunlukla ekstra bir güvenlik seviyesidir. VLAN'lar, sanal anahtarlar vb. İle birlikte kullanıldığında oldukça kullanışlı En yaygın kullanım, localhostTCP / IP bağlantılarının herhangi bir harici ağ arabiriminden, sadece geridöngü adresinden mümkün olmadığı şekilde ayarlanmasıdır .
Craig Ringer

1
@CraigRinger: Çok iyi bir cevap!
Frank'lar

@CraigRinger bu yorumları cevabınıza eklemelisiniz. Bu çok faydalı bir bilgi.
João Portela

1
Evet, yorumun cevabından daha iyi olabileceğini düşünüyorum. Craig'i salla!
Darth Egregious

2

Bunu kullanmak yerine buldum localhost127.0.0.1Başka adresler de bunu yapmanız gerektiğini .

Dolayısıyla, Docker ana bilgisayar IP adresini ve ayrıca yerel ana bilgisayarı dinlemem durumunda, harici IP'yi değil, bu işe yaramıyor (Docker kaplarımın içinden reddedilen bir bağlantı alıyorum):

listen_addresses = '172.17.0.1, localhost'

Ancak bu yapar:

listen_addresses = '172.17.0.1, 127.0.0.1'

0

0.0.0.0 girişi tüm IPv4 adreslerini dinlemeye izin verir ve :: tüm IPv6 adreslerini dinlemeye izin verir. Liste boşsa, sunucu hiçbir IP arayüzünü dinlemez, bu durumda bağlanmak için sadece Unix alan soketleri kullanılabilir.

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.