235 Commits

Author SHA1 Message Date
Michael Stapelberg
414a7c025b use nft’s --numeric flag for stable output across 0.9.0 and 0.9.1
nftables 0.9.1 started printing e.g. “priority 0” as “priority filter”.
2019-07-11 08:39:08 +02:00
Michael Stapelberg
554d7fa8bf netconfig_test: fix goldens after nftables change
The nftables package started honoring the rule position (insert vs. append), and
it turns out our goldens have been wrong all along. Now the configured order
matches the golden order.
2019-07-11 08:28:33 +02:00
Michael Stapelberg
fa91770b09 integration/dns: 8.8.8.8’s RDNS changed to dns.google. 2019-07-01 08:55:10 +02:00
Michael Stapelberg
373c83196d dhcp4: make interface and state directory configurable
This is useful for manual testing on separate interfaces.
2019-06-06 07:52:08 +02:00
Michael Stapelberg
54843950dd dhcp6: allow overriding hardwareaddr in test
This fixes the breakage introduced by commit
8166b9a9db
2019-04-29 19:16:19 +02:00
Michael Stapelberg
02741e8d28 travis: remove debugging statements 2019-04-29 19:09:08 +02:00
Michael Stapelberg
4a1d06f5f8 travis: list links/addresses for debugging 2019-04-29 19:02:39 +02:00
Michael Stapelberg
ea8efe1978 log hardwareAddr for debugging travis 2019-04-29 19:02:39 +02:00
Michael Stapelberg
0f9027bcfe
Merge pull request #30 from insomniacslk/fix_build_constant_moved
Fix build after insomniacslk/dhcp constant moved
2019-04-29 18:49:26 +02:00
Michael Stapelberg
82b41d1cc3 travis: switch to go vet 2019-04-29 18:42:29 +02:00
Michael Stapelberg
844f528ed8 travis: enable IPv6 before running tests 2019-04-29 18:42:15 +02:00
Andrea Barberio
4b3cbd556f Fix build after insomniacslk/dhcp constant moved
The AllDHCPRelayAgentsAndServers constant has moved from client6 to
dhcpv6 in insomniacslk/dhcp . This PR fixes the build after
https://github.com/insomniacslk/dhcp/pull/278

Signed-off-by: Andrea Barberio <insomniac@slackware.it>
2019-04-29 15:43:30 +01:00
Michael Stapelberg
1a65f972c6 dhcp6: only call net.InterfaceByName when client is constructed 2019-04-16 08:36:06 +02:00
Andrea Barberio
26075c4957 dhcp6: use NewSolicit instead of removed NewSolicitForInterface
In https://github.com/insomniacslk/dhcp/pull/256 NewSolicitForInterface
was removed in favour of NewSolicit. This PR fixes the build failure due
to that change.
2019-04-10 09:54:16 +02:00
Michael Stapelberg
3765287e97 dhcp4: use SetReadDeadline, not SetDeadline
fixes https://github.com/rtr7/router7/issues/25

related to https://github.com/mdlayher/raw/issues/42
2019-03-21 09:18:32 +01:00
Christopher Koch
33348e1f0d dhcp6: use updated DHCPv6 stuff 2019-03-13 20:31:36 +01:00
Michael Stapelberg
7b1fcc9017 travis: use go1.12
https://github.com/mdlayher/raw/pull/40 requires go1.12
2019-03-03 16:36:25 +01:00
Michael Stapelberg
8906854211 fix compilation after https://github.com/mdlayher/netlink/pull/127 2019-03-03 16:09:20 +01:00
Michael Stapelberg
3dad1e9a23 dhcp4: use the configured (not the current) MAC address
This fixes a race where dhcp4 started before netconfigd had a chance to change
the hardware address on the uplink0 interface.

fiber7’s port security feature may result in an about hour-long internet outage
without this commit.
2019-02-19 09:39:16 +01:00
Michael Stapelberg
66942bd4f7 dns: steer traffic toward the most response upstream
There is not much of a difference between IPv4 and IPv6 on my fiber7 link, but
in other networks, there might well be.

