The Network

Every player is a host on a shared network — identity, discovery, firewalls, and the infrastructure that ties it all together

guidesLast updated 2026-02-25

The Network

Welcome to the CLI-Games network. When you log in, you're provisioned a permanent IP address and choose your hostname. You'll also get access to networking commands that help you build your social graph. There is no "friend" button — you open your firewall and decide what to share. All registered players are reachable hosts on 10.10.0.0/16 and you interact through your terminal.

Guests are provisioned a temporary IP on the 192.168.0.0/24 subnet, scoped to a single browser tab. Until you authenticate, you can use a limited set of network commands — ifconfig, ip, ping, whois, and traceroute — and play non-rated games. For everything else, you'll need an account.

This page covers the foundation: who you are on the network, how you find others, and how you control who can reach you. Everything else — communication, friends, challenges, crews — builds on top of this.

Your Machine

When you sign up, you're assigned a permanent network identity. This is how the network fabric ensures players can find each other and verify one another's identity.

  • Your IP address (10.10.x.y), hostname, and MAC address
  • ifconfig and ip addr to inspect your interfaces
  • Network config lives where you'd expect it: /etc/hostname, /etc/hosts, /etc/resolv.conf
  • /etc/motd — the message visitors see when they SSH into your machine
  • Your home directory with .bashrc, .profile, aliases, and a customizable PS1
  • A web server you can customize with HTML and open for all to see on port 80

Firewall & Privacy

The first thing you'll want to get straight is your security posture. By default, your firewall is permissive — you're discoverable and reachable on all ports. If you don't want strangers messaging you or dropping into live chat, lock those ports down:

  • ufw deny from any to any port 25
  • ufw deny from any to any port 517

Here are some more examples. For a full list, run man ufw:

  • ufw status — See your current rules and default policy
  • ufw allow/deny from <player> [to any port <n>] — Control access per-player and per-port
  • ufw default deny incoming — Go dark. Block everything unless explicitly allowed
  • ufw enable/disable/reset — Master switch and factory reset

Shorthand Commands

Some social commands are packaged firewall operations. The dual-write goes both ways — ufw allow creates a friendship, and accepting a friend request creates an allow rule:

| Command | Equivalent UFW Operation | |---------|--------------------------| | friend accept alice | ufw allow from alice | | friend block alice | ufw deny from alice | | friend remove alice | ufw delete allow from alice | | incognito on | ufw default deny incoming | | incognito off | ufw default allow incoming |

Note that friend add only sends a request — no firewall rule is created until the other player accepts. The ufw allow command skips the request and opens access immediately (and creates the friendship as a side effect).

Port Mapping

Each port maps to a social feature. Blocking a port disables that interaction for anyone not explicitly allowed:

| Port | Service | What It Controls | |------|---------|-----------------| | 8 | ICMP | Online status visibility (ping) | | 22 | SSH | Terminal visits to your home directory | | 25 | SMTP | Direct messages | | 80 | HTTP | Your homepage (curl player:80) | | 443 | HTTPS | Game challenges | | 517 | Talk | Live 1:1 chat | | 5900 | VNC | Remote viewing | | 6667 | IRC | Chat room participation | | 8080 | Alt-HTTP | Trading |

Omitting the port from a rule applies it to all services. netstat -tlnp or ss -tlnp will show what you're exposing. Firewall rules are enforced server-side — there's no way to bypass them from the client.

Incognito & Multiplayer

incognito on sets your default firewall policy to deny, which makes you invisible to pings, scans, and directory listings. But what happens when you join a live game or event with strangers?

Your IP is still your IP — it doesn't change and it won't be faked. During a live session, opponents can see you in the game. However, your username displays as anonymous on leaderboards, activity feeds, and event results. If an opponent grabs your IP and tries to ping or ssh it after the match, they'll get nothing back — the firewall is still up. The address is real, but it's a dead end.

Existing friends bypass incognito. If someone already has a ufw allow rule for you, they can still reach you normally.

Directory Permissions

Consider your home directory's permissions. Out of the box, the following directories are set to 700 (owner-only):

  • inbox/
  • archive/
  • sandbox/

This matters because when someone SSHs into your terminal, they can poke around your filesystem. Be careful who you let in, and make sure your permissions are what you want them to be.

Customization

Control what others see when they interact with your machine.

MOTD Banner

The MOTD is a plain text file at /etc/motd. Write whatever you want to it. When someone SSHs into your machine, they'll see it first thing.

  • cat /etc/motd — see the default banner
  • echo "Welcome to my machine." > /etc/motd — replace it
  • cat /etc/motd — see that it changed

Web Server

Edit ~/public/index.html to customize your homepage. curl localhost:80 to see it render. If you miss when the internet was nothing but plain HTML tags, this is for you.

Guest Book

This one doesn't come pre-configured, but you can create a world-writable file on your home directory, allowing anyone who visits to leave a note. Back it up to your archive often. Try:

  • echo "Welcome! Please sign the guestbook." > guestbook.txt
  • chmod 777 guestbook.txt

Discovery

How you find other players on the network:

  • ping <player|ip> — Check if a host is online. Respects firewall rules on port 8.
  • nmap <target|cidr> — Port scan a host or sweep a subnet. Supports -sV for service versions and -p for specific ports. CIDR scans return up to 256 results. Players with default deny appear as "Host seems down." Every scan leaves a footprint in the target's /var/log/auth.log.
  • arp -a — Your recent contacts cache. Successful pings and scans update it.
  • dig, nslookup, host — DNS resolution between hostnames and IPs. Reverse lookups work too.
  • whois <player> — Registration info: username, IP, signup date, founder number, crew tag, game ratings.
  • who / w — See who's currently online, their status, and what they're doing.

See Also

  • IRC — Chat rooms, tiers, and reputation
  • Crews — Guilds and crew leaderboards