Parcourir la source

Use mount --bind to avoid directly modifying /etc/resolv.conf

zfl9 il y a 8 ans
Parent
commit
cbb21ecfcc
1 fichiers modifiés avec 11 ajouts et 3 suppressions
  1. 11 3
      ss-tproxy

+ 11 - 3
ss-tproxy

@@ -768,17 +768,25 @@ function start_kopts {
 }
 
 function dns_proxy {
-cat <<EOF >/etc/resolv.conf
+    while umount /etc/resolv.conf; do :; done &>/dev/null
+    resolv=$(mktemp)
+    cat <<EOF >$resolv
 # Generated by ss-tproxy at $(date '+%F %T')
 nameserver 127.0.0.1
 EOF
+    mount -rB $resolv /etc/resolv.conf
+    rm -f $resolv &>/dev/null
 }
 
 function dns_normal {
-cat <<EOF >/etc/resolv.conf
+    while umount /etc/resolv.conf; do :; done &>/dev/null
+    resolv=$(mktemp)
+    cat <<EOF >$resolv
 # Generated by ss-tproxy at $(date '+%F %T')
 $(for dns in "${dns_direct[@]}"; do echo "nameserver $dns"; done)
 EOF
+    mount -rB $resolv /etc/resolv.conf
+    rm -f $resolv &>/dev/null
 }
 
 function start {
@@ -965,7 +973,7 @@ COMMAND := {
     check-depend        check dependency
     help                show this help and exit
 }
-Issues/Bug report: zfl9.com@gmail.com (Otokaze)
+Issues or Bug report: zfl9.com@gmail.com (Otokaze)
 See also https://www.zfl9.com/ss-redir.html for more details.
 EOF
 }