Postgresql – VirtualBox Port Fowarding to Connect to PostgreSQL Database

port-forwardingpostgresqlvirtualboxwindows 7

I'm trying to connect to a PostgreSQL database hosted on a Win7 guest from a Win7 host.

I've configured security in pg_hba.conf

host    all         all         127.0.0.1/32          md5
host    all         all         10.0.2.15/32          md5
host    all         all         192.168.1.6/32        md5

and set the listen_addresses setting in postgresql.conf to '*'.

I think I've set up port forwarding correctly as I see:

Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/win7_vm1/GuestPort, Value: 5432
Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/win7_vm1/HostPort, Value: 5432
Key: VBoxInternal/Devices/e1000/0/LUN#0/Config/win7_vm1/Protocol, Value: TCP

when I call getextradata.

This is similar to
Can't connect to PostgreSQL on VirtualBox guest but I'm not sure what I'm doing wrong.

In the vbox.log file I see:

00:00:01.019 NAT: set redirect TCP
host port 5432 => guest port 5432 @
10.0.2.15 00:00:01.033 NAT: failed to redirect TCP 5432 => 5432

but I'm not sure how to fix that. Any ideas? Thanks.

Best Answer

My first question would be, can you verify that you can connect to PostgreSQL on the guest from the guest?

As for the issue with the port forwarding failure, that is typically the result of VirtualBox not being able to create a socket listening for connections on the host - and the most common cause for that is that something else is already listening on that port. Do you have a PostgreSQL running on the host as well?

Take a look at the TCPView tool from the SysInternals team at Microsoft. It can show you active TCP endpoints and their owning process. This should help you determine if something has grabbed TCP 5432 and what it is. Run it on the host - and guest if you want to verify PostgreSQL is running and listening for connections.

TCPView: http://technet.microsoft.com/en-us/sysinternals/bb897437