mobile-shell / mobile-shell/mosh

Support roaming between NAT64 and native IPv4 networks

Open
#1,214 1 comment 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature
Dominant language
C++
Stars
14.5k
Forks
865
PR merge metrics
No merged PRs in 30d

Description

I've recently noticed that some wifi deployments are now NAT64 with with DNS64, meaning they have no native IPv4 connectivity, and the NAT64 gateway provides the IPv6 to IPv4 translation.

In particular, when roaming between a native IPv4 network to a NAT64 IPv6 network, mosh never is able to reconnect to an IPv4 server, presumably because all of the sendmsg calls get EHOSTUNREACH (No route to host). Similarly, if the mosh session is started on such a network then roamed to a native IPv4 network, the same applies.

Mosh should detect such networks and automatically switch between the native IPv4 address and the NAT64 address. RFC 7050 specifies how to detect such networks: a DNS AAAA query for ipv4only.arpa , which normally points to 192.0.0.170 and 192.0.0.171, lets you discover the NAT64 prefix.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the reconnect path around the sendmsg calls that fail with EHOSTUNREACH during roaming. Read RFC 7050 and examine how the session currently discovers and selects the server address. Done means a session can switch between the native IPv4 address and the NAT64-derived address when roaming in either direction.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
networking
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.