For my connection, this commit results in hitting different upstreams all the
time because the list isn’t stable. But, this is the opposite of a problem: we
are spreading the DNS query load over all configured IPs, as good netizen do.
2019-02-19 09:37:38 +01:00
Michael Stapelberg
a05f027765 dns: fallback only once, i.e. prefer the working server next time 2019-02-19 08:49:40 +01:00
Michael Stapelberg
ccaf6ad452 dns: fallback to next upstream upon failure 2019-02-19 08:38:52 +01:00
Michael Stapelberg
abeddabbb7 dhcp4d: restrict lease details page to internal IPs 2019-02-19 07:50:39 +01:00
insomniac
cbff6a2541 internal/dhcp6: fix build after DHCP library API change (#23) 2019-01-28 22:06:10 +01:00
Chris K
ea50066bad dhcpv6: use new TransactionID type (#21) 2019-01-27 11:47:19 +01:00
Chris K
a3799c4ec5 dhcp6: use changed type name. (#19) 2019-01-15 08:02:56 +01:00
Michael Stapelberg
13926217d9 oui_test: fix data race when overriding ouiURL 2019-01-06 18:07:59 +01:00
Michael Stapelberg
6320b6c3a7 dhcp4d: display MAC vendor of each lease’s HardwareAddr 2019-01-06 18:02:01 +01:00
Michael Stapelberg
8df6329209 use renameio to write files atomically 2019-01-06 15:25:33 +01:00
Michael Stapelberg
f67d4ec93f radvd: load extra prefixes from /perm/radvd/prefixes.json 2019-01-06 15:12:22 +01:00
Michael Stapelberg
bd8fc63b0e dns: implement per-DHCP-lease dyndns
The HTTP API is easy to use from the command line or from Go:

% curl --data "host=sub&ip=192.168.33.44" -4 http://router7:8053/dyndns
ok
% host sub.$(hostname)
sub.midna has address 192.168.33.44

This can be used in combination with https://github.com/gokrazy/gdns
2019-01-06 14:41:26 +01:00
Michael Stapelberg
92d995bf79 dns: return empty reply for non-A queries for DNS hostnames
instead of NXDOMAIN, which is incorrect
2019-01-01 17:21:50 +01:00
Michael Stapelberg
c7be96ac2e dhcp4d: fix IP address comparison
AFAICT, this wasn’t actually a bug: canLease performs the correct check.
2019-01-01 10:45:03 +01:00
Michael Stapelberg
0d2e89cebf dhcp4d_test: fix message to match comparison 2019-01-01 10:44:03 +01:00
Michael Stapelberg
b923f145a5 dhcp4d: don’t incorrectly _offer_ reused addresses
Turns out a5d9e03dd3212f7f0c11dd856b308a16a58a3cdf was not entirely sufficient:
even though reused addresses would not be handed out anymore, they would still
be offered, which results in the client not being able to obtain an address.
2019-01-01 10:41:29 +01:00
Michael Stapelberg
ddcdd39737 dhcp4: drop last ack to restart with DISCOVER upon receiving NAK
fixes #13
2018-12-25 14:10:21 +01:00
Michael Stapelberg
725262d376 netconfig: use sysctl format for easier copy&paste 2018-12-25 14:08:14 +01:00
Michael Stapelberg
9012520052 diag: more informative error messages 2018-12-15 13:36:21 +01:00
Michael Stapelberg
5eaba2aa4d travis: switch to go 1.11 2018-12-15 12:49:34 +01:00
Michael Stapelberg
a5d9e03dd3 dhcp4d: don’t incorrectly hand out reused addresses
fixes #18
2018-12-15 12:44:09 +01:00
Michael Stapelberg
badee1eef8 netconfig_test: skip test if WireGuard is unavailable 2018-11-26 18:43:04 +01:00
Michael Stapelberg
ec4f1f4dc5 netconfig: implement WireGuard support
To set up a tunnel, create a /perm/wireguard.json as illustrated in
netconfig_test.go, and don’t forget to adjust your /perm/interfaces.json with
the address configuration for the WireGuard tunnel.

Note that static routes cannot currently be configured, so the usefulness is
limited. If you have a use-case you’d like to see covered, please explain it in
https://github.com/rtr7/router7/issues/14
2018-11-26 18:29:03 +01:00
Michael Stapelberg
b6a5227d49 netconfig_test: better diffs, refactor for clarity/brevity 2018-11-26 08:46:59 +01:00
Michael Stapelberg
127bdc466e netconfig_test: use ip -netns instead of ip netns exec ip 2018-11-26 08:32:38 +01:00
Michael Stapelberg
ac883da6a5 dns_test: xps → testtarget
This fixes running the tests on xps, where the entry derived from os.Hostname
would clash with the xps entries the testcase tries to install.
2018-11-22 17:03:51 +01:00
Michael Stapelberg
df9a40557c dhcp4: correctly check errors from c.once 2018-11-21 08:41:24 +01:00
Michael Stapelberg
bef7168112 dhcp4: resolve TODOs in comments 2018-11-21 08:41:07 +01:00
Michael Stapelberg
5b34daeb4e no-op cleanup: switch to dhcp4.LeaseFromACK 2018-11-21 08:23:57 +01:00
Michael Stapelberg
8c55c5ba44 dhcp4: switch to github.com/rtr7/dhcp4
All existing DHCPv4 packages I looked at were unappealing for one reason or
another, so we’re now using a little helper to glue github.com/google/gopacket
and github.com/mdlayher/raw together, which suffices for our use-case and gives
us more control.
2018-11-21 08:18:58 +01:00
Michael Stapelberg
30e9a6677b integration/dhcpv4: print unified line-wise diff
This is much more readable than the go-cmp Diff() output when dealing with
[]string lines.
2018-11-18 14:29:30 +01:00