fix for broken ipv6
authorIan Kelling <ian@iankelling.org>
Sun, 10 Mar 2024 04:55:17 +0000 (23:55 -0500)
committerIan Kelling <ian@iankelling.org>
Sun, 10 Mar 2024 04:55:17 +0000 (23:55 -0500)
dynamic-ip-update

index 6c12ccb60fa0d4531883840b5037d8701d2c4779..c725682b5e02b63eda4d9d80305cc97b28d81b84 100755 (executable)
@@ -101,7 +101,7 @@ main() {
       fi
       return 0
     fi
-    if ip4=$(curl -s4 https://iankelling.org/cgi/pubip); then
+    if ip4=$(curl --connect-timeout 10 -s4 https://iankelling.org/cgi/pubip); then
       if $force || [[ $cur4 && $ip4 && $cur4 != $ip4 ]]; then
         up4=true # update ipv4
       fi
@@ -113,7 +113,7 @@ main() {
 
   up6=false
 
-  out6=$(curl -s6 https://iankelling.org/cgi/pubip) ||: # failure allowed if we have no ipv6
+  out6=$(curl --connect-timeout 10 -s6 https://iankelling.org/cgi/pubip) ||: # failure allowed if we have no ipv6
 
   if [[ $out6 ]]; then
     dev=$(ip -o a show to $out6 | awk '{print $2}')
@@ -132,6 +132,12 @@ main() {
     up6=true
   fi
 
+  # if we failed to get our ipv6 addr, we probably have ipv6
+  # connectivity problem.
+  if [[ ! $ip6 ]]; then
+    ip_arg=-4
+  fi
+
   if ! $up4 && ! $up6; then
     return 0
   fi
@@ -175,9 +181,9 @@ answer
 quit
 EOF
 
-  nsupdate -k /p/c/machine_specific/vps/filesystem/etc/bind/Kb8.nz.*.private <$f || nsupdate_fails=$((nsupdate_fails + 1))
+  chronic nsupdate $ip_arg -k /p/c/machine_specific/vps/filesystem/etc/bind/Kb8.nz.*.private <$f || nsupdate_fails=$((nsupdate_fails + 1))
   sed -i 's/^server .*/server bk.b8.nz/' $f
-  nsupdate -k /p/c/machine_specific/vps/filesystem/etc/bind/Kb8.nz.*.private <$f  || nsupdate_fails=$((nsupdate_fails + 1))
+  chronic nsupdate $ip_arg -k /p/c/machine_specific/vps/filesystem/etc/bind/Kb8.nz.*.private <$f  || nsupdate_fails=$((nsupdate_fails + 1))
   if (( nsupdate_fails > nsupdate_fail_limit )); then
     echo error: nsupdate is persistently failing >&2
     exit 1