44 lines
2.5 KiB
Markdown
44 lines
2.5 KiB
Markdown
# dhcpcd
|
|
|
|
The uplink seat's module for a machine whose own network is dhcpcd's (novox/hq ADR 0117). It
|
|
asks two things of dhcpcd, and nothing else: leave the resolver file to the mesh, and leave the
|
|
private network's interface alone. It never declares an interface, an address, a route, a
|
|
wireless network or its credentials — the link dhcpcd keeps is the only channel the mesh reaches
|
|
the machine over.
|
|
|
|
## What it writes
|
|
|
|
Two lines into `/etc/dhcpcd.conf`, as the mesh's marked region (`into: block`) — dhcpcd reads no
|
|
drop-in directory, so the mesh writes into its one file rather than over it (ADR 0102):
|
|
|
|
- `nohook resolv.conf` — dhcpcd's resolv.conf hook rewrites `/etc/resolv.conf` on every lease it
|
|
takes or renews, which would silently replace the resolver `resolv-conf` names.
|
|
- `denyinterfaces mesh0` — dhcpcd never asks for a lease on the private network's interface, and
|
|
never takes it down. dhcpcd leaves a point-to-point interface alone by default; this says so
|
|
rather than relying on it.
|
|
|
|
**At the start of the file** (`at: start`). Both are global options, and dhcpcd reads every line
|
|
after an `interface` or `ssid` line as that interface's own. A configured machine's file ends in
|
|
exactly such a block (the interface, its static address), so appended at the end these two would
|
|
quietly apply to one interface only.
|
|
|
|
## Why it declares no service
|
|
|
|
dhcpcd is the machine's, not the mesh's. The mesh never starts, stops or enables it: stopping it
|
|
drops the address the machine is reached at, and a module unassigned by mistake must not be able
|
|
to do that. And there is nothing to reload it with — `dhcpcd.service` reports `CanReload=no`, and
|
|
a restart drops the lease. So the two lines take effect at **dhcpcd's next start**.
|
|
|
|
On an adopted machine that is normally no gap: the predecessor wrote the same `nohook` line, and
|
|
it is already in force. **On a machine that was not adopted, it is one:** until dhcpcd next
|
|
starts (a reboot, or the operator restarting it in a window of their choosing), a lease renewal
|
|
still rewrites `/etc/resolv.conf`, and `resolv-conf` puts it back at the next push. Assign this
|
|
module before `resolv-conf` on such a machine, and restart dhcpcd once, by hand, when losing the
|
|
link for a moment is acceptable.
|
|
|
|
## One manager per machine
|
|
|
|
It claims `the-uplink`: a machine runs one network manager, and assigning a second module that
|
|
claims the seat is refused. Assigning this one to a machine whose network is NetworkManager's
|
|
installs the package and writes the two lines, and starts nothing.
|