Interconnect vs Tailscale

Join two networks. Merge neither.

Tailscale and Atlas Interconnect both let a device reach machines it could not reach before, and both are often described as “connecting networks”. They answer different questions. A Tailscale tailnet is one network under one coordination server, and a subnet router extends it to a LAN of devices that do not run Tailscale. Atlas Interconnect joins two separate Atlas networks, each with its own keys, members and operator, at one host called the seam, and lets an allow-listed set of hosts on each side reach the other. This page explains both mechanisms, the two modes Interconnect offers, and where each design is the better fit.

Shipped · opt-inMapped mode · Prefix mode
01 · How Interconnect works

Two networks meet at one host.

An Atlas network is sealed: its own keys, its own address space, forwarding only among its own members. To join two of them, an operator runs one daemon per network on a single host and connects the two daemons with a link that exists only inside that host. Everything that crosses is data between hosts both sides have agreed to expose. Nothing about either network’s structure crosses at all.

NETWORK A · 10.0.101.0/24 SEAM HOST NETWORK B · 10.0.9.0/24 Phone10.0.101.7 · mobile app Ground station10.0.101.2 · exported Radio relay10.0.101.5 daemon Amember of A daemon Bmember of B Sensor10.0.9.14 Partner drone10.0.9.2 · exported Operator laptop10.0.9.30 ADVERTS · GOSSIP · KEYS stop here, in both directions local link · loopback only · data, no routing EXPORT A gates both ways EXPORT B gates both ways 1 · ONE DAEMON PER NETWORK each admitted and revoked by its own operator 2 · EXPORT GATES BOTH WAYS only listed hosts send or receive across 3 · NOTHING CHAINS a packet that crossed once never crosses again members of either network install nothing and configure nothing
THE SEAM HOSTruns one daemon in network A and one in network B, joined by a loopback-only link
WHAT STOPS THEREadverts, gossip and keys: neither network learns the other’s structure
WHAT CROSSESpackets between hosts on each side’s export list, never onward to another seam
The seam host

One daemon per network, side by side

Each Atlas daemon owns one tunnel interface, one identity and one address space. The seam host runs two of them: daemon A is an ordinary member of network A, admitted under A’s rules, and daemon B is an ordinary member of network B under B’s. Neither network grants the other anything. Either operator ends the join by revoking the seam host’s membership, exactly as it would revoke any other member.

The local link

A link that only exists inside one host

The two daemons peer over a link of type local, which config load refuses to bind anywhere but loopback. It is an ordinary Atlas link with its usual encryption, so the seam reuses the transport rather than adding a second one; it simply cannot be reached from outside the host.

Export, both ways

Each side lists what takes part

Each daemon carries an export list naming the hosts or prefixes of its own network, always inside its own subnet, that may take part. The list gates both directions: an unexported host can neither be reached from the other side nor send across to it. Each operator writes only its own list, so neither side can widen what the other exposes.

No chaining

Parallel seams, never transit

Nothing is redistributed, and a packet that arrived across one seam is never sent across another, so seams cannot be strung together into a path nobody approved and loops cannot form. Two seam hosts joining the same pair are two parallel seams: every member agrees on one owner of each address the seams serve, and the other takes over within seconds when the first one becomes unreachable.

Members untouched

Two control planes that never meet

Link-state adverts, full topology exchanges and membership gossip are never sent across the seam and are ignored if they arrive; the seam is not even listed as a link. Neither network gains a node of the other in its topology, learns the other’s keys or sees its admission decisions. Members keep the configuration they have.

02 · The two modes

Map a host, or route a prefix.

A seam carries traffic in one of two ways, chosen per entry. Mapped mode makes a host of the other network appear at an address inside your own subnet, so members reach it with what they already have. Prefix mode routes a whole prefix of the other Atlas network through the seam with real addresses and nothing rewritten, so its members are reached at the addresses they already have. One seam can carry both at once.

Mapped mode: the far host appears inside your own subnet

