12 min read

Send SMS via SMPP When Port 2775 Is Blocked by Your ISP (2026)

SMPP port 2775 blocked by your ISP or corporate firewall? This guide shows how to tunnel your SMS gateway traffic with Localtonet TCP tunnels in minutes.

SMPP ยท TCP Tunnel ยท SMS Gateway ยท 2026

Send SMS via SMPP When Port 2775 Is Blocked by Your ISP

SMPP (Short Message Peer-to-Peer) runs on port 2775. Countless ISPs, cloud providers, and corporate firewalls block that port outright no warning, no error, just a silent connection timeout. If your SMS gateway is sitting behind one of those networks, your application can't reach it no matter how perfect your configuration is. This guide walks you through tunneling SMPP traffic over a Localtonet TCP tunnel so your application connects reliably regardless of what your ISP blocks.

๐Ÿ”Œ Works for any SMPP client or gateway ๐Ÿ’ป Windows, Linux, macOS, Docker ๐ŸŒ No static IP or port forwarding needed

Why SMPP Connections Fail Behind Firewalls

Port 2775 is a non-standard port that most ISPs have no reason to keep open. It's not HTTP, not HTTPS, not SMTP so it gets dropped at the network level without a RST packet or any useful feedback. Your SMPP client sits there waiting for a response that will never come, and eventually times out. The same happens on many cloud VMs, corporate office networks, and shared hosting environments where egress filtering is aggressive.

The obvious fix opening the port on the firewall only works when you control every hop between your app and the gateway. If your client is behind a carrier-grade NAT or a managed corporate network, you don't have that option. Switching to a VPN sometimes helps, but introduces routing complexity and often gets blocked too.

A TCP tunnel punches through the restriction by wrapping your SMPP traffic inside an outbound connection on a port that is already allowed, then delivering it to your gateway on the other side.

How a Localtonet TCP Tunnel Solves This

Localtonet creates an outbound persistent connection from the machine running your SMS gateway to Localtonet's relay servers. That connection uses standard HTTPS ports, which almost nothing blocks. When your SMPP client connects to the public Localtonet address, the relay forwards the TCP stream to your gateway as if it were a direct connection on port 2775.

Your gateway software never changes. Your SMPP client never changes its protocol. The only thing that changes is the host and port your client connects to: instead of gateway.example.com:2775, it connects to something like tunnelxyz.localto.net:12345. From that point, the tunnel handles everything.

No inbound ports need to be open on the gateway machine. No router NAT rules. No static IP on the gateway side. The tunnel client on the gateway machine makes an outbound call and holds the line.

๐Ÿšซ Bypasses port blocks All tunnel traffic travels over standard outbound HTTPS, which is open on virtually every network.
๐Ÿ”’ Encrypted in transit The tunnel connection between gateway and relay is TLS-encrypted, so SMPP PDUs are not exposed in plaintext on the network path.
โšก Low added latency TCP relay adds roughly 10โ€“30 ms depending on relay region. For most SMS workflows this has no practical effect.
๐Ÿ”Œ Protocol-transparent Localtonet forwards raw TCP bytes. It doesn't inspect SMPP PDUs, so bind_transceiver, submit_sm, deliver_sm all pass through untouched.
๐Ÿ“ก Works for SMPP variants SMPP 3.3, 3.4, and 5.0 all use the same TCP port. The tunnel handles any version without configuration changes.
๐Ÿ’ป Runs anywhere Install the Localtonet client on Windows, Linux, macOS, or Docker. Works on bare metal, VMs, and cloud instances alike.

How to Tunnel SMPP Port 2775: Step-by-Step (2026)

1

Create a free Localtonet account

Go to localtonet.com/register and sign up. No credit card required for the free plan.

2

Copy your user token

Go to localtonet.com/usertoken and copy your token. You'll use this to log into the Localtonet Client in the next step.

3

Download and install the Localtonet Client

Download the Client for your platform from localtonet.com/download. Install it on the same machine (or same LAN) as your SMPP gateway process. Works on Windows, Linux, macOS, and Docker.

4

Log into the Client with your token

Open the Localtonet Client and enter the token you copied from localtonet.com/usertoken. The Client connects to Localtonet's infrastructure and stays running in the background. No further CLI interaction is needed.

5

Create a TCP tunnel from the dashboard

Go to localtonet.com/tunnel/tcpudp in the dashboard. Choose a server region closest to your SMPP clients, set Local IP to 127.0.0.1 and Local Port to 2775, then click Save. Localtonet assigns a public relay port (e.g. 38412) immediately. Note the full address shown, something like tunnelxyz.localto.net:38412.

Tunnel configuration values
Type       : TCP
Server     : (pick the region closest to your SMPP clients)
Local IP   : 127.0.0.1
Local Port : 2775
6

Start the tunnel from the dashboard

Back in the dashboard, click the Start button next to the tunnel you created. The tunnel goes live and your public relay address starts accepting SMPP connections. All further management stop, restart, region change is done from this same dashboard view.

7

Point your SMPP client at the tunnel address

Open your SMPP client configuration and replace the gateway host and port with the Localtonet relay address. The system_id, password, and all other bind parameters stay exactly the same.

SMPP client config (before)
host=gateway.example.com
port=2775
system_id=myapp
password=secret
SMPP client config (after)
host=tunnelxyz.localto.net
port=38412
system_id=myapp
password=secret
8

Verify the bind and send a test message

Connect your SMPP client. You should receive a bind_transceiver_resp (or bind_transmitter_resp) with command_status=0 within 1โ€“2 seconds. Send a submit_sm and confirm delivery on the gateway side.

โš ๏ธ Most tutorials skip this step: SMPP enquire_link keep-alive timeout

SMPP sessions use enquire_link PDUs to detect dead connections. The default interval in most clients is 30โ€“60 seconds. If your tunnel relay has an idle-connection timeout shorter than this interval, the TCP connection is silently closed and your bind drops without any SMPP-level error. Set your SMPP client's enquire_link_interval to 20 seconds or lower and confirm the gateway responds with enquire_link_resp. This is the single most common cause of "works for a few minutes then stops" on tunneled SMPP connections.

๐Ÿ”Œ Using a custom TCP port on the gateway side?

Some SMS gateway software lets you move SMPP to a non-standard port (e.g. 3775, 5775) to avoid the ISP block on your server's outbound connections. If your gateway already listens on a different port, change Local Port in the Localtonet tunnel config to match that port. The public-facing tunnel port assigned by Localtonet is independent of the local port you can map any local port to any public relay port.

Tips for Running SMPP Tunnels in Production

๐ŸŽฏ Pick the relay region closest to your clients Latency on SMPP sessions matters for throughput. A relay in the same continent as your app cuts round-trip time by 50โ€“150 ms compared to a cross-ocean hop.
๐Ÿ”’ Restrict bind access at the gateway level Your gateway now accepts connections from a Localtonet relay IP, not from your app directly. Add the relay server's IP to your gateway's IP allowlist so random internet traffic can't attempt a bind.
๐Ÿ“ก Use a dedicated tunnel per gateway instance If you run multiple SMPP gateway instances (e.g. one for MT and one for MO routing), create a separate Localtonet tunnel for each. Mixing traffic through one tunnel makes troubleshooting much harder.
โšก Monitor the systemd service, not just the SMPP process On Linux, register the Localtonet Client as a systemd service so it restarts automatically after reboots. Tunnel start/stop stays managed from the dashboard the service only needs to keep the Client process running. Add an alert on the service status separately from your application monitoring.
๐Ÿ›  Test failover before you need it Kill the tunnel client deliberately once in staging to confirm your SMPP client reconnects cleanly after the tunnel comes back up. Some clients don't retry after a TCP RST and need an explicit reconnect loop.
๐Ÿ’ฐ Free plan caveats Free plan tunnels may receive a new public port after each client restart. For production, upgrade to a paid plan to get a stable, persistent port assignment so you don't have to update client configs after every restart.

Frequently Asked Questions

Does the tunnel work for both SMPP transmitter and transceiver binds?

Yes. Localtonet forwards raw TCP bytes without inspecting the SMPP session type. Bind as transmitter, receiver, or transceiver all three work identically through the tunnel. The bind type is negotiated directly between your client and the gateway; the relay is transparent to it.

Can I tunnel SMPP over port 2776 (the TLS variant) as well?

Yes. Create a second TCP tunnel with Local Port: 2776 and Localtonet will assign a separate public port for it. The tunnel treats TLS-wrapped SMPP exactly the same as plain SMPP it's still raw TCP bytes from the relay's perspective. Your client handles the TLS handshake end-to-end.

What happens to active SMPP sessions if the tunnel client restarts?

Active TCP connections through the tunnel are dropped when the client restarts. Your SMPP client will receive a connection reset and must rebind. Most SMPP libraries have a reconnect-on-error option make sure it's enabled. The tunnel itself comes back up in under 5 seconds on a normal restart, so the outage window is short.

My SMPP bind succeeds but submit_sm gets no response. What's wrong?

This is almost always an enquire_link timeout issue described in the warning above, or a gateway-side IP restriction. Check that your gateway's IP allowlist includes the Localtonet relay server's IP. You can find the relay IP with nslookup us1.localtonet.com (replace with your relay host). Add that IP to the gateway's allowed SMPP sources.

How many concurrent SMPP connections can pass through one tunnel?

Localtonet TCP tunnels support multiple concurrent connections on a single tunnel. For high-throughput SMS platforms that maintain 5โ€“10 simultaneous SMPP binds, a single tunnel handles all of them. If you hit throughput limits, splitting across two tunnels (each bound to a different gateway listener) is the standard approach.

Is it safe to send SMS message content through a Localtonet tunnel?

The connection between the Localtonet client and the relay server is TLS-encrypted. For additional end-to-end security, use SMPP over TLS (port 2776) so message content is encrypted before it enters the tunnel. Plain SMPP (port 2775) through the tunnel means content is encrypted between your gateway machine and the relay, but decrypted at the relay endpoint the same trust model as any reverse proxy.

Does this work if the gateway is on a different machine on the same LAN?

Yes. Change Local IP in the tunnel config from 127.0.0.1 to the LAN IP of the gateway machine (e.g. 192.168.1.50). Run the Localtonet client on any machine on that same LAN and it will forward incoming SMPP connections to 192.168.1.50:2775.

Can I use this on a Docker container running an SMPP gateway?

Yes. Add the Localtonet client as a sidecar container or run it inside the same container. Set Local IP: 127.0.0.1 and Local Port: 2775 if the gateway is in the same container, or use the Docker bridge network IP if it's a separate container. The Docker-specific download is available on the download page.

Ready to get your SMPP gateway online?

Create a free Localtonet account, set up a TCP tunnel in under 5 minutes, and send your first message through the tunnel today. No credit card required to start.

Get Started Free โ†’

Localtonet is a secure multi-protocol tunneling and proxy platform designed to expose localhost, devices, private services, and AI agents to the public internet supporting HTTP/HTTPS tunnels, TCP/UDP forwarding, mobile proxy infrastructure, file server publishing, latency-optimized game connectivity, and developer-ready AI agent endpoint exposure from a single unified control plane.

support