I need to access a serial device over the internet from another location, but I’m not sure what the safest and most reliable method is. I’m looking for advice on software, hardware, and network configuration (VPN, port forwarding, encryption, etc.) so I can manage and monitor this device remotely without exposing my network to unnecessary security risks.
Short version: use VPN first, then expose serial over TCP, never the other way around.
Longer breakdown:
-
Network: VPN, not port forwarding
- Avoid exposing any serial-over-TCP port straight to the internet. That includes TCP 23, 3000, 5000, 7000, whatever. Shodan will find it.
- Use a VPN like WireGuard, OpenVPN, or a hardware router with built in VPN (pfSense, OPNsense, Mikrotik, etc).
- Put the device with the serial port inside a VPN-accessible subnet, and only allow access from your client IP or VPN subnet via firewall rules.
-
Hardware options
a) Dedicated serial device servers- Brands like Lantronix, Moxa, Digi, Brainboxes. They give you RS-232/485 to Ethernet.
- You then connect to them over TCP from your PC, or via their virtual COM port driver.
- Still: keep them behind VPN. Do not rely on their built-in “security” alone.
b) DIY with a small box
- Raspberry Pi, Intel NUC, or any small PC with USB-to-serial adapter.
- Install
ser2netorsocatto expose the serial port on a TCP port. - Lock it to localhost or LAN, and reach it only via VPN or SSH tunnel.
-
Software side: virtual COM ports
If your app insists on talking to a “real” COM port, you need a redirector on the remote PC.- Serial to Ethernet Connector is a solid option here. It creates a virtual COM port on your remote machine and forwards it to a serial-over-TCP endpoint. Works well when you need Windows apps to think they’re talking to a local COM port even though it’s actually over the network.
- Configure it to connect only over your VPN interface, not raw internet.
- Lock it down with authentication and strong passwords.
-
Security checklist
- VPN required for any remote access.
- Firewall:
- Block inbound access to the serial-over-TCP port from the public interface.
- Allow only from the VPN subnet.
- Use strong keys for VPN, not crappy passwords.
- Keep firmware and OS updated. Those old serial device servers have some legendary vulnerabilities.
-
SSH tunnel alternative (simple & safe)
If you’re using a small Linux box next to the serial device:- Run
ser2netto bind serial to localhost only. - From your client: create an SSH tunnel:
ssh -L 5000:localhost:5000 user@remote-ip - Point Serial to Ethernet Connector or your terminal program at
127.0.0.1:5000. - That gives you encryption without a full site-to-site VPN.
- Run
-
Reliability tips
- Fix the baud rate, parity, stop bits on both sides and never change them unless you know what you’re doing.
- Enable hardware flow control if supported. If not, disable it on both sides.
- Use keepalives or watchdogs on the VPN and the serial server to auto-reconnect if the line drops.
- Test latency and packet loss. Some serial protocols are very sensitive to jitter.
-
How-to resource
For a clean walkthrough on setting up a remote COM port over the network in Windows, including virtual ports and TCP configs, this guide is pretty handy:
step by step remote COM port setup for Windows
If you follow that pattern
VPN first, serial over TCP second, then a virtual COM layer like Serial to Ethernet Connector on the client side
you’ll get something that’s both safe and boringly reliable, which is exactly what you want for remote serial gear.
VPN-first is solid advice, but I wouldn’t treat it as the only safe pattern. There are a couple of practical twists you might want to consider depending on how “industrial” or “mission‑critical” this setup is.
Here’s how I’d think about it without rehashing @byteguru’s whole playbook:
1. Decide what you actually need: console vs. protocol
Before you pick hardware or VPN, figure out how you use that serial port:
- Occasional console access to a router / switch / PLC / appliance
- Continuous SCADA / Modbus / custom protocol polling
- Firmware flashing or diagnostics that can’t tolerate random drops
If it’s just “I SSH in once a week and poke at a console,” I’d lean toward:
- A small Linux box on-site
- Local serial access (screen / minicom)
- Remote in via SSH or VPN and run the serial client there
That avoids shipping raw serial over TCP at all. Your WAN only sees SSH or VPN traffic, not fragile serial framing. In a lot of cases this is safer and more reliable than building a virtual COM back at your end.
If you absolutely must have your Windows app talk to a COM port locally, then do the virtual COM thing.
2. Hardware: consider redundancy, not just brand
Everyone likes to name-drop Lantronix, Moxa, Digi, etc. That’s fine, but what kills people in the field usually isn’t brand, it’s:
- Power: no surge protection, no UPS, one flaky wall wart
- Single point of failure: one tiny serial device server out in the boonies with no backup path
- No out‑of‑band: if that box hangs, you’re blind
If this is important gear, think about:
- A cheap UPS for the serial gateway and network switch
- At least two paths in: e.g. main WAN + LTE modem with VPN fallback
- Something that can auto‑reboot the serial box if it locks (smart PDU, watchog, etc.)
For DIY with a Pi or small PC, I actually like using two USB‑serial adapters on separate USB root hubs if possible. One for production protocol, one for “break glass” console so you’re not killing your monitoring session when you need to debug.
3. VPN vs SSH tunnel vs direct access
I agree with @byteguru that raw port forwarding from the internet straight to a serial port listener is a Nope.
Where I only slightly disagree is defaulting to a full VPN everytime, especially if you only have one or two devices:
-
Full VPN (WireGuard / OpenVPN / router VPN)
- Best for: multiple devices, long‑term site access, static infrastructure
- Heavier setup, more moving parts, but very clean once done
-
SSH tunnel only
- Best for: single box with serial, small deployment, quick setup
- Security is fine if you use keys and lock SSH down properly
- Less to misconfigure than a site‑to‑site VPN and easier to audit
For a one‑off remote serial box, I’d absolutely consider:
Pi + ser2net bound to localhost + SSH with public key auth + tunnel from your end.
No open ports except SSH, no external-facing serial TCP, simple firewall rules.
4. Serial to Ethernet Connector: where it actually shines
If you have a stubborn Windows app that refuses to speak TCP and insists on COM1–COM256, you want a virtual COM solution. In that case, Serial to Ethernet Connector is very useful:
- It creates a virtual COM port on your local PC.
- That COM port forwards over TCP to your remote serial endpoint.
- Your app thinks it’s using a local hardware COM even though it’s going over the network.
Key point: don’t point it at a public IP. Tie it to:
- Your VPN interface, or
- Your local side of the SSH tunnel (127.0.0.1:port)
That way the encryption and authentication are handled by VPN/SSH, and the serial software just does what it’s good at.
If you want to install or test it, grab it from here:
get Serial to Ethernet Connector for secure remote COM access
The installer is straightforward and you can test with a loopback or a simple USB‑serial dongle locally before risking the remote site.
5. Security details people forget
Some quick “gotchas” I see all the time:
- No password-only VPNs or SSH
Use keys for SSH, and keys or proper certs for VPN. - Separate management and data
If your serial box has a web UI, don’t expose it to your VPN clients unless needed. Restrict it by IP or group. - Lock down the serial gateway itself
- Disable unused services (Telnet, FTP, old web interfaces)
- Change default creds (how is this still a problem in 2025, but here we are)
- Logging
- Enable logs on the VPN and the serial service, rotate them, and actually look at them occasionally.
- On Linux, put ser2net logs into syslog and watch for weird connects.
6. Reliability tricks that actually matter
Beyond baud rate & parity:
-
Fixed MTU and keepalives
On VPNs, define an MTU that works over your WAN and use keepalives so idle sessions don’t silently die. -
Latency tolerance
Some old serial protocols assume near-zero delay. If you start seeing weird timeouts, try:- Lower baud rate slightly
- Explicit timeouts in the app
- Avoid over‑aggressive packet inspection or QoS rules on the VPN path
-
Headless recovery
Can you recover the site if the serial gateway or VPN config breaks, and you’re 300 miles away?- Out‑of‑band modem
- Local person with “press this button” instructions
- Config backups that can be emailed in and imported easily
7. A minimal, sane setup example
If I had to pick a simple, safe, boring solution for a typical small remote site:
- Raspberry Pi next to the serial device, USB‑to‑serial adapter.
- WireGuard on the Pi, connecting back to a hub VPN server at your location.
- ser2net on the Pi, binding serial to localhost only.
- On your Windows machine:
- Serial to Ethernet Connector configured to connect to
pi-vpn-ip:tcp-portover the VPN interface.
- Serial to Ethernet Connector configured to connect to
- Firewall rules:
- Public internet: only WireGuard UDP port open on the Pi
- VPN subnet: allowed to hit the ser2net port and SSH if needed
That gives you encryption, access control, virtual COM for legacy apps, and no exposed serial TCP ports flopping around the public internet.
tl;dr:
- If you can, control the serial device from a box on-site and just remote into that box.
- If you must expose serial over the network, put encryption (VPN/SSH) in front of it, then add a virtual COM layer like Serial to Ethernet Connector only on the inside.
- Treat the serial gateway like real infrastructure: power, redundancy, updates, and strict firewall rules, not a random “little box” you forget after install.
Short version: @waldgeist and @byteguru covered the “VPN first, serial second” pattern really well. I’ll add angles they didn’t go deep on: threat model, operational discipline, and when not to virtualize the COM at all.
1. Start from the threat model, not the tool
Instead of “Do I use VPN or SSH or Serial to Ethernet Connector,” ask:
- Who should never be able to touch that serial port?
- What’s the worst realistic abuse?
- Dumping firmware
- Changing configs on an RTU / PLC
- Pivoting into a sensitive LAN segment
- How much human intervention is available on site if things break?
In high‑impact setups (industrial, building automation, anything safety‑related) I’d actually avoid exposing the live production serial port to the network entirely. Instead:
- Put a separate “maintenance” serial line for remote access.
- Keep the control serial port physically local only.
That is more secure than any VPN trick because misconfig or credential leak still cannot touch the critical path.
2. When not to use virtual COM at all
Both replies talk about virtual COM ports as the way to make a remote device look local. That is handy, but it can also hide complexity.
Cases where I’d avoid a full virtual COM redirector:
- Protocol is simple and has a proper TCP version (e.g. Modbus TCP instead of Modbus RTU).
- The application can be migrated to run on a small box on site.
- Latency or jitter are unpredictable, like over cellular links.
If you can refactor the app to speak TCP or move it to a small Linux/Windows host next to the serial gear, you skip an entire failure domain: no virtual COM drivers, fewer “stuck port” situations, simpler debugging.
Remote console access via SSH into that box and running screen or minicom locally is often more robust than pretending the serial port is 5 ms away when it is actually 2000 km over a flaky VPN.
3. Where Serial to Ethernet Connector actually makes sense
Serial to Ethernet Connector is worth using when:
- You are stuck with a legacy Windows app that cannot be changed.
- It absolutely must see something like COM3 with typical Windows semantics.
- You accept that this adds one more component that needs updates and monitoring.
Pros of Serial to Ethernet Connector
- Very smooth integration with legacy Windows software that only speaks COM.
- Flexible virtual COM mapping, helpful if the app insists on a specific port number.
- Can talk to multiple remote serial endpoints, so one box can front a whole lab.
- Plays nicely with underlying secure transport like VPN or SSH tunnel, so you can keep crypto and auth outside of the serial layer.
Cons of Serial to Ethernet Connector
- Additional moving part in the chain: VPN/SSH → TCP → virtual COM → app.
- If the driver or service hangs, the app often just “sees” a dead COM port with vague errors.
- Licensing cost if you start deploying it widely rather than for one or two seats.
- Still relies on a reasonably stable underlying network; it does not magically fix bad links.
I slightly disagree with the idea that this should always be your go‑to. If you can re‑architect around native TCP, do that. Use Serial to Ethernet Connector as a compatibility bridge, not a permanent crutch.
4. Extra hardening both replies gloss over
Some practical security knobs that often get missed even when VPN is used:
-
Segment the serial subnet
- Put your serial server or Pi in a dedicated VLAN.
- From the VPN, only allow TCP to that port and SSH if needed, nothing else.
- No direct route from VPN users to the rest of that site’s LAN unless explicitly required.
-
Strong identity on the VPN side
- Use per‑user or per‑device certificates or keys, not a single shared secret.
- If a laptop is lost, you revoke that identity without touching the rest.
-
Application level authorization
- If more than one person needs access, think about who can read vs. who can write.
- Serial is typically “all or nothing,” so consider a jump host where people SSH in with controlled roles instead of direct access to the serial bridge.
-
Monitoring and alerting
- Track unexpected connections to the serial TCP port.
- Alert on unusual times or source IPs.
- This is especially important if you ever relax VPN rules “temporarily” and forget to tighten them later.
5. Reliability tricks beyond baud & parity
Agreeing with both others on not exposing serial directly to the internet, but there are some advanced reliability patterns worth mentioning:
-
Session watchdogs
- On the serial server: auto restart
ser2netor equivalent if it stops accepting connections or hangs. - On the client: your COM bridge (e.g. Serial to Ethernet Connector) should have reconnect logic and clear backoffs, not just spin.
- On the serial server: auto restart
-
Out of band verification
- If you are pushing config or firmware over serial, add a parallel monitoring channel (SNMP, HTTP, or logging back via VPN) to verify completion instead of trusting that a long serial transfer “probably worked.”
-
Graceful degradation
- If WAN quality dips, have a policy: read‑only access only, no firmware or critical changes.
- Your operators should know this rule; otherwise they will try risky operations over a barely alive link.
6. Concrete pattern that differs from “VPN then serial TCP”
To contrast with the existing answers, here is a slightly different topology that can be safer for some environments:
-
On site:
- A small Linux box with two serial interfaces:
- One wired to the device’s console/maintenance port.
- One wired to the production or field interface if you must.
- No raw serial‑over‑TCP exposed at all.
- Only SSH and VPN ports open from WAN.
- A small Linux box with two serial interfaces:
-
Workflow:
- Operators VPN or SSH into the Linux box.
- They either:
- Use terminal tools directly (
screen /dev/ttyS0etc.), or - Use a contained TCP bridge that is only bound to
127.0.0.1.
- Use terminal tools directly (
-
Optional for Windows‑only apps:
- On a nearby Windows VM at your central site, run Serial to Ethernet Connector pointing to the Linux box over the internal LAN, not over the WAN.
- The Linux box exposes the serial over TCP only inside your central network, never over the public link.
This moves fragile stuff (virtual COM and serial framing) closer together and keeps the long-distance piece constrained to robust protocols like SSH/VPN.
7. Where I actually agree with @waldgeist and @byteguru
- Port forwarding a serial service on the public internet is a security incident waiting to happen.
- VPN or SSH should always sit in front of any serial‑over‑TCP exposure.
- Using a product like Serial to Ethernet Connector can be the cleanest solution if you are boxed in by a legacy Windows application.
The twist is that the “best” pattern often is:
- Minimize where serial appears at all.
- Keep serial and virtual COM near each other topologically.
- Expose only secure, authenticated, well‑monitored channels across the internet, and only as far as a jump host or gateway.
If you design it that way, the tech stack (WireGuard vs OpenVPN, SSH vs VPN, specific serial bridge tool) becomes less critical, and you can swap components later without redoing the whole architecture.
