Skip to content

Commit

Permalink
Merge pull request #2 from darkrain42/configure-resolv-conf
Browse files Browse the repository at this point in the history
Create /etc/resolv.conf in initramfs for tailscale client
  • Loading branch information
darkrain42 authored May 4, 2023
2 parents 166df1d + 6945048 commit f475be8
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 2 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- uses: actions/checkout@v3

- name: ShellCheck
uses: ludeeus/action-shellcheck@1.1.0
uses: ludeeus/action-shellcheck@2.0.0
env:
SHELLCHECK_OPTS: -e SC1091

Expand Down
12 changes: 12 additions & 0 deletions config/config
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,18 @@ TAILSCALE_AUTHKEY=
#
#TAILSCALE_LOGOUT=

#
# Space-delimited list of DNS server(s) to put in /etc/resolv.conf in the
# initramfs if /etc/resolv.conf doesn't exist and if no DNS servers were
# returned from DHCP.
#
# Tailscale will eventually fall back to bootstrapping DNS itself, but there's
# no reason to rely on that (adds a slight delay). Tailscale's fallback is
# also problematic in some corner cases in some versions (see
# https://github.com/tailscale/tailscale/issues/6110).
#
#FALLBACK_DNS_SERVERS=

#
# Bring down interfaces matching this pattern before passing out of the
# initramfs. (Same behavior as dropbear-initramfs)
Expand Down
7 changes: 7 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
tailscale-initramfs (0.3) unstable; urgency=medium

* Configure resolv.conf in initramfs if it isn't already, so the tailscale
client can reach the control server more reliably.

-- Paul Aurich <paul@darkrain42.org> Wed, 03 May 2023 19:52:49 -0700

tailscale-initramfs (0.2) unstable; urgency=medium

* Keep trying to bring up the network until it either comes up or the boot
Expand Down
33 changes: 32 additions & 1 deletion scripts/init-premount/tailscale
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,39 @@ network_up()
{
for conf in /run/net-*.conf /run/net6-*.conf; do
if [ -e "$conf" ]; then
# shellcheck disable=SC1090
. "$conf"
return 0
fi
done
return 1
}

# shellcheck disable=SC3043
create_resolv_conf()
{
if [ -e /etc/resolv.conf ]; then
return
fi

local ns
for ns in "${IPV4DNS0:-}" "${IPV4DNS1:-}" "${IPV6DNS0:-}" "${IPV6DNS1:-}"; do
if [ -n "$ns" ] && [ "$ns" != "0.0.0.0" ]; then
echo "nameserver $ns" >> /etc/resolv.conf
fi
done

if [ -e /etc/resolv.conf ]; then
return
fi

for ns in ${FALLBACK_DNS_SERVERS:-}; do
if [ -n "$ns" ]; then
echo "nameserver $ns" >> /etc/resolv.conf
fi
done
}

# shellcheck disable=SC2039,SC2086,SC3043
run_tailscale()
{
Expand All @@ -62,7 +89,11 @@ run_tailscale()
# in a subshell and wait for it.
configure_networking &
wait $!
if ! [ -e "$PIDFILE" ] || network_up; then
if ! [ -e "$PIDFILE" ]; then
break
fi
if network_up; then
create_resolv_conf
break
fi
done
Expand Down

0 comments on commit f475be8

Please sign in to comment.