Re: ident auth postgres 7.4 fedora core 3
От | Tom Lane |
---|---|
Тема | Re: ident auth postgres 7.4 fedora core 3 |
Дата | |
Msg-id | 3027.1110217050@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: ident auth postgres 7.4 fedora core 3 (Ian Pilcher <i.pilcher@comcast.net>) |
Список | pgsql-jdbc |
Ian Pilcher <i.pilcher@comcast.net> writes: > Since 1.4.2 (I believe), Java uses IPv6 by default. When a connection > is made to an IPv4 address, it actually makes an IPv6 connection to an > "IPv4-mapped address". So when you request a connection to 127.0.0.1, > you actually get a connection to ::ffff:127.0.0.1. PostgreSQL doesn't > know this, however; it asks the ident daemon, "who's connecting from > 127.0.0.1?" The daemon answers "nobody". I traced through this on my own Fedora Core 3 box (kernel 2.6.10-1.766_FC3), and found that when I do psql -l -h ::ffff:127.0.0.1 the remote address given to Postgres by accept() is actually 127.0.0.1 not ::ffff:127.0.0.1. So the kernel itself is doing the conversion at some level. On the psql side, the addresses are in fact shown as ::ffff:127.0.0.1, so the dirty work is being done in the kernel, it's not that glibc downconverted the address to IPv4 in psql userland before making the connection request. In fact, "lsof" shows the connection as being IPv6 on the psql side and IPv4 on the postmaster side! Arguably this is a bug, or at least a bad idea, but there's probably not going to be much interest in changing the kernel behavior in the near future. They'll say it would break many more things than it fixes because of the many non-IPv6-aware programs out there. And I suppose they'd be right. If you can't get any results from telling authd to map the addresses, you might try connecting to "::1" instead of "::ffff:127.0.0.1". regards, tom lane
В списке pgsql-jdbc по дате отправления: