Commit Graph

165 Commits

Author SHA1 Message Date
a05f027765 dns: fallback only once, i.e. prefer the working server next time 2019-02-19 08:49:40 +01:00
ccaf6ad452 dns: fallback to next upstream upon failure 2019-02-19 08:38:52 +01:00
abeddabbb7 dhcp4d: restrict lease details page to internal IPs 2019-02-19 07:50:39 +01:00
cbff6a2541 internal/dhcp6: fix build after DHCP library API change (#23) 2019-01-28 22:06:10 +01:00
ea50066bad dhcpv6: use new TransactionID type (#21) 2019-01-27 11:47:19 +01:00
a3799c4ec5 dhcp6: use changed type name. (#19) 2019-01-15 08:02:56 +01:00
13926217d9 oui_test: fix data race when overriding ouiURL 2019-01-06 18:07:59 +01:00
6320b6c3a7 dhcp4d: display MAC vendor of each lease’s HardwareAddr 2019-01-06 18:02:01 +01:00
8df6329209 use renameio to write files atomically 2019-01-06 15:25:33 +01:00
f67d4ec93f radvd: load extra prefixes from /perm/radvd/prefixes.json 2019-01-06 15:12:22 +01:00
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
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
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
0d2e89cebf dhcp4d_test: fix message to match comparison 2019-01-01 10:44:03 +01:00
b923f145a5 dhcp4d: don’t incorrectly _offer_ reused addresses
Turns out a5d9e03dd3 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
ddcdd39737 dhcp4: drop last ack to restart with DISCOVER upon receiving NAK
fixes #13
2018-12-25 14:10:21 +01:00
725262d376 netconfig: use sysctl format for easier copy&paste 2018-12-25 14:08:14 +01:00
9012520052 diag: more informative error messages 2018-12-15 13:36:21 +01:00
5eaba2aa4d travis: switch to go 1.11 2018-12-15 12:49:34 +01:00
a5d9e03dd3 dhcp4d: don’t incorrectly hand out reused addresses
fixes #18
2018-12-15 12:44:09 +01:00
badee1eef8 netconfig_test: skip test if WireGuard is unavailable 2018-11-26 18:43:04 +01:00
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
b6a5227d49 netconfig_test: better diffs, refactor for clarity/brevity 2018-11-26 08:46:59 +01:00
127bdc466e netconfig_test: use ip -netns instead of ip netns exec ip 2018-11-26 08:32:38 +01:00
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
df9a40557c dhcp4: correctly check errors from c.once 2018-11-21 08:41:24 +01:00
bef7168112 dhcp4: resolve TODOs in comments 2018-11-21 08:41:07 +01:00
5b34daeb4e no-op cleanup: switch to dhcp4.LeaseFromACK 2018-11-21 08:23:57 +01:00
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
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
fac1bf231e netconfigd: notify dhcp4d to update its listeners 2018-10-29 18:14:01 +01:00
7d278289f0 captured: directly call NextPacket() to prevent hanging reads
Using Packets() spawns off a separate goroutine which calls NextPacket in a loop
until io.EOF is returned. This goroutine will stick around after Close()
returned, resulting in only the first wireshark connection working.
2018-10-23 09:56:07 +02:00
d9f5d95812 dhcp4d: export number of non-expired DHCP leases 2018-10-23 08:49:29 +02:00
4288adec69 dns: don’t let clients override the hostname
fixes #11
2018-10-22 21:43:41 +02:00
0bbc1d923d refactor replayer code into pcapreplayer package 2018-10-22 21:04:35 +02:00
e01a38ff78 commit debug statements 2018-10-22 18:58:40 +02:00
817fdc81f8 README: recommend to install all rtr7 tools 2018-10-22 18:58:40 +02:00
2e8e0daa0a implement TCP MSS clamping (for non-ethernet uplinks)
We didn’t have a need to clamp the TCP Maximum Segment Size (MSS) up until now,
because fiber7 uses an MTU of 1500.

Because Path MTU discovery is often broken on the internet, it’s best practice
to limit the Maximum Segment Size (MSS) of each TCP connection, achieving the
same effect (but only for TCP connections).

This change is beneficial when running router7 behind a non-ethernet uplink,
such as a Fritz!Box cable modem.

This has no adverse effect on fiber7: after clamping, the MSS is still 1440, as
without clamping.
2018-10-22 18:54:25 +02:00
c037bf9c5f dhcp4d: fix panic when receiving unsupported requests 2018-10-22 18:39:25 +02:00
cfbf52db6e dhcp6: update after changes in insomniacslk/dhcp (#10) 2018-10-16 08:03:45 +02:00
81894ba0b3 dhcp6: simplify PD obtention (#9) 2018-10-11 14:29:22 +02:00
672134080f README: reference prometheus config + dashboard 2018-10-10 16:52:42 +02:00
b725100d9c add prometheus configuration examples 2018-10-10 16:49:45 +02:00
f606e70250 dhcp4d: respect broadcast bit
Mac’s Internet Recovery DHCP client requires broadcast responses and will ignore
unicast responses outright.
2018-10-07 17:36:00 +02:00
f7638dfeaa netconfig_test: test updating port forwardings after installation
This uncovered an nftables issue:
695079ebff
2018-10-03 18:24:54 +02:00
ea4ffa7bec OpenEthernet → NewEthernetHandle, remove kludge 2018-09-07 00:50:41 +02:00
aa404c3c54 Request nameserver, router and netmask as it might not be automatically returned by dhcp server. (#7) 2018-09-05 10:06:31 -06:00
447f1779e2 dhcp6: update for breaking upstream changes
see https://github.com/insomniacslk/dhcp/pull/81
2018-09-05 08:39:35 +02:00
4c4032d469 README: add radvd as consumer of dhcp6 lease file 2018-08-20 22:59:22 +02:00
14f1636bc0 travis: upgrade to xenial (Ubuntu 16.04)
Perhaps this will use a newer kernel with support for nftables stateful objects?
2018-08-10 09:37:25 +02:00