zfl9 8 anni fa
parent
commit
00a1467616
2 ha cambiato i file con 18 aggiunte e 33 eliminazioni
  1. 16 30
      ss-tproxy
  2. 2 3
      ss-tproxy.conf

+ 16 - 30
ss-tproxy

@@ -321,7 +321,7 @@ min-cache-ttl = $dnsmasq_cache_time
 no-negcache
 no-resolv
 port = 53
-$(for dns in "${dns_direct[@]}"; do echo "server = $dns"; done)
+server = $dns_direct
 $(perl -pe 's@^.*+$@server=/$&/127.0.0.1#60053\nipset=/$&/gfwlist@' $dnsmasq_gfwlist <(
 perl -ne 'print unless m@^\s|\s\n$|^#|^\d++\.\d++\.\d++\.\d++(?:/\d++)?$@' $dnsmasq_gfwlist_ext
 ))
@@ -331,9 +331,8 @@ EOF
 tproxy_chnroute)
     chinadns_chnroute_temp=$(mktemp)
     cat $chinadns_chnroute >$chinadns_chnroute_temp
-    for dns in "${dns_direct[@]}"; do echo "$dns/32" >>$chinadns_chnroute_temp; done
-    chinadns_upstream=$(for dns in "${dns_direct[@]}"; do echo -n "$dns,"; done)
-    chinadns_params="-b 0.0.0.0 -p 65353 -s ${chinadns_upstream}127.0.0.1:60053 -c $chinadns_chnroute_temp"
+    echo "$dns_direct/32" >>$chinadns_chnroute_temp
+    chinadns_params="-b 0.0.0.0 -p 65353 -s $dns_direct,127.0.0.1:60053 -c $chinadns_chnroute_temp"
     [ "$chinadns_mutation" = 'true' ] && chinadns_params+=' -m'
     [ "$chinadns_verbose" = 'true' ] && chinadns_params+=' -v'
     nohup chinadns $chinadns_params </dev/null &>>"$chinadns_log" &
@@ -392,7 +391,7 @@ min-cache-ttl = $dnsmasq_cache_time
 no-negcache
 no-resolv
 port = 53
-$(for dns in "${dns_direct[@]}"; do echo "server = $dns"; done)
+server = $dns_direct
 $(perl -pe 's@^.*+$@server=/$&/127.0.0.1#60053\nipset=/$&/gfwlist@' $dnsmasq_gfwlist <(
 perl -ne 'print unless m@^\s|\s\n$|^#|^\d++\.\d++\.\d++\.\d++(?:/\d++)?$@' $dnsmasq_gfwlist_ext
 ))
@@ -411,9 +410,8 @@ EOF
 
     chinadns_chnroute_temp=$(mktemp)
     cat $chinadns_chnroute >$chinadns_chnroute_temp
-    for dns in "${dns_direct[@]}"; do echo "$dns/32" >>$chinadns_chnroute_temp; done
-    chinadns_upstream=$(for dns in "${dns_direct[@]}"; do echo -n "$dns,"; done)
-    chinadns_params="-b 0.0.0.0 -p 65353 -s ${chinadns_upstream}127.0.0.1:60053 -c $chinadns_chnroute_temp"
+    echo "$dns_direct/32" >>$chinadns_chnroute_temp
+    chinadns_params="-b 0.0.0.0 -p 65353 -s $dns_direct,127.0.0.1:60053 -c $chinadns_chnroute_temp"
     [ "$chinadns_mutation" = 'true' ] && chinadns_params+=' -m'
     [ "$chinadns_verbose" = 'true' ] && chinadns_params+=' -v'
     nohup chinadns $chinadns_params </dev/null &>>"$chinadns_log" &
@@ -464,7 +462,7 @@ min-cache-ttl = $dnsmasq_cache_time
 no-negcache
 no-resolv
 port = 53
-$(for dns in "${dns_direct[@]}"; do echo "server = $dns"; done)
+server = $dns_direct
 $(perl -pe "s@^.*+\$@server=/$&/${dns_remote/:/#}\nipset=/$&/gfwlist@" $dnsmasq_gfwlist <(
 perl -ne 'print unless m@^\s|\s\n$|^#|^\d++\.\d++\.\d++\.\d++(?:/\d++)?$@' $dnsmasq_gfwlist_ext
 ))
@@ -474,9 +472,8 @@ EOF
 tun2socks_chnroute)
     chinadns_chnroute_temp=$(mktemp)
     cat $chinadns_chnroute >$chinadns_chnroute_temp
