Change a destination
This page lets you prepare, verify, and validate a replacement IP and UDP port for an existing destination.
Before you start
- Have dashboard access to the existing paid destination.
- Control the proposed new public IP and UDP port.
- Know how many address changes the destination has used during the current dashboard day.
- Have change authority for the old and new receiver networks.
Know what counts as a change
The destination record holds two fields, an IP address plus a UDP port. Editing either one counts as an address change. The replacement pair must prove customer control through a fresh challenge.
Each destination permits ${ADDRESS_CHANGES_PER_DAY} address changes per day. No published rule covers its time zone, reset boundary, remaining-change display, or treatment of a no-op save. Preserve the allowance by saving only prepared pairs, and treat the dashboard result as authoritative.
The paid slot remains one destination. A change does not create documented parallel fanout to the old and new pairs.
Prepare the new path before saving
Build and test the customer-controlled path first. Every challenge and stream datagram comes from ${SOURCE_IP}. Add that source to the new firewall path before requesting verification.
- Allocate a public IP together with the new UDP port.
- Bind the new receiver to its local UDP port.
- Add a static UDP mapping when NAT is present.
- Allow
${SOURCE_IP}/32at the new edge firewall. - Allow
${SOURCE_IP}/32at the new host firewall. - At the replacement receiver, start a capture restricted to ${SOURCE_IP}.
- Record the old destination pair and state.
Use a local test packet only to confirm the receiver binding and internal path. It cannot replace the provider challenge because proof requires receiving the service datagram from ${SOURCE_IP} at the configured public pair.
Save and verify the new pair
- Select the existing destination through the dashboard.
- Replace its IP field with the new public address.
- Replace its port field with the new UDP value.
- Save these edits as the next pair.
- Issue its verification challenge.
- On the replacement receiver, read the arriving token.
- Fill the dashboard proof field with this value.
- Submit before ${CHALLENGE_TTL_SECONDS} seconds pass.
- Leave the replacement receiver open.
At the front of the challenge is SHREDCAST-VERIFY. Its destination ID appears next, followed by the token. No exact delimiter is published. One request sends one datagram. If loss or expiry occurs, request fresh proof.
Do not paste a token captured on the old receiver or from an earlier request. The new challenge proves control of the changed pair.
Confirm new delivery
Replace 9000 with the new destination port and run on the new host:
bash
sudo tcpdump -n -i any -c 20 'src host 203.23.178.228 and udp dst port 9000'Confirm that the application counter advances over the same interval. A capture proves that the host sees packets, while the application counter proves that the socket path accepts them.
The exact activation delay after re-verification is not currently specified. Record UTC times for token acceptance, first captured stream packet, and first application packet instead of assuming a threshold.
Retire the old customer path
Remove old firewall and NAT entries only after confirming the new path. Retire the former receiver under your own change policy. These customer-side actions neither create nor delete a provider destination.
The contract defines no parallel delivery, no free rollback to the prior pair, and no transactional cutover. Unless the dashboard states otherwise, returning to the former pair is another counted address edit requiring proof.
Keep the old configuration record with UTC timestamps long enough to investigate a cutover incident under your own retention policy. A required record-retention period is not currently specified.
Handle NAT port changes
The public destination port and internal receiver port can differ under NAT. Changing only the internal mapping while leaving the registered public pair unchanged is a customer network change, not necessarily a dashboard address change. It still can interrupt delivery.
When the public port changes, update the dashboard and complete verification. When only the internal port changes, update the NAT rule and host firewall together, then confirm capture and application counts. Whether the dashboard treats any specific edit as a counted change is authoritative in the interface.
Avoid consuming the change cap
Do not use destination edits to test whether a port is open. Bind the socket, inspect firewall policy, and validate internal routing before saving the new pair. Use one planned dashboard change for one prepared migration.
Do not alternate between old and new addresses while diagnosing. Each save can require another challenge and can consume the daily allowance. Preserve the last verified working pair when further changes are blocked.
If the dashboard reports the daily cap, wait until it permits another change. An override, increased limit, exact reset time, and support exception are not currently specified.
Plan a production migration
Choose a change window that permits observation of both network edges. Assign one operator to the dashboard and one to receiver telemetry when staffing allows. Record destination ID, old pair, new pair, requested challenge time, accepted token time, first packet time, and counter deltas.
This operating method is a customer recommendation. No maintenance-window scheduler, migration API, webhook, or status callback appears in the product definition.
Account for raw UDP behavior during the cutover. There is no ordering, retransmission, or backpressure. Packets sent to a closed or blocked path cannot be requested again from the transport.
Diagnose a failed change
If no challenge reaches tcpdump, verify that the saved public pair is correct and every new layer allows ${SOURCE_IP}. When only tcpdump records the challenge, inspect the bind address, local firewall, and network namespace.
If the dashboard rejects the token, request a fresh challenge and submit its current token within ${CHALLENGE_TTL_SECONDS} seconds. If verification succeeds but the stream is absent, compare the dashboard pair with the capture filter and receiver binding.
Parameters
When it goes wrong
The dashboard refuses another edit. Example error: `daily address change limit reached`.
Cause. The destination used its 3 allowed changes for the day.
Fix. Keep the last verified pair operating and wait until the dashboard permits another change.
No challenge reaches the new host. Example error: `0 packets captured`.
Cause. The new public route, NAT mapping, or firewall does not deliver UDP from 203.23.178.228.
Fix. Compare the saved pair with the new path, correct every layer, and request a resend.
The new token is rejected. Example error: `challenge expired`.
Cause. The 600 second window ended or the token came from a prior request.
Fix. Keep the new receiver ready, request another challenge, and submit that packet's token promptly.
New traffic reaches tcpdump but not the receiver. Example error: `receiver idle: 0 datagrams`.
Cause. The new process is bound to the wrong local address, port, or namespace.
Fix. Inspect the socket with ss and align the local bind and translated port with the new path.
Questions
- How many destination changes can I make?
- You may edit each destination address ${ADDRESS_CHANGES_PER_DAY} times per day. Either an IP edit or a UDP-port edit triggers another challenge. The contract defines neither the daily reset nor an exception process. Before saving, ready the socket and build its NAT and firewall paths, so one planned migration consumes one edit.
- Can the old and new destinations receive in parallel?
- The contract makes no promise to serve both addresses during an edit. The pair saved in the dashboard is the intended target. If policy allows, keep the former customer path available for observation, but confirm replacement traffic before removing old rules. Never assume both pairs receive identical datagrams.
- Does an internal NAT change require dashboard verification?
- A change that leaves the registered public IP and port unchanged is a customer network change, but it can still interrupt delivery. Update the NAT rule and host firewall together, then confirm packet and application counters. A public IP or public port change modifies the destination and requires a new challenge.