Each host the operator maps is given an address inside this network’s own /24, chosen by this network’s operator. The seam daemon advertises that address as one it serves, so every member reaches it with the subnet route and the shortest-path tree it already has. At the seam the destination is rewritten to the host’s real address on the other side, the source is rewritten to the sender’s mapped address there, and IPv4 and TCP/UDP checksums are repaired in flight. Each side writes only its own map, so nobody renumbers anybody.

NETWORK A · 10.0.101.0/24 SEAM HOST NETWORK B · 10.0.9.0/24 Phone10.0.101.7 · fixed /24 daemon Aserves 10.0.101.202 daemon Bserves 10.0.9.107 Ground station10.0.9.2 · unchanged MAP IN A .202 ⇄ 10.0.9.2 MAP IN B .107 ⇄ 10.0.101.7 1 · THE PHONE SENDS 10.0.101.7 → 10.0.101.202 inside its own subnet: no route to add 2 · THE SEAM REWRITES to 10.0.9.2, from 10.0.9.107 checksums repaired, exports checked 3 · B DELIVERS 10.0.9.107 → 10.0.9.2 an ordinary host in B’s own subnet no route, flag or update on any member · older builds and the mobile app included
THE PHONEsends to 10.0.101.202, an address inside its own fixed /24
THE SEAMrewrites the destination to 10.0.9.2 and the source to 10.0.9.107
NETWORK Bsees an ordinary host in its own subnet; no member changed

Members need nothing

The mapped address is one more address in the member’s own subnet. Phones, whose app has a fixed address space, reach the far side as easily as a laptop does, and so do members running older builds.

Your numbering stays yours

Nothing of the far network’s numbering enters your routing: each host you map takes an address you choose inside your own subnet. The two networks joined at a seam must not share an address space; partners that happen to be numbered alike as each other each join you through their own seam.

Networks run by someone else

The other side does not change its plan for you. It admits the seam host as a member and writes its own export list and map; you write yours. Neither side needs the other’s keys or topology.

Prefix mode: the other network’s members, at their real addresses

Some joins need more than a handful of hosts: a partner’s ground-control network whose ROS 2 bridge node, video node and operator consoles must all be reachable, or a second organisation’s whole network. Prefix mode routes a prefix of the other Atlas network, its members’ tunnel addresses, through the seam with real addresses in both directions and nothing rewritten. The seam daemon carries the prefix as an imported route in its network’s signed link-state adverts, and each member’s daemon installs it on its own tunnel interface ([routing] install_learned_routes, on by default), so the member reaches a far host by the address that host already has. The reply path is the mirror image: the far seam daemon imports this network’s prefix with its own route entry and advertises it in its network. A prefix crosses only when both sides list it, one side’s route and the other side’s export, for each direction.

NETWORK A · 10.0.101.0/24 SEAM HOST NETWORK B · 10.0.9.0/24 signed advert: 10.0.9.0/25 signed advert: 10.0.101.0/24 Operator laptop10.0.101.4 · route on atlas0 daemon Aimports 10.0.9.0/25 daemon Bimports 10.0.101.0/24 ROS 2 bridge10.0.9.10 · Atlas member Video node10.0.9.20 · Atlas member 1 · BOTH SIDES LIST IT A routes 10.0.9.0/25, B exports it and the mirror image for the replies 2 · ADVERTISED, INSTALLED each member’s daemon adds the route on its own tunnel interface, nowhere else 3 · DELIVERED real addresses, both ways nothing rewritten at the seam two seam hosts on one prefix fail over in seconds · routes leave members about two minutes after the last seam host goes
BOTH SIDES LIST ITA routes B’s 10.0.9.0/25 and B exports it; B routes A’s prefix for the replies
ADVERTISED, INSTALLEDeach seam daemon advertises the import; members put the route on their own tunnel interface
DELIVEREDreal addresses both ways, nothing rewritten; far members see the caller’s own address

Real addresses

Far members are reached at the addresses they already have, and they see the real address of the member that called them. Applications that write addresses into their own payloads, such as stream URLs and configured peer lists, keep working without translation.

