mirror of https://github.com/k3d-io/k3d
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.4 KiB
35 lines
1.4 KiB
3 years ago
|
#!/bin/sh
|
||
|
|
||
|
# DISCLAIMER
|
||
|
# Heavily inspired by / copied from https://github.com/kubernetes-sigs/kind/pull/1414/files#diff-3c55751d83af635109cece495ee2ff38206764a8b95f4cb8f11fc08a5c0ea8dc
|
||
|
# Apache 2.0 License (Kubernetes Authors): https://github.com/kubernetes-sigs/kind/blob/9222508298c50ce8c5ba1f364f37307e81ba915e/LICENSE
|
||
|
|
||
|
set -o errexit
|
||
|
set -o nounset
|
||
|
|
||
|
docker_dns="127.0.0.11"
|
||
|
|
||
|
gateway="GATEWAY_IP" # replaced within k3d Go code
|
||
|
|
||
|
echo "[$(date -Iseconds)] [DNS Fix] Use the detected Gateway IP $gateway instead of Docker's embedded DNS ($docker_dns)"
|
||
|
|
||
|
# Change iptables rules added by Docker to route traffic to out Gateway IP instead of Docker's embedded DNS
|
||
|
echo "[$(date -Iseconds)] [DNS Fix] > Changing iptables rules ..."
|
||
|
iptables-save \
|
||
|
| sed \
|
||
|
-e "s/-d ${docker_dns}/-d ${gateway}/g" \
|
||
|
-e 's/-A OUTPUT \(.*\) -j DOCKER_OUTPUT/\0\n-A PREROUTING \1 -j DOCKER_OUTPUT/' \
|
||
|
-e "s/--to-source :53/--to-source ${gateway}:53/g"\
|
||
|
| iptables-restore
|
||
|
|
||
|
# Update resolv.conf to use the Gateway IP if needed: this will also make CoreDNS use it via k3s' default `forward . /etc/resolv.conf` rule in the CoreDNS config
|
||
|
grep -q "${docker_dns}" /etc/resolv.conf
|
||
|
grepstatus=$?
|
||
|
if test $grepstatus -eq 0; then
|
||
|
echo "[$(date -Iseconds)] [DNS Fix] > Replacing IP in /etc/resolv.conf ..."
|
||
|
cp /etc/resolv.conf /etc/resolv.conf.original
|
||
|
sed -e "s/${docker_dns}/${gateway}/g" /etc/resolv.conf.original >/etc/resolv.conf
|
||
|
fi
|
||
|
|
||
|
echo "[$(date -Iseconds)] [DNS Fix] Done"
|