🚀   Portable does more than just ELT. Explore Our AI Orchestration Capabilities 

Troubleshooting Firewall and TCP Connectivity Issues

Sergio
CTO

After resolving your hostname, Portable attempts to establish a TCP connection to your database server on the specified port. If this step fails, you'll see a "TCP Connectivity" error in the diagnostic checks.

What This Means

Portable can resolve your hostname to an IP address, but cannot reach the server on the expected port. The connection is being blocked or the server isn't listening.

Common Causes

1. Firewall Blocking the Connection

The most common cause. Your database server's firewall (or a network firewall) is blocking incoming connections from Portable's IP addresses.

Solution: Whitelist Portable's IP addresses (34.122.15.109) in your firewall rules. You can find our current IP addresses in your Portable dashboard under Settings → IP Addresses.

2. Wrong Port Number

You may have specified the wrong port, or your database is running on a non-standard port.

Default ports by database:

DatabaseDefault Port
PostgreSQL5432
MySQL3306
SQL Server1433
Snowflake443
BigQuery443

3. Database Server Not Running

The database service may be stopped, crashed, or not yet started.

4. Server Not Listening on Public Interface

Your database may be configured to only accept connections from localhost (127.0.0.1) rather than all interfaces (0.0.0.0).

Solution: Update your database configuration to listen on all interfaces or your server's public IP.

  • PostgreSQL: Edit postgresql.conf and set listen_addresses = '*'
  • MySQL: Edit my.cnf and set bind-address = 0.0.0.0

5. Cloud Security Groups / Network ACLs

If your database is hosted on AWS, GCP, or Azure, you may need to update security groups or network ACLs in addition to any OS-level firewall.

How to Diagnose

Test connectivity from your local machine

# Using netcat (macOS/Linux)
nc -zv db.example.com 5432

# Using telnet
telnet db.example.com 5432

# Using PowerShell (Windows)
Test-NetConnection -ComputerName db.example.com -Port 5432

If this succeeds from your machine but Portable fails, it's likely a firewall rule that allows your IP but not Portable's.

Check if the port is open from the internet

Use an online port checker:

Verify the database is listening

On the database server itself:

# Linux
sudo netstat -tlnp | grep 5432
# or
sudo ss -tlnp | grep 5432

# Check if process is running
sudo systemctl status postgresql

Cloud-Specific Instructions

AWS RDS / Aurora

  1. Go to EC2 Console → Security Groups
  2. Find the security group attached to your RDS instance
  3. Edit Inbound Rules
  4. Add a rule: Type = PostgreSQL (or your DB type), Source = Portable's IP addresses

Google Cloud SQL

  1. Go to Cloud SQL → Your Instance → Connections
  2. Under Authorized Networks, click Add Network
  3. Add Portable's IP addresses

Azure Database

  1. Go to Azure Portal → Your Database → Networking
  2. Under Firewall rules, add Portable's IP addresses
  3. Ensure Allow Azure services is configured appropriately

DigitalOcean Managed Databases

  1. Go to Databases → Your Database → Settings
  2. Under Trusted Sources, add Portable's IP addresses

Using SSH Tunnel as an Alternative

If you cannot open your database port to the internet, consider using an SSH tunnel:

  1. Set up a bastion host (jump server) that Portable can reach
  2. Configure your source/destination to use SSH tunneling
  3. The connection path becomes: Portable → Bastion (port 22) → Database (private network)

This way, only SSH port 22 needs to be exposed, and your database stays on a private network.

Still Stuck?

If you've verified the port is open but Portable still can't connect, contact support with:

  • Your database hostname and port
  • The output of nc -zv <hostname> <port> from an external server
  • Your cloud provider and any relevant security group IDs
  • Your source/destination ID from Portable