luci: use dns2tcp instead of pdnsd
Simple and easy to use.
This commit is contained in:
parent
788cd61d36
commit
1e83fa8065
@ -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
|
||||
|
@ -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"})
|
||||
|
@ -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'
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user