Lennart Poettering [Mon, 16 Nov 2020 22:26:37 +0000 (23:26 +0100)]
resolved: let's track fragment sizes of servers/retry on fragmenting
Fragmenting sucks, let's avoid it. Thus let's start tracking the maximum
fragment size we receive.
Also, let's redo a transaction via TCP if we see fragmenting on UDP, as
effective mitigation against DNS fragment attacks.
Lennart Poettering [Mon, 16 Nov 2020 22:27:21 +0000 (23:27 +0100)]
resolved: tweak how we calculate MTU for sending packets
Let's take all MTU info we possibly have into account, i.e. the one
reported via netlink, as before and the one the socket might now (from
PMTUD and such), clamped by our own ideas.
Lennart Poettering [Mon, 16 Nov 2020 20:00:24 +0000 (21:00 +0100)]
resolved: add udp_header_size() helper
Lennart Poettering [Mon, 16 Nov 2020 13:05:52 +0000 (14:05 +0100)]
resolved: collect incoming fragment size when receiving UDP datagrams
We can later use this to adapt our announced EDNS buffer size in order
to avoid fragmentation to make the best of large datagrams while still
avoiding he security weaknesses of it.
Lennart Poettering [Mon, 16 Nov 2020 13:02:52 +0000 (14:02 +0100)]
resolved: disable path MTU discovery for UDP traffic
This disables path MTU discovery both for our UDP upstream connections
and our UDP stub, following the suggestions of:
https://blog.apnic.net/2019/07/12/its-time-to-consider-avoiding-ip-fragmentation-in-the-dns/
This more or less follows the model of other DNS servers on this.
Дамјан Георгиевски [Thu, 18 Feb 2021 14:08:48 +0000 (15:08 +0100)]
man: Rename duplicate Credentials section name
A "Credentials" section name in systemd.exec man page was used
both for User/Group and for actual credentials support in systemd.
Rename the first instance to "User/Group Identity"
Lennart Poettering [Mon, 16 Nov 2020 20:06:56 +0000 (21:06 +0100)]
networkd-test: reenable dnssec while testing
We need to list the synthesized domains as NTAs, otherwise the DNSSEC
validation of course cannot succeed.
Fixes: #10487 #5029
Zbigniew Jędrzejewski-Szmek [Thu, 18 Feb 2021 13:16:15 +0000 (14:16 +0100)]
Merge pull request #18557 from poettering/enum-force-s64
force public enums to be 64bit wide
Susant Sahani [Thu, 18 Feb 2021 08:55:13 +0000 (09:55 +0100)]
network: Add "route_localnet" sysctl support
Zbigniew Jędrzejewski-Szmek [Thu, 18 Feb 2021 11:55:10 +0000 (12:55 +0100)]
Merge pull request #18665 from poettering/resolved-fastopen
resolved: use TCP FASTOPEN on the local DNS stub
Luca Boccassi [Thu, 18 Feb 2021 10:43:08 +0000 (10:43 +0000)]
Merge pull request #18625 from bluca/sysext_refactor
dissect: parse and store extension-release metadata
Richard Laager [Thu, 18 Feb 2021 07:11:53 +0000 (01:11 -0600)]
Remove outdated disable_ipv6 docs
This was changed in commit
482efedc081b0c4bf2e77a3dee6b979d9c9a5765,
which was released in v243, to only enable and never disable IPv6.
Signed-off-by: Richard Laager <rlaager@wiktel.com>
Lennart Poettering [Wed, 17 Feb 2021 22:40:04 +0000 (23:40 +0100)]
Merge pull request #18596 from keszybz/systemctl-quiet-legend
systemctl: hide legends with --quiet, allow overriding
Lennart Poettering [Wed, 17 Feb 2021 22:15:50 +0000 (23:15 +0100)]
Merge pull request #18651 from poettering/einval-followup
two follow-up fixes for the enum einvalification
Susant Sahani [Wed, 17 Feb 2021 18:09:25 +0000 (19:09 +0100)]
network: DHCP option- use correct byteorder
Lennart Poettering [Wed, 17 Feb 2021 22:14:12 +0000 (23:14 +0100)]
Merge pull request #18656 from yuwata/network-nexthop-tiny-cleanups
network: nexthop: tiny cleanups
Lennart Poettering [Wed, 17 Feb 2021 18:10:17 +0000 (19:10 +0100)]
hwdb: fix indentation
a bunch of entries use 2ch instead of 1ch indentation. Fix that.
Lennart Poettering [Wed, 17 Feb 2021 22:13:27 +0000 (23:13 +0100)]
Merge pull request #18662 from yuwata/in-addr-is-set
in-addr-util: introduce in_addr_is_set() or friends
Zbigniew Jędrzejewski-Szmek [Wed, 17 Feb 2021 18:46:19 +0000 (19:46 +0100)]
sysctl: downgrade warning about excluded keys
Our own config generates logs like this:
systemd-sysctl[1280]: Not setting net/ipv4/conf/all/rp_filter (explicit setting exists).
systemd-sysctl[1280]: Not setting net/ipv4/conf/default/rp_filter (explicit setting exists).
systemd-sysctl[1280]: Not setting net/ipv4/conf/all/accept_source_route (explicit setting exists).
systemd-sysctl[1280]: Not setting net/ipv4/conf/default/accept_source_route (explicit setting exists).
systemd-sysctl[1280]: Not setting net/ipv4/conf/all/promote_secondaries (explicit setting exists).
systemd-sysctl[1280]: Not setting net/ipv4/conf/default/promote_secondaries (explicit setting exists).
There is no error and nothing really to see.
Luca Boccassi [Tue, 19 Jan 2021 17:11:55 +0000 (17:11 +0000)]
env-util: refactor parsing helper for SYSTEMD_SYSEXT_HIERARCHIES out of sysext
Luca Boccassi [Fri, 12 Feb 2021 15:30:10 +0000 (15:30 +0000)]
os-util: allow missing VERSION_ID on the host
Rolling releases, like ArchLinux, do not set VERSION_ID in
their os-release files, so allow matching simply on ID if the host
does not provide anything.
Luca Boccassi [Wed, 27 Jan 2021 12:54:15 +0000 (12:54 +0000)]
os-util: split extension_release_validate out of sysext
Luca Boccassi [Wed, 27 Jan 2021 12:59:45 +0000 (12:59 +0000)]
machine: parse and store extension-release
Follow the same pattern as os-release parsing, and store the key-value
pairs in a strv if found
Luca Boccassi [Wed, 27 Jan 2021 13:03:37 +0000 (13:03 +0000)]
dissect: parse, store and show extension-release info
Luca Boccassi [Wed, 27 Jan 2021 12:57:27 +0000 (12:57 +0000)]
dissect: store image name, following usual parsing rules
The name of '/foo/bar/baz.raw' name is 'baz'
Luca Boccassi [Wed, 27 Jan 2021 12:51:17 +0000 (12:51 +0000)]
env-util: add strv_env_pairs_get helper
Luca Boccassi [Wed, 27 Jan 2021 12:53:13 +0000 (12:53 +0000)]
os-util: add load_extension_release_pairs helper
Luca Boccassi [Wed, 27 Jan 2021 12:52:10 +0000 (12:52 +0000)]
os-util: add path_is_extension_tree helper
Lennart Poettering [Tue, 17 Nov 2020 10:42:43 +0000 (11:42 +0100)]
resolved: also use TCP tweaks on LLMNR (plus unify setsockopt() code)
Lennart Poettering [Tue, 17 Nov 2020 10:19:24 +0000 (11:19 +0100)]
resolved: enable TCP_FASTOPEN + TCP_NODELAY on stub TCP socket
Latency matters. Four our local DNS stub it's not really that important,
but let's still do it, it's basically free after all.
Zbigniew Jędrzejewski-Szmek [Mon, 15 Feb 2021 19:16:33 +0000 (20:16 +0100)]
shell-completion: complete --legend=no for resolvectl and systemctl
I don't think it makes sense to complete --legend=yes. It is the default, and
it would be only used very rarely (and then it is easy enough to just remove
the '=no' part from the suggested string).
Zbigniew Jędrzejewski-Szmek [Mon, 15 Feb 2021 09:56:28 +0000 (10:56 +0100)]
systemctl: hide legends with --quiet, allow overriding
--no-legend is replaced by --legend=no.
--quiet now implies --legend=no, but --legend=yes may be used to override that.
--quiet controls hints and warnings and such, and --legend controls just the
legends. I think it makes sense to allow both to controlled independently, in
particular --quiet --legend makes sense when using systemctl in a script to
provide some user-visible output.
Fixes #18560.
Zbigniew Jędrzejewski-Szmek [Mon, 15 Feb 2021 18:48:09 +0000 (19:48 +0100)]
journal-remote: inline one more iterator variable declaration
Zbigniew Jędrzejewski-Szmek [Mon, 15 Feb 2021 18:47:41 +0000 (19:47 +0100)]
journal-remote: convert to parse_boolean_argument() and fix type confusion
We were passing a reference to 'int arg_seal' to config_parse_bool(),
which expects a 'bool *'. Luckily, this would work, because 'bool'
is smaller than 'int', so config_parse_bool() would set the least-significant
byte of arg_seal. At least I think so. But let's use consistent types ;)
Also, modernize style a bit and don't use integers in boolean context.
Zbigniew Jędrzejewski-Szmek [Mon, 15 Feb 2021 18:41:39 +0000 (19:41 +0100)]
tree-wide: use parse_boolean_argument() for variables with non-boolean type
This still works nicely, but we need to assign the return value ourselves.
As before, one nice effect is that error messages are uniform.
Zbigniew Jędrzejewski-Szmek [Mon, 15 Feb 2021 18:32:42 +0000 (19:32 +0100)]
tree-wide: add a helper to parse boolean optarg
This nicely covers the case when optarg is optional. The same parser can be
used when the option string passed to getopt_long() requires a parameter and
when it doesn't.
The error messages are made consistent.
Also fixes a log error c&p in --crash-reboot message.
Yu Watanabe [Fri, 5 Feb 2021 02:51:21 +0000 (11:51 +0900)]
network: NHA_ID should be always set
Yu Watanabe [Fri, 5 Feb 2021 01:07:34 +0000 (10:07 +0900)]
network: constify arguments
Yu Watanabe [Fri, 5 Feb 2021 00:44:49 +0000 (09:44 +0900)]
network: introduce log_nexthop_debug()
Lennart Poettering [Wed, 17 Feb 2021 18:50:58 +0000 (19:50 +0100)]
Merge pull request #18640 from poettering/resolved-dnssec-retry-harder
resolved: two dnssec retry/downgrade tweaks
Yu Watanabe [Wed, 17 Feb 2021 18:33:39 +0000 (03:33 +0900)]
tree-wide: constify variables if possible
Yu Watanabe [Wed, 17 Feb 2021 18:27:35 +0000 (03:27 +0900)]
network: use temporary buffer for safety
Yu Watanabe [Wed, 17 Feb 2021 18:22:28 +0000 (03:22 +0900)]
network: use in_addr_prefix_to_string()
Yu Watanabe [Wed, 17 Feb 2021 17:51:09 +0000 (02:51 +0900)]
resolve: use sockaddr_in_addr()
Yu Watanabe [Wed, 17 Feb 2021 17:50:50 +0000 (02:50 +0900)]
resolve: make manager_find_ifindex() or friends return earlier
Yu Watanabe [Wed, 17 Feb 2021 16:29:43 +0000 (01:29 +0900)]
tree-wide: use in_addr_is_set() or friends
Yu Watanabe [Wed, 17 Feb 2021 17:23:42 +0000 (02:23 +0900)]
network: assign values after all checks are passed
Yu Watanabe [Wed, 17 Feb 2021 17:17:08 +0000 (02:17 +0900)]
in-addr-util: introduce in6_addr_equal()
Yu Watanabe [Wed, 17 Feb 2021 16:56:47 +0000 (01:56 +0900)]
in-addr-util: introduce in6_addr_is_link_local()
Yu Watanabe [Wed, 17 Feb 2021 15:36:38 +0000 (00:36 +0900)]
in-addr-util: introduce in_addr_is_set() or friends
Yu Watanabe [Sun, 14 Feb 2021 18:29:55 +0000 (03:29 +0900)]
network: enumerate nexthops before routes
Preparation for the later commits.
Routes may have RTA_NH_ID attribute. To resolve the nexthop ID, all
nexthops must be enumerated earlier.
Yu Watanabe [Fri, 5 Feb 2021 01:21:19 +0000 (10:21 +0900)]
network: nexthop: first create nexthops with ID
Otherwise, an ID-less nexthop may conflict with a later nexthop with ID.
Lennart Poettering [Wed, 17 Feb 2021 09:47:30 +0000 (10:47 +0100)]
portable: make PortableChangeType enum anonymous
Same reasons as previous commit.
Lennart Poettering [Wed, 17 Feb 2021 09:38:12 +0000 (10:38 +0100)]
install: make UnitFileChangeType enum anonymous
We almost never use the named enum type, in almost all cases we use
"int" instead, since we overload it with negative errnos. To simplify
things, let's use "int" really everywhere.
Moreover, let's rename the fields for this enum to "type_or_errno", to
make the overloading clear. And let's ad some assertions that things are
in the right range.
Lennart Poettering [Thu, 12 Nov 2020 17:10:18 +0000 (18:10 +0100)]
resolved: see if it's worth retrying a lookup on "failed-auxiliary" DNSSEC error
Maybe we learnt something about the server feature set, let's hence
retry.
Fixes: #11102
Lennart Poettering [Thu, 12 Nov 2020 16:33:08 +0000 (17:33 +0100)]
resolved: in DNSSEC permissive mode, check if DO bit wasn't copied from request to response
If the server doesn't copy the DO bit from request to response, this is
a very early and easy indication that it doesn#t support DNSSEC
properly. Hence, let's immediately downgrade to non-DNSSEC mode if we
see this – if permissive mode is on and this is allowed.
Luca Boccassi [Tue, 16 Feb 2021 23:47:34 +0000 (23:47 +0000)]
test: avoid leaking open loop devices
When a subshell is used ('make' or 'make all') the LOOPDEV environment
variable, which is used to store the opened loop device, is lost.
So the cleanup on trap/exit doesn't do anything, and the loop
device used to mount the test image is left around.
Avoid using a subshell to fix the issue.
Lennart Poettering [Wed, 17 Feb 2021 17:52:24 +0000 (18:52 +0100)]
Merge pull request #18653 from yuwata/in-addr-prefix-nth
in-addr-util: fix in_addr_prefix_nth() and use the function to get ip address range in firewall-util
Lennart Poettering [Thu, 12 Nov 2020 16:05:36 +0000 (17:05 +0100)]
resolved: address DVE-2018-0001
This is an updated version of #8608 with more restrictive logic. To
quite the original bug:
Some captive portals, lie and do not respond with the captive portal
IP address, if the query is with EDNS0 enabled and D0 bit set to
zero. Thus retry "secure" domain name look ups with less secure
methods, upon NXDOMAIN.
https://github.com/dns-violations/dns-violations/blob/master/2018/DVE-2018-0001.md
Yes, this fix sucks hard, but I guess this is what we need to do to make
sure resolved works IRL.
Heavily based on the original patch from Dimitri John Ledkov, and I
copied the commentary verbatim.
Replaces: #8608
Frantisek Sumsal [Wed, 17 Feb 2021 08:56:59 +0000 (09:56 +0100)]
ci: enable DNS over TLS using OpenSSL in the build test
Prompted by:
* https://github.com/systemd/systemd/pull/18641#issuecomment-
780371055
* https://github.com/systemd/systemd/issues/18639
Zbigniew Jędrzejewski-Szmek [Wed, 17 Feb 2021 14:02:50 +0000 (15:02 +0100)]
Merge pull request #18632 from yuwata/network-nexthop-add-family
network: introduce Family= setting in [NextHop] section
Yu Watanabe [Wed, 17 Feb 2021 13:57:10 +0000 (22:57 +0900)]
firewall-util: replace nft_in6addr_to_range() with in_addr_prefix_range()
Yu Watanabe [Wed, 17 Feb 2021 13:55:01 +0000 (22:55 +0900)]
in-addr-util: introduce in_addr_prefix_range()
This will replace nft_in6addr_to_range() in later commit.
Yu Watanabe [Wed, 17 Feb 2021 11:01:26 +0000 (20:01 +0900)]
in-addr-util: make in_addr_prefix_nth() always return valid prefix
Previously, e.g. in_addr_prefix_nth(2400::1, prefixlen=32, nth=1)
does not return 2400:1:: but does 2400:1::1.
Yu Watanabe [Wed, 17 Feb 2021 10:06:36 +0000 (19:06 +0900)]
in-addr-util: make in_addr_prefix_nth() refuse prefixlen larger than maximum size
Yu Watanabe [Wed, 17 Feb 2021 08:32:54 +0000 (17:32 +0900)]
in-addr-util: make in_addr_prefix_nth() returns 0 on success
Yu Watanabe [Thu, 4 Feb 2021 15:49:49 +0000 (00:49 +0900)]
network: refuse IPv4 multipath route for IPv6 route
Yu Watanabe [Tue, 9 Feb 2021 09:35:45 +0000 (18:35 +0900)]
network: Route::gw_family may be AF_UNSPEC
Vito Caputo [Tue, 27 Oct 2020 06:24:34 +0000 (23:24 -0700)]
logs-show: move show_journal_by_unit _BOOT_ID match
In scrutinizing the journal overhead of `systemctl status $service`
it became apparent that the matching engine was performing the unit
matches on every journal in my system, even ones containing nothing
relevant to the current boot.
This seemed strange and likely suboptimal to me, since there's likely
far more unit data to rifle through than boot IDs in any given
journal. The _BOOT_ID match seemed like it should be serving as an
early exit match on irrelevant journals, but that wasn't what seemed
to be happening.
As a quick experiment to see if I could get the _BOOT_ID match to be
something along the lines of a higher priority when matching, and try
early exit on these unrelated journals, I moved add_match_this_boot()
to after the unit match adds, inserting a conjunction between them.
The end result seems to be a very substantial performance gain in my
simple uncached tests, and I still get the expected journal output
from the `systemctl status $service` command:
----------------------------------------------------------------------
Unmodified systemctl times:
root@localhost:/# echo 2 > /proc/sys/vm/drop_caches
root@localhost:/# time systemctl --no-pager status dbus
● dbus.service - D-Bus System Message Bus
Loaded: loaded (/lib/systemd/system/dbus.service; static; vendor preset: enabled)
Active: active (running) since Sun 2020-10-25 17:03:05 PDT; 1 day 6h ago
Docs: man:dbus-daemon(1)
Main PID: 572 (dbus-daemon)
Memory: 2.8M
CPU: 110ms
CGroup: /system.slice/dbus.service
└─572 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
Oct 25 17:03:05 localhost systemd[1]: Started D-Bus System Message Bus.
Oct 25 17:06:26 localhost dbus[572]: [system] Activating via systemd: service name='org.freedesktop.machine1' unit='dbus-org.freedesktop.machine1.service'
Oct 25 17:06:26 localhost dbus[572]: [system] Successfully activated service 'org.freedesktop.machine1'
real 0m0.695s
user 0m0.005s
sys 0m0.043s
root@localhost:/# echo 2 > /proc/sys/vm/drop_caches
root@localhost:/# time systemctl --no-pager status dbus
● dbus.service - D-Bus System Message Bus
Loaded: loaded (/lib/systemd/system/dbus.service; static; vendor preset: enabled)
Active: active (running) since Sun 2020-10-25 17:03:05 PDT; 1 day 6h ago
Docs: man:dbus-daemon(1)
Main PID: 572 (dbus-daemon)
Memory: 2.8M
CPU: 110ms
CGroup: /system.slice/dbus.service
└─572 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
Oct 25 17:03:05 localhost systemd[1]: Started D-Bus System Message Bus.
Oct 25 17:06:26 localhost dbus[572]: [system] Activating via systemd: service name='org.freedesktop.machine1' unit='dbus-org.freedesktop.machine1.service'
Oct 25 17:06:26 localhost dbus[572]: [system] Successfully activated service 'org.freedesktop.machine1'
real 0m0.696s
user 0m0.003s
sys 0m0.046s
root@localhost:/# echo 2 > /proc/sys/vm/drop_caches
root@localhost:/# time systemctl --no-pager status dbus
● dbus.service - D-Bus System Message Bus
Loaded: loaded (/lib/systemd/system/dbus.service; static; vendor preset: enabled)
Active: active (running) since Sun 2020-10-25 17:03:05 PDT; 1 day 6h ago
Docs: man:dbus-daemon(1)
Main PID: 572 (dbus-daemon)
Memory: 2.8M
CPU: 110ms
CGroup: /system.slice/dbus.service
└─572 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
Oct 25 17:03:05 localhost systemd[1]: Started D-Bus System Message Bus.
Oct 25 17:06:26 localhost dbus[572]: [system] Activating via systemd: service name='org.freedesktop.machine1' unit='dbus-org.freedesktop.machine1.service'
Oct 25 17:06:26 localhost dbus[572]: [system] Successfully activated service 'org.freedesktop.machine1'
real 0m0.694s
user 0m0.006s
sys 0m0.041s
----------------------------------------------------------------------
Modified systemctl including this commit:
root@localhost:/home/vc/gh/systemd/build# echo 2 > /proc/sys/vm/drop_caches
root@localhost:/home/vc/gh/systemd/build# time ./systemctl --no-pager status dbus
● dbus.service - D-Bus System Message Bus
Loaded: loaded (/lib/systemd/system/dbus.service; static)
Active: active (running) since Sun 2020-10-25 17:03:05 PDT; 1 day 6h ago
TriggeredBy: ● dbus.socket
Docs: man:dbus-daemon(1)
Main PID: 572 (dbus-daemon)
Memory: 2.8M
CPU: 110ms
CGroup: /system.slice/dbus.service
└─572 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
Oct 25 17:03:05 localhost systemd[1]: Started D-Bus System Message Bus.
Oct 25 17:06:26 localhost dbus[572]: [system] Activating via systemd: service name='org.freedesktop.machine1' unit='dbus-org.freedesktop.machine1.service'
Oct 25 17:06:26 localhost dbus[572]: [system] Successfully activated service 'org.freedesktop.machine1'
real 0m0.168s
user 0m0.003s
sys 0m0.016s
root@localhost:/home/vc/gh/systemd/build# echo 2 > /proc/sys/vm/drop_caches
root@localhost:/home/vc/gh/systemd/build# time ./systemctl --no-pager status dbus
● dbus.service - D-Bus System Message Bus
Loaded: loaded (/lib/systemd/system/dbus.service; static)
Active: active (running) since Sun 2020-10-25 17:03:05 PDT; 1 day 6h ago
TriggeredBy: ● dbus.socket
Docs: man:dbus-daemon(1)
Main PID: 572 (dbus-daemon)
Memory: 2.8M
CPU: 110ms
CGroup: /system.slice/dbus.service
└─572 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
Oct 25 17:03:05 localhost systemd[1]: Started D-Bus System Message Bus.
Oct 25 17:06:26 localhost dbus[572]: [system] Activating via systemd: service name='org.freedesktop.machine1' unit='dbus-org.freedesktop.machine1.service'
Oct 25 17:06:26 localhost dbus[572]: [system] Successfully activated service 'org.freedesktop.machine1'
real 0m0.167s
user 0m0.005s
sys 0m0.013s
root@localhost:/home/vc/gh/systemd/build# echo 2 > /proc/sys/vm/drop_caches
root@localhost:/home/vc/gh/systemd/build# time ./systemctl --no-pager status dbus
● dbus.service - D-Bus System Message Bus
Loaded: loaded (/lib/systemd/system/dbus.service; static)
Active: active (running) since Sun 2020-10-25 17:03:05 PDT; 1 day 6h ago
TriggeredBy: ● dbus.socket
Docs: man:dbus-daemon(1)
Main PID: 572 (dbus-daemon)
Memory: 2.8M
CPU: 110ms
CGroup: /system.slice/dbus.service
└─572 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
Oct 25 17:03:05 localhost systemd[1]: Started D-Bus System Message Bus.
Oct 25 17:06:26 localhost dbus[572]: [system] Activating via systemd: service name='org.freedesktop.machine1' unit='dbus-org.freedesktop.machine1.service'
Oct 25 17:06:26 localhost dbus[572]: [system] Successfully activated service 'org.freedesktop.machine1'
real 0m0.170s
user 0m0.005s
sys 0m0.014s
Lennart Poettering [Thu, 12 Nov 2020 19:47:35 +0000 (20:47 +0100)]
resolved: include NSID support to DNS stub
This adds minimal support for RFC5001 NSID to the stub resolver. This
useful to identify systemd-resolved when talking to the stub resolver,
and distuingishing the packets resolved answers itself (where NSID is
now set) from those which it proxies 1:1 upstream (where NSID will not
be set, or set to whatever the upstream server has it set to).
The NSID chosen consist of two parts:
1. The first part is derived from /etc/machine-id and identifies the
resolved instance in a stable way.
2. The second part is the fixed string ".resolved.systemd.io".
This thus maybe used for a veriety of checks:
a. Am I talking to a resolved stub?
b. Am I talking to the same stub as last time?
c. Am I talking to the local resolved?
Given that the first part leaks the identity of the system in away two
protections are in place:
I) The NSID is only included on the main stub, not the extra stub. The
main stub has with a TTL of 1 and other protections a lot of safety
in place that the datagrams never leave the local system, thus the
identifying info is only accessible to the local system — but
/etc/machine-id is accessible to local software anyway.
II) The NSID is hashed from /etc/machine-id in a non-invertable way, so
that the machine ID itself isn't leaked, but only an identifier
derived from it.
Example dig run:
```
$ dig +nsid localhost @127.0.0.53
; <<>> DiG 9.11.23-RedHat-9.11.23-1.fc33 <<>> +nsid localhost @127.0.0.53
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46917
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
; NSID: 35 33 64 34 61 34 66 63 32 31 32 65 34 31 61 30 39 66 30 39 65 33 32 34 63 64 64 38 30 36 32 33 2e 72 65 73 6f 6c 76 65 64 2e 73 79 73 74 65 6d 64 2e 69 6f ("
53d4a4fc212e41a09f09e324cdd80623.resolved.systemd.io")
;; QUESTION SECTION:
;localhost. IN A
;; ANSWER SECTION:
localhost. 0 IN A 127.0.0.1
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Do Nov 12 20:57:16 CET 2020
;; MSG SIZE rcvd: 110
```
Hans de Goede [Tue, 16 Feb 2021 20:24:40 +0000 (21:24 +0100)]
hwdb: Add accel orientation quirk for the Trekstor Surftab Wintron 10.1 ST10432-3 tablet
Add a quirk to fix the accelerometer orientation on the
Trekstor Surftab Wintron 10.1 ST10432-3 tablet.
Zbigniew Jędrzejewski-Szmek [Wed, 17 Feb 2021 07:46:09 +0000 (08:46 +0100)]
Merge pull request #18641 from benjarobin/fix-enum-invalid-val
Various follow-up: Fix build and EINVAL for _INVALID enum value
Yu Watanabe [Wed, 3 Feb 2021 08:19:04 +0000 (17:19 +0900)]
test-network: add tests for Family= in [NextHop]
Yu Watanabe [Tue, 9 Feb 2021 06:42:51 +0000 (15:42 +0900)]
man: update explanations of settings in [NextHop] section
Yu Watanabe [Thu, 4 Feb 2021 14:22:27 +0000 (23:22 +0900)]
network: nexthop: refuse 0 id
We usually do not accept values which will be handled as unspecified.
Instead, this makes config_parse_nexthop_id() accept an empty string.
Yu Watanabe [Wed, 3 Feb 2021 07:59:26 +0000 (16:59 +0900)]
network: nexthop: introduce Family= setting in [NextHop] section
This is an alias of `Gateway=0.0.0.0` or `Gateway=::`.
Yu Watanabe [Wed, 3 Feb 2021 08:07:24 +0000 (17:07 +0900)]
network: allow to configure nexthop with null address
Closes #18446.
Yu Watanabe [Wed, 3 Feb 2021 07:58:29 +0000 (16:58 +0900)]
network: nexthop: unset gateway when an empty string is assigned
Giedrius Statkevičius [Wed, 11 Nov 2020 20:45:58 +0000 (22:45 +0200)]
condition: add CPUFeature
Taking a stab at implementing #14479.
Add {Condition,Assert}CPUFeature to `systemd-analyze` & friends. Implement it
by executing the CPUID instruction. Add tables for common x86/i386
features.
Tested via unit tests + checked that commands such as:
```bash
systemd-analyze condition 'AssertCPUFeature = rdrand'
```
Succeed as expected and that commands such as
```bash
systemd-analyze condition 'AssertCPUFeature = foobar'
```
Fail as expected. Finally, I have amended the `systemd.unit` manual page
with the new condition and the list of all currently supported flags.
Benjamin Robin [Tue, 16 Feb 2021 22:57:29 +0000 (23:57 +0100)]
resolve: Fix build for cleanup function (SSL_free + BIO_free)
Follow-up of #18616
Lennart Poettering [Tue, 16 Feb 2021 22:41:35 +0000 (23:41 +0100)]
Merge pull request #18007 from fw-strlen/ipv6_masq_and_dnat
Support ipv6 for masquerade and dnat in nspawn and networkd
Benjamin Robin [Tue, 16 Feb 2021 22:24:11 +0000 (23:24 +0100)]
shared: use -EINVAL for _NETDEV_BRIDGE_STATE_INVALID
Follow-up of #11484
Benjamin Robin [Tue, 16 Feb 2021 22:23:41 +0000 (23:23 +0100)]
portable: use -EINVAL for _PORTABLE_CHANGE_TYPE_INVALID
Follow-up of #11484
Benjamin Robin [Tue, 16 Feb 2021 22:23:13 +0000 (23:23 +0100)]
libsystemd-network: use -EINVAL for _DUID_TYPE_INVALID
Follow-up of #11484
Benjamin Robin [Tue, 16 Feb 2021 22:22:37 +0000 (23:22 +0100)]
basic: use -EINVAL for _DUID_TYPE_INVALID
Follow-up of #11484 and of #18481
Benjamin Robin [Tue, 16 Feb 2021 22:22:00 +0000 (23:22 +0100)]
shared: Fix _DNS_CACHE_MODE_INVALID value: use -EINVAL
Follow-up of #11484
Benjamin Robin [Tue, 16 Feb 2021 22:21:07 +0000 (23:21 +0100)]
shared: use -EINVAL for _UNIT_FILE_CHANGE_TYPE_INVALID
Follow-up of #11484
Benjamin Robin [Tue, 16 Feb 2021 22:19:37 +0000 (23:19 +0100)]
shared: use -EINVAL for _EXEC_COMMAND_FLAGS_INVALID
Follow-up of #11484
Benjamin Robin [Tue, 16 Feb 2021 22:18:28 +0000 (23:18 +0100)]
basic: use -EINVAL for _MANAGED_OOM_PREFERENCE_INVALID
Follow-up of #11484
Vito Caputo [Sun, 29 Nov 2020 00:28:08 +0000 (16:28 -0800)]
journal-file: fix archiving offline journals
The existing set_offline() short-circuit erroneously included
when f->archive was true and header->state was STATE_OFFLINE.
This commit makes the short-circuit f->archive aware, so it will
only catch scenarios where there's not an offlining in progress
and the header state matches the target state of either archived
or offline.
Fixes https://github.com/systemd/systemd/issues/17770
Lennart Poettering [Tue, 16 Feb 2021 21:36:48 +0000 (22:36 +0100)]
Merge pull request #18601 from keszybz/env-assign-cleanup
Envvar assignment cleanup
Yu Watanabe [Sun, 14 Feb 2021 17:49:55 +0000 (02:49 +0900)]
netlink: introduce sd_netlink_message_has_flag()
Lennart Poettering [Tue, 16 Feb 2021 21:36:06 +0000 (22:36 +0100)]
Merge pull request #18631 from yuwata/sd-netlink-fix-assertions
sd-netlink: update assertions and drop unused functions
Zbigniew Jędrzejewski-Szmek [Tue, 16 Feb 2021 16:40:56 +0000 (17:40 +0100)]
systemd: don't try to run as user manager when called without any arguments
It's better for users if programs don't do "significant" things too easily, and
should be especially conservative when called without any arguments whatsoever.
So far systemd would would try to launch itself as a user manager and fail on
some cgroup permission stuff. systemd --user is run execlusively from user@.service
and there we call it with --user. Calls to the binary without any arguments as
non-pid1 are almost always a mistake.
https://github.com/systemd/systemd/issues/18419#issuecomment-
779422571
Lennart Poettering [Tue, 16 Feb 2021 16:15:16 +0000 (17:15 +0100)]
man: make clear that sd-journal notifications always come with extra latency
Replaces: #17699
Lennart Poettering [Thu, 11 Feb 2021 15:04:08 +0000 (16:04 +0100)]
network: make use of SD_ENUM_FORCE_S64() for all public enums
Lennart Poettering [Thu, 11 Feb 2021 15:02:59 +0000 (16:02 +0100)]
sd-common: add new macro for forcing 64bit size for public enums
That's the only way we can retain type-safe enums while being able to
guarantee for stable enum sizes.
Lennart Poettering [Thu, 11 Feb 2021 15:02:26 +0000 (16:02 +0100)]
test-tables: make sure we can test tables of either int or int64_t base type
To support both types, we unfortunately need to go down the macro rabbit
hole a bit more. But it works.
Lennart Poettering [Tue, 16 Feb 2021 19:27:09 +0000 (20:27 +0100)]
Merge pull request #18636 from poettering/resolved-different-server
resolved: tweaks for switching to different DNS servers
Lennart Poettering [Tue, 16 Feb 2021 19:26:06 +0000 (20:26 +0100)]
Merge pull request #18620 from bluca/mount_images_fixes
MountImages and core tmpfs fixes