-    for dns in "${dns_direct[@]}"; do echo "$dns/32" >>$chinadns_chnroute_temp; done
-    chinadns_upstream=$(for dns in "${dns_direct[@]}"; do echo -n "$dns,"; done)
-    chinadns_params="-b 0.0.0.0 -p 60053 -s ${chinadns_upstream}${dns_remote} -c $chinadns_chnroute_temp"
+    echo "$dns_direct/32" >>$chinadns_chnroute_temp
+    chinadns_params="-b 0.0.0.0 -p 60053 -s $dns_direct,$dns_remote -c $chinadns_chnroute_temp"
     [ "$chinadns_mutation" = 'true' ] && chinadns_params+=' -m'
     [ "$chinadns_verbose" = 'true' ] && chinadns_params+=' -v'
     nohup chinadns $chinadns_params </dev/null &>>"$chinadns_log" &
@@ -535,7 +532,7 @@ min-cache-ttl = $dnsmasq_cache_time
 no-negcache
 no-resolv
 port = 53
-$(for dns in "${dns_direct[@]}"; do echo "server = $dns"; done)
+server = $dns_direct
 $(perl -pe 's@^.*+$@server=/$&/127.0.0.1#60053\nipset=/$&/gfwlist@' $dnsmasq_gfwlist <(
 perl -ne 'print unless m@^\s|\s\n$|^#|^\d++\.\d++\.\d++\.\d++(?:/\d++)?$@' $dnsmasq_gfwlist_ext
 ))
@@ -554,9 +551,8 @@ EOF
 
     chinadns_chnroute_temp=$(mktemp)
     cat $chinadns_chnroute >$chinadns_chnroute_temp
-    for dns in "${dns_direct[@]}"; do echo "$dns/32" >>$chinadns_chnroute_temp; done
-    chinadns_upstream=$(for dns in "${dns_direct[@]}"; do echo -n "$dns,"; done)
-    chinadns_params="-b 0.0.0.0 -p 65353 -s ${chinadns_upstream}127.0.0.1:60053 -c $chinadns_chnroute_temp"
+    echo "$dns_direct/32" >>$chinadns_chnroute_temp
+    chinadns_params="-b 0.0.0.0 -p 65353 -s $dns_direct,127.0.0.1:60053 -c $chinadns_chnroute_temp"
     [ "$chinadns_mutation" = 'true' ] && chinadns_params+=' -m'
     [ "$chinadns_verbose" = 'true' ] && chinadns_params+=' -v'
     nohup chinadns $chinadns_params </dev/null &>>"$chinadns_log" &
@@ -803,6 +799,7 @@ function start_kopts {
 function dns_proxy {
     while umount /etc/resolv.conf; do :; done &>/dev/null
     resolv=$(mktemp)
+    chmod 0644 $resolv
     cat <<EOF >$resolv
 # Generated by ss-tproxy at $(date '+%F %T')
 nameserver 127.0.0.1
@@ -811,20 +808,9 @@ EOF
     rm -f $resolv &>/dev/null
 }
 
-function dns_normal {
-    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 {
     check_depend
-    dns_normal
+    while umount /etc/resolv.conf; do :; done &>/dev/null
     start_socks
     start_dns
     start_rule
@@ -834,7 +820,7 @@ function start {
 }
 
 function stop {
-    dns_normal
+    while umount /etc/resolv.conf; do :; done &>/dev/null
 
     iptables -t nat -F OUTPUT
     iptables -t nat -F PREROUTING
@@ -850,7 +836,7 @@ function stop {
     iptables -t mangle -X TUN2SOCKS &>/dev/null
 
     for intranet in "${iptables_intranet[@]}"; do
-        iptables -t nat -A PREROUTING -p udp -s $intranet -d $intranet --dport 53 -j DNAT --to-destination ${dns_direct[0]}
+        iptables -t nat -A PREROUTING -p udp -s $intranet -d $intranet --dport 53 -j DNAT --to-destination $dns_direct
         iptables -t nat -A POSTROUTING -s $intranet ! -d $intranet -j MASQUERADE
     done
 

+ 2 - 3
ss-tproxy.conf

@@ -124,12 +124,11 @@ chinadns_verbose='false'                     # 记录详细日志
 chinadns_log='/var/log/chinadns.log'         # 日志文件路径
 
 ## dns 配置
+# 直连 DNS 服务器,不能指定端口号,必须为默认端口 53/udp
+dns_direct='114.114.114.114'
 # 远程 DNS 服务器,必须指明端口号,如 208.67.222.222:443
 # 如果代理模式为 *tcp,请确保该 DNS 能够处理 TCP 查询方式
 dns_remote='8.8.8.8:53'
-# 直连 DNS 服务器,不能指定端口号,必须为默认端口 53/udp
-# 允许多个 DNS,每个 DNS 之间使用空格隔开,最多允许 3 个
-dns_direct=(114.114.114.114 119.29.29.29)
 
 ## iptables 配置
 iptables_pbr_number='100'                        # PBR 路由表号