From 1e83fa80651cf370565962e057f9d47b70280728 Mon Sep 17 00:00:00 2001 From: xiaorouji <60100640+xiaorouji@users.noreply.github.com> Date: Thu, 12 May 2022 17:18:33 +0800 Subject: [PATCH] luci: use dns2tcp instead of pdnsd Simple and easy to use. --- luci-app-passwall/Makefile | 10 +-- .../model/cbi/passwall/client/global.lua | 11 ++- .../root/usr/share/passwall/0_default_config | 2 +- .../root/usr/share/passwall/app.sh | 74 +------------------ 4 files changed, 12 insertions(+), 85 deletions(-) diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile index a1c5ad7dc..01698eac7 100644 --- a/luci-app-passwall/Makefile +++ b/luci-app-passwall/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall PKG_VERSION:=4.54 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_CONFIG_DEPENDS:= \ CONFIG_PACKAGE_$(PKG_NAME)_Transparent_Proxy \ @@ -17,7 +17,6 @@ PKG_CONFIG_DEPENDS:= \ CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Hysteria \ CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_IPv6_Nat \ CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_NaiveProxy \ - CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_PDNSD \ CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Client \ CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Server \ CONFIG_PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Rust_Client \ @@ -35,7 +34,7 @@ PKG_CONFIG_DEPENDS:= \ LUCI_TITLE:=LuCI support for PassWall LUCI_PKGARCH:=all LUCI_DEPENDS:=+coreutils +coreutils-base64 +coreutils-nohup +curl \ - +dns2socks +ip-full +libuci-lua +lua +luci-compat +luci-lib-jsonc \ + +dns2socks +dns2tcp +ip-full +libuci-lua +lua +luci-compat +luci-lib-jsonc \ +microsocks +resolveip +tcping +unzip \ +PACKAGE_$(PKG_NAME)_INCLUDE_Brook:brook \ +PACKAGE_$(PKG_NAME)_INCLUDE_ChinaDNS_NG:chinadns-ng \ @@ -43,7 +42,6 @@ LUCI_DEPENDS:=+coreutils +coreutils-base64 +coreutils-nohup +curl \ +PACKAGE_$(PKG_NAME)_INCLUDE_Hysteria:hysteria \ +PACKAGE_$(PKG_NAME)_INCLUDE_IPv6_Nat:ip6tables-mod-nat \ +PACKAGE_$(PKG_NAME)_INCLUDE_NaiveProxy:naiveproxy \ - +PACKAGE_$(PKG_NAME)_INCLUDE_PDNSD:pdnsd-alt \ +PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Client:shadowsocks-libev-ss-local \ +PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Client:shadowsocks-libev-ss-redir \ +PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Server:shadowsocks-libev-ss-server \ @@ -102,10 +100,6 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_NaiveProxy depends on !(arc||(arm&&TARGET_gemini)||armeb||mips||mips64||powerpc) default n -config PACKAGE_$(PKG_NAME)_INCLUDE_PDNSD - bool "Include PDNSD" - default y - config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_Libev_Client bool "Include Shadowsocks Libev Client" default y diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua index 1ab9a3711..b8e961432 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua @@ -190,8 +190,8 @@ o.default = "0" dns_mode = s:taboption("DNS", ListValue, "dns_mode", translate("Filter Mode")) dns_mode.rmempty = false dns_mode:reset_values() -if api.is_finded("pdnsd") then - dns_mode:value("pdnsd", "pdnsd " .. translatef("Requery DNS By %s", translate("TCP Node"))) +if api.is_finded("dns2tcp") then + dns_mode:value("dns2tcp", translatef("Requery DNS By %s", "TCP")) end if api.is_finded("dns2socks") then dns_mode:value("dns2socks", "dns2socks") @@ -243,7 +243,7 @@ o:value("9.9.9.9", "9.9.9.9 (Quad9-Recommended)") o:value("208.67.220.220", "208.67.220.220 (OpenDNS)") o:value("208.67.222.222", "208.67.222.222 (OpenDNS)") o:depends({dns_mode = "dns2socks"}) -o:depends({dns_mode = "pdnsd"}) +o:depends({dns_mode = "dns2tcp"}) o:depends({dns_mode = "udp"}) o:depends({v2ray_dns_mode = "tcp"}) @@ -272,7 +272,6 @@ o:depends("v2ray_dns_mode", "doh") o = s:taboption("DNS", Flag, "dns_cache", translate("Cache Resolved")) o.default = "1" o:depends({dns_mode = "dns2socks"}) -o:depends({dns_mode = "pdnsd"}) o:depends({dns_mode = "v2ray", v2ray_dns_mode = "tcp"}) o:depends({dns_mode = "v2ray", v2ray_dns_mode = "doh"}) o:depends({dns_mode = "xray", v2ray_dns_mode = "tcp"}) @@ -284,7 +283,7 @@ if has_chnlist and api.is_finded("chinadns-ng") then o.default = "0" if api.is_finded("smartdns") then o:depends({dns_shunt = "dnsmasq", dns_mode = "dns2socks"}) - o:depends({dns_shunt = "dnsmasq", dns_mode = "pdnsd"}) + o:depends({dns_shunt = "dnsmasq", dns_mode = "dns2tcp"}) o:depends({dns_shunt = "dnsmasq", dns_mode = "v2ray", v2ray_dns_mode = "tcp"}) o:depends({dns_shunt = "dnsmasq", dns_mode = "v2ray", v2ray_dns_mode = "doh"}) o:depends({dns_shunt = "dnsmasq", dns_mode = "xray", v2ray_dns_mode = "tcp"}) @@ -292,7 +291,7 @@ if has_chnlist and api.is_finded("chinadns-ng") then o:depends({dns_shunt = "dnsmasq", dns_mode = "udp"}) else o:depends({dns_mode = "dns2socks"}) - o:depends({dns_mode = "pdnsd"}) + o:depends({dns_mode = "dns2tcp"}) o:depends({dns_mode = "v2ray", v2ray_dns_mode = "tcp"}) o:depends({dns_mode = "v2ray", v2ray_dns_mode = "doh"}) o:depends({dns_mode = "xray", v2ray_dns_mode = "tcp"}) diff --git a/luci-app-passwall/root/usr/share/passwall/0_default_config b/luci-app-passwall/root/usr/share/passwall/0_default_config index 687d0ecfb..9b7c4d037 100644 --- a/luci-app-passwall/root/usr/share/passwall/0_default_config +++ b/luci-app-passwall/root/usr/share/passwall/0_default_config @@ -4,7 +4,7 @@ config global option socks_enabled '0' option tcp_node 'nil' option udp_node 'nil' - option dns_mode 'pdnsd' + option dns_mode 'dns2tcp' option remote_dns '1.1.1.1' option filter_proxy_ipv6 '0' option tcp_proxy_mode 'chnroute' diff --git a/luci-app-passwall/root/usr/share/passwall/app.sh b/luci-app-passwall/root/usr/share/passwall/app.sh index 9cfdcd187..096727c5d 100755 --- a/luci-app-passwall/root/usr/share/passwall/app.sh +++ b/luci-app-passwall/root/usr/share/passwall/app.sh @@ -1129,11 +1129,10 @@ start_dns() { run_v2ray ${_v2ray_args} } ;; - pdnsd) + dns2tcp) use_tcp_node_resolve_dns=1 - gen_pdnsd_config "${dns_listen_port}" "${REMOTE_DNS}" "${DNS_CACHE}" - ln_run "$(first_type pdnsd)" pdnsd "/dev/null" --daemon -c "${TMP_PATH}/pdnsd/pdnsd.conf" -d - echolog " - 域名解析:pdnsd + 使用(TCP节点)解析域名..." + ln_run "$(first_type dns2tcp)" dns2tcp "/dev/null" -L "${TUN_DNS}" -R "$(get_first_dns REMOTE_DNS 53)" -v + echolog " - 域名解析:dns2tcp + 使用(TCP节点)解析域名..." ;; udp) use_udp_node_resolve_dns=1 @@ -1188,71 +1187,6 @@ start_dns() { } } -gen_pdnsd_config() { - local listen_port=${1} - local up_dns=${2} - local cache=${3} - local pdnsd_dir=${TMP_PATH}/pdnsd - local perm_cache=2048 - local _cache="on" - local query_method="tcp_only" - local reject_ipv6_dns= - [ "${cache}" = "0" ] && _cache="off" && perm_cache=0 - - mkdir -p "${pdnsd_dir}" - touch "${pdnsd_dir}/pdnsd.cache" - chown -R root.nogroup "${pdnsd_dir}" - if [ $PROXY_IPV6 == "0" ]; then - reject_ipv6_dns=$(cat <<- 'EOF' - - reject = ::/0; - reject_policy = negate; - EOF - ) - fi - cat > "${pdnsd_dir}/pdnsd.conf" <<-EOF - global { - perm_cache = $perm_cache; - cache_dir = "$pdnsd_dir"; - run_as = "root"; - server_ip = 127.0.0.1; - server_port = ${listen_port}; - status_ctl = on; - query_method = ${query_method}; - min_ttl = 1h; - max_ttl = 1w; - timeout = 10; - par_queries = 2; - neg_domain_pol = off; - udpbufsize = 1024; - proc_limit = 2; - procq_limit = 8; - } - - EOF - echolog " + [$?]Pdnsd (127.0.0.1:${listen_port})..." - - append_pdnsd_updns() { - [ -z "${2}" ] && echolog " | - 略过错误 : ${1}" && return 0 - cat >> $pdnsd_dir/pdnsd.conf <<-EOF - server { - label = "node-${2}_${3}"; - ip = ${2}; - edns_query = on; - port = ${3}; - timeout = 4; - interval = 10m; - uptest = none; - purge_cache = off; - proxy_only = on; - caching = $_cache;${reject_ipv6_dns} - } - EOF - echolog " | - [$?]上游DNS:${2}:${3}" - } - hosts_foreach up_dns append_pdnsd_updns 53 -} - add_ip2route() { local ip=$(get_host_ip "ipv4" $1) [ -z "$ip" ] && { @@ -1486,7 +1420,7 @@ chnlist=$(echo "${TCP_PROXY_MODE}${LOCALHOST_TCP_PROXY_MODE}${UDP_PROXY_MODE}${L gfwlist=$(echo "${TCP_PROXY_MODE}${LOCALHOST_TCP_PROXY_MODE}${UDP_PROXY_MODE}${LOCALHOST_UDP_PROXY_MODE}" | grep "gfwlist") DNS_SHUNT=$(config_t_get global dns_shunt dnsmasq) [ -z "$(first_type $DNS_SHUNT)" ] && DNS_SHUNT="dnsmasq" -DNS_MODE=$(config_t_get global dns_mode pdnsd) +DNS_MODE=$(config_t_get global dns_mode dns2tcp) DNS_CACHE=$(config_t_get global dns_cache 0) REMOTE_DNS=$(config_t_get global remote_dns 1.1.1.1:53 | sed 's/#/:/g' | sed -E 's/\:([^:]+)$/#\1/g') CHINADNS_NG=$(config_t_get global chinadns_ng 0)