Learned, not configured

The prefix arrives in the same signed adverts that carry the rest of the network’s routing, and each daemon installs it on its own tunnel interface. Withdraw it at the seam and it leaves every member. A member that already has a route overlapping the prefix keeps its own and logs the skip.

Members, not LANs

What prefix mode routes is the other network’s own members. Atlas has no subnet-router role: a LAN of hosts that do not run Atlas, sitting behind a node, is not routed. The mobile app’s address space is fixed, so phones reach the other network through mapped mode.

Both modes on one seam. A partner’s ground-control network can be routed to your laptops by prefix, while your phones, whose address space is fixed, reach its operator console through a mapped address. Each entry chooses its mode; the export lists, the isolation of the two control planes and the no-chaining rule apply to every entry alike. Two seam hosts serving the same addresses fail over within seconds in either mode.
net-a.toml — one seam, both modes
[peer.interconnect]
export = ["10.0.101.0/24"]         # this network's hosts that take part

[[peer.interconnect.map]]          # mapped mode
remote = "10.0.9.130/32"
local  = "10.0.101.130/32"

[[peer.interconnect.route]]        # prefix mode: the other network's prefix, real addresses
prefix = "10.0.9.0/25"

# on every member: the default
[routing]
install_learned_routes = true
03 · How Tailscale works

One tailnet, one coordination server.

Tailscale builds a single private network, a tailnet, out of devices that run its client. A coordination server distributes public keys, addresses and access policy; the traffic itself flows over WireGuard between the devices. A subnet router extends the tailnet to a LAN of devices that run nothing. The summary below follows Tailscale’s public documentation.

DERP relayfallback · packets stay sealed Coordination serverkeys · addresses · policy to every device · carries no traffic ONE TAILNET · ONE POLICY FILE Laptopruns the client Serverruns the client Phoneruns the client Subnet routeradvertises 192.168.1.0/24 LAN · 192.168.1.0/24 Camera Controller run nothing · reached via the router 1 · ADVERTISE the router announces 192.168.1.0/24 tailscale set --advertise-routes 2 · APPROVE an admin approves it in the console or an autoApprovers rule in the policy 3 · ACCEPT clients install the route Linux opts in with --accept-routes
CONTROLa coordination server hands out keys, addresses and policy; it carries no traffic
DATAWireGuard between devices: direct where NAT allows, else a peer relay or DERP
SUBNET ROUTERadvertises a LAN prefix; an admin approves it; clients install the route
Control plane

A coordination server for keys and policy

Devices register with the coordination server, which shares each device’s public key and address with the others and pushes the access policy to every node. Private keys stay on the devices and policy is enforced on each device, so the server distributes configuration rather than carrying traffic.

Data plane

WireGuard between devices, with relays as fallback

Devices connect to each other over WireGuard. Tailscale traverses NAT with techniques based on STUN and ICE to reach a direct connection, which usually gives the lowest latency and the highest throughput. Where a direct connection fails, typically behind blocked UDP or hard NAT, traffic goes through a peer relay in the same tailnet or through DERP servers, which forward packets that remain encrypted end to end. A connection starts on DERP and is upgraded when a better path is found.

Access policy

One policy file per tailnet

Access rules live in the tailnet policy file, edited in the admin console, through GitOps or through the API, as ACLs or grants. With no policy defined, everything may reach everything; once rules are written they are deny-by-default and directional. MagicDNS gives each device a name.

Subnet routers

A LAN prefix, approved and accepted

A device runs tailscale set --advertise-routes with one or more prefixes. An admin approves them in the console, or an autoApprovers rule approves them automatically. Android, iOS, macOS, tvOS and Windows clients pick up approved routes; Linux clients opt in with --accept-routes. Devices on the LAN need no software. By default the router translates the source address, so LAN devices see traffic coming from the router; keeping the real source is a Linux-only option that needs a return route for the tailnet’s range. Several routers can advertise the same routes for high availability.

Overlaps

4via6 for identical IPv4 ranges

