Wenn Sie PostgreSQL 9.1 x64 unter Windows installiert haben, richten Sie eine Listenadresse ein. Bei der Verbindung mit pgAdmin wird jedoch die folgende Fehlermeldung angezeigt. Ich bin mir nicht sicher, warum PostgreSQL meine IPv6-Adresse und nicht meine reguläre IP-Adresse sieht:
Um die Authentifizierung basierend auf der Fehlermeldung zum Laufen zu bringen, habe ich Folgendes aktualisiert pg_hba.conf
:
host all all fe80::c5d2:XXXX:XXXX:3bc0/12 trust
Das hat funktioniert, ist aber hässlich und zu spezifisch. Ich habe Folgendes basierend auf PostgreSQL-Dokumenten versucht, aber keines hat funktioniert. Ich erhalte den gleichen Fehler "Zugriff verweigert":
local all all trust
host all all 0.0.0.0/12 trust
Ich habe diesen zum Laufen gebracht, der den gesamten IPv6-Adressraum abdeckt, aber wie kann ich einen IPv6-Bereich für weitere Einschränkungen angeben?
host mydb myuser ::/0 trust
Fragen
- Warum nimmt pgAdmin meine IPv6-Adresse und nicht meine normale IP auf?
- Wie gebe ich in IPv6 einen Bereich an, ohne darauf zurückzugreifen
::/0
?
quelle
fe80
als das Präfix funktionierte, thx. Was ist die Bedeutung von/12
,/24
usw. auf der IPv4 - Adresse?10.0.0.0/16
würde bedeuten, dass die ersten 16 Bits fest sind und die letzten 16 Bits alles sein können. Also10.0.0.0
zu10.0.255.255
.10.0.0.0/24
wäre10.0.0.0
zu10.0.0.255
. Und10.0.0.0/18
wäre10.0.0.0
zu10.0.63.255
,10.0.64.0/18
wäre10.0.64.0
zu10.0.127.255
etc.fe80::/10
bedeutetfe80:0000:0000:0000:0000:0000:0000:0000
zufebf:ffff:ffff:ffff:ffff:ffff:ffff:ffff
. Google auf "CIDR-Notation" für weitere Informationen.0.0.0.0/12
tun soll. Es wäre der Bereich0.0.0.0
an0.15.255.255
, von denen alle reservierten Adressraum ist nach iana.org/assignments/ipv4-address-space . Diese Adressen sollten niemals in einer echten Verbindung erscheinen.Ich bin mir nicht ganz sicher, warum pgAdmin das Verhalten hat, das es tut. Meine Empfehlung wäre, auf ihren Support-Listen nachzufragen und Informationen über das Design dieses Tools zu erhalten und ob dies ein Fehler oder eine Funktion ist. Dies kann auch mit der Windows-Namensauflösung zu tun haben. Um dieses Problem zu umgehen, sollten Sie in der Lage sein, eine Verbindung über die IPv4-Adresse oder über 127.0.0.1 anzugeben.
Bei der Frage pg_hba.conf erhalten ipv4 und ipv6 die unterschiedlichen Leerzeichen in der Datei, sodass es mich nicht überrascht, dass Sie dies hinzufügen müssten.
Eine Möglichkeit, die Sie jetzt herstellen können, besteht darin, ein Kennwort (
ALTER USER "username" WITH PASSWORD 'password'
) festzulegen . Sie können dann Ihren gesamten IPv6-Speicherplatz in der pg_hba.conf auf md5 setzen und müssen sich nicht so viele Sorgen machen. Wenn Sie sich in einer Windows-Domäne befinden, können Sie die LDAP-, SSPI- oder Kerberos 5-Authentifizierung verwenden und somit nur Domänenmitgliedern den Zugriff erlauben. Dies ist jedoch ein etwas fortgeschrittenes Thema.quelle
IPv6 wird verwendet, weil Sie eine Verbindung herstellen
localhost
.localhost
löst sich zu beiden127.0.0.1
und::1
.Da Betriebssysteme IPv6 gegenüber IPv4 bevorzugen, wird IPv6 aus diesem Grund verwendet (obwohl dies unter Linux über konfiguriert werden kann
/etc/gai.conf
). Die Adresse::1
wird niemals als Quelladresse verwendet, und Sie haben keine globale Adresse (2000::/3
), sodass die linklokale Adresse (fe80::/10
) als Quelladresse verbleibt.Alles vollkommen logisches, normales, erwartetes Verhalten, wenn Sie darüber nachdenken.
quelle