When two sites use the same IPv4 range, a 4via6 subnet router advertises each one under a unique IPv6 prefix built from a site ID, and Tailscale translates back to IPv4 at the router. Clients reach those devices at the IPv6 address or by MagicDNS names such as 10-1-1-16-via-7, and access rules name the IPv6 destination.

Beyond one tailnet

Exit nodes, invited users and shared machines

An exit node, once allowed by an admin, carries the internet traffic of every device that opts in to it. To work with another organisation, a tailnet can invite external users, who then have access like other members, including subnet routes, or share a single machine into another tailnet. A shared machine accepts connections from the other tailnet but does not start them, and it does not advertise its subnets there.

04 · How they differ

One network extended, or two networks joined.

Most rows below follow from one design choice. Tailscale makes one trust domain reach further. Interconnect keeps two trust domains whole and lets a narrow, allow-listed flow pass between them at a host both have admitted.

Tailscale, with a subnet routerAtlas Interconnect
Trust domainsOne tailnet: one coordination server, one policy file, one set of adminsTwo networks, each with its own keys, admission and operator; the seam host is a member of both
Working with another organisationInvite its users into the tailnet, or share single machines that accept connections, do not start them and carry no subnet routesEach side admits the seam host as an ordinary member and writes its own export list; either side ends the join by revoking it
What clients doInstall the approved route; most platforms do so automatically, Linux opts in with --accept-routesMapped mode: nothing, the far host is an address in their own subnet. Prefix mode: the daemon installs the advertised prefix on its own tunnel interface (install_learned_routes, on by default)
Approving a routeAn admin approves each advertised prefix, or an autoApprovers rule doesA prefix crosses only when both sides list it: one side’s route, the other side’s export, for each direction
The far sideA LAN of devices that do not run Tailscale, reached through the subnet routerMembers of another Atlas network. Atlas has no subnet-router role: a LAN of hosts that do not run Atlas is not routed
FailoverSeveral subnet routers can advertise the same routes for high availabilityTwo seam hosts serving the same addresses: the other takes over within seconds, in both modes
PathTailnet devices connect directly where NAT allows, else through a peer relay or DERP; LAN traffic goes through the subnet routerAlways through the seam host; on each side, the traffic takes that network’s own routed paths
Address the far side seesThe subnet router’s, by default; the real tailnet address on Linux with source translation turned off and a return route in placeMapped mode: the sender’s mapped address in the far subnet. Prefix mode: the sender’s real address, nothing rewritten
Identical numbering4via6: each overlapping IPv4 site is reached under its own IPv6 prefix or a -via- nameNot supported: the two networks must not share an address space, in either mode. Mapped mode imports none of the far numbering into your routing, and partners numbered alike as each other each join you through their own seam
BearersWireGuard over the IP path the device has; each connection is direct, peer-relayed or through DERPAtlas links on both sides: cellular, satellite, serial and mesh radios, hosted relays, scored and scheduled per packet, bonded where there are several
Encryption at the boundaryWireGuard between tailnet devices; the subnet router decrypts and forwards onto the LAN as plain IPEncrypted on every link on both sides; payloads sealed end to end are opened at the seam and re-sealed for the far side
Who learns whatEvery device and approved route of the tailnet is listed in its admin consoleNeither network learns the other’s topology, members or keys; each sees only the addresses the other exports

Tailscale rows follow Tailscale’s public documentation on subnet routers, 4via6, sharing, exit nodes, connection types and access control. Where a specific deployment differs, bring it to the conversation.

05 · Strengths and costs

What each design gives, and what it asks.

Both are sound designs for the problem each sets out to solve. The lists below are written for the same reader: someone choosing how to let one group of machines reach another.

Tailscale

Strengths
  • Devices connect directly to each other where the network allows, with relays when it does not, and no inbound ports to open.
  • Clients for every major desktop and mobile platform, sign-in through the identity provider you already use, and a coordination service you do not have to run.
  • Access policy as code in one file, managed in the console, through GitOps or through the API, and enforced on each device.
  • Subnet routers bring in LAN devices that cannot run any software, with several routers for high availability. Interconnect has no equivalent.
  • MagicDNS names, exit nodes, sharing of single machines, and 4via6 for sites that use identical IPv4 ranges.
Costs
  • Two organisations either work inside one tailnet under one set of admins, or share single machines that cannot start connections and carry no subnet routes.
  • Each subnet route is approved, and Linux clients must opt in before they use it.
  • Identical IPv4 ranges are reached through IPv6 site prefixes or -via- names rather than ordinary IPv4 addresses.
  • By default LAN devices see the router’s address, not the caller’s.
  • Each connection takes one of three paths at a time, direct, peer relay or DERP, over the IP connectivity the device already has.

Atlas Interconnect

Strengths
  • Two networks stay two: separate keys, admission and operators, and no topology, keys or gossip crossing.
  • Mapped mode needs nothing on any member, including phones with a fixed address space and members on older builds.
  • Prefix mode routes a whole prefix of the other network with real addresses both ways, learned through the signed adverts rather than configured per device.
  • Export lists on both sides gate both directions; nothing chains, so no seam becomes transit for a third network.
  • Two seam hosts serving the same addresses fail over within seconds, in both modes.
  • Traffic rides Atlas links on each side: bonded radios, cellular, satellite and relays, with per-packet scheduling.
Costs
  • Every packet between the networks passes through a seam host; there is no direct path from a member of one to a member of the other.
  • The seam host is trusted by both sides: end-to-end sealed payloads are opened there and re-sealed.
  • Mapped mode needs one map entry per far host, and a host has a different address on each side.
  • The two networks must not share an address space, in either mode.
  • No subnet-router role: a LAN of hosts that do not run Atlas is not routed; every host reached is a member of one of the two networks.
  • The tunnel carries IPv4.
06 · Why two modes

Where two modes beat one subnet router.

A subnet router answers one question well, and it is one Interconnect does not answer: how do the devices of one tailnet reach a LAN that cannot run the client. The cases Atlas is built for ask different questions, and the two modes together answer them without asking any member, or any partner, to change.

Fleets with phones and radios

A team’s phones, a relay on a mast and a drone on a serial radio cannot all be asked to accept new routes before a mission. Mapped mode makes the partner’s console one more address in their own subnet; prefix mode brings a partner’s whole ground-control network to the laptops whose daemons learn it from the adverts. Neither waits on a route approval or a client setting, and the traffic keeps riding the bonded links it already uses.

Two organisations, no shared control plane

An agency and a contractor rarely agree to one set of admins over both their devices. With a seam, each keeps its own network, keys and admission. Each admits one host and writes one export list, and either side ends the join by revoking a single member.

Numbering you do not control

Partners that use the same ranges as each other are routine in coalition and multi-vendor work. Mapped mode places each far host at an address chosen inside your own subnet, so nothing of a partner’s numbering enters your routing, and partners numbered alike as each other each join you through their own seam. The one rule: the two networks joined at a seam must not share an address space.

Allow-listed exposure

A partner should see the ground station and the video encoder, not the fleet. Export lists on both sides name exactly what takes part, gate both directions, and stop at the seam: nothing is redistributed, nothing chains, and neither network learns the other’s shape.

Where Tailscale is the better answer. Laptops, servers and cloud hosts of one organisation over ordinary internet, with direct device-to-device connections, sign-in through an existing identity provider and a coordination service someone else runs: that is the problem a tailnet solves, and it solves it well. It is also the answer for a LAN of devices that cannot run any software, which a subnet router reaches and Interconnect does not route, and for sites that use identical ranges, which 4via6 handles and a seam does not join. Interconnect is for the case where the networks belong to different owners, the members cannot be touched, and the links underneath are radios as often as fibre. The wider comparison is on How Atlas compares.
Request an evaluation

Two networks that must talk, and neither will merge?

Tell us who runs each side, how each is numbered and what has to cross. The answer is a seam placement, a mode per flow and an export list for each side.