parent
f80d9934b9
commit
8a48c68189
@ -6,8 +6,8 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=luci-app-passwall
|
PKG_NAME:=luci-app-passwall
|
||||||
PKG_VERSION:=24.12.17
|
PKG_VERSION:=24.12.25
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS:= \
|
PKG_CONFIG_DEPENDS:= \
|
||||||
CONFIG_PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy \
|
CONFIG_PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy \
|
||||||
|
@ -523,11 +523,13 @@ function create_backup()
|
|||||||
"/usr/share/passwall/rules/proxy_host",
|
"/usr/share/passwall/rules/proxy_host",
|
||||||
"/usr/share/passwall/rules/proxy_ip"
|
"/usr/share/passwall/rules/proxy_ip"
|
||||||
}
|
}
|
||||||
local tar_file = "/tmp/passwall-backup.tar.gz"
|
local date = os.date("%Y%m%d")
|
||||||
|
local tar_file = "/tmp/passwall-" .. date .. "-backup.tar.gz"
|
||||||
fs.remove(tar_file)
|
fs.remove(tar_file)
|
||||||
local cmd = "tar -czf " .. tar_file .. " " .. table.concat(backup_files, " ")
|
local cmd = "tar -czf " .. tar_file .. " " .. table.concat(backup_files, " ")
|
||||||
api.sys.call(cmd)
|
api.sys.call(cmd)
|
||||||
http.header("Content-Disposition", "attachment; filename=passwall-backup.tar.gz")
|
http.header("Content-Disposition", "attachment; filename=passwall-" .. date .. "-backup.tar.gz")
|
||||||
|
http.header("X-Backup-Filename", "passwall-" .. date .. "-backup.tar.gz")
|
||||||
http.prepare_content("application/octet-stream")
|
http.prepare_content("application/octet-stream")
|
||||||
http.write(fs.readfile(tar_file))
|
http.write(fs.readfile(tar_file))
|
||||||
fs.remove(tar_file)
|
fs.remove(tar_file)
|
||||||
|
@ -387,11 +387,10 @@ if has_singbox or has_xray then
|
|||||||
o:depends({xray_dns_mode = "tcp+doh"})
|
o:depends({xray_dns_mode = "tcp+doh"})
|
||||||
o:depends({singbox_dns_mode = "doh"})
|
o:depends({singbox_dns_mode = "doh"})
|
||||||
|
|
||||||
if has_xray then
|
o = s:option(Value, "remote_dns_client_ip", translate("EDNS Client Subnet"))
|
||||||
o = s:option(Value, "dns_client_ip", translate("EDNS Client Subnet"))
|
|
||||||
o.datatype = "ipaddr"
|
o.datatype = "ipaddr"
|
||||||
|
o:depends({dns_mode = "sing-box"})
|
||||||
o:depends({dns_mode = "xray"})
|
o:depends({dns_mode = "xray"})
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
o = s:option(ListValue, "chinadns_ng_default_tag", translate("Default DNS"))
|
o = s:option(ListValue, "chinadns_ng_default_tag", translate("Default DNS"))
|
||||||
|
@ -365,7 +365,38 @@ o:depends("direct_dns_mode", "dot")
|
|||||||
o = s:taboption("DNS", Flag, "filter_proxy_ipv6", translate("Filter Proxy Host IPv6"), translate("Experimental feature."))
|
o = s:taboption("DNS", Flag, "filter_proxy_ipv6", translate("Filter Proxy Host IPv6"), translate("Experimental feature."))
|
||||||
o.default = "0"
|
o.default = "0"
|
||||||
|
|
||||||
|
---- DNS Forward Mode
|
||||||
|
o = s:taboption("DNS", ListValue, "dns_mode", translate("Filter Mode"))
|
||||||
|
o:value("udp", translatef("Requery DNS By %s", "UDP"))
|
||||||
|
o:value("tcp", translatef("Requery DNS By %s", "TCP"))
|
||||||
|
if chinadns_tls == 0 then
|
||||||
|
o:value("dot", translatef("Requery DNS By %s", "DoT"))
|
||||||
|
end
|
||||||
|
if api.is_finded("dns2socks") then
|
||||||
|
o:value("dns2socks", "dns2socks")
|
||||||
|
end
|
||||||
|
if has_singbox then
|
||||||
|
o:value("sing-box", "Sing-Box")
|
||||||
|
end
|
||||||
|
if has_xray then
|
||||||
|
o:value("xray", "Xray")
|
||||||
|
end
|
||||||
if api.is_finded("smartdns") then
|
if api.is_finded("smartdns") then
|
||||||
|
o:depends({ dns_shunt = "smartdns", ['!reverse'] = true })
|
||||||
|
end
|
||||||
|
|
||||||
|
---- SmartDNS Forward Mode
|
||||||
|
if api.is_finded("smartdns") then
|
||||||
|
o = s:taboption("DNS", ListValue, "smartdns_dns_mode", translate("Filter Mode"))
|
||||||
|
o:value("socks", "SOCKS")
|
||||||
|
if has_singbox then
|
||||||
|
o:value("sing-box", "Sing-Box")
|
||||||
|
end
|
||||||
|
if has_xray then
|
||||||
|
o:value("xray", "Xray")
|
||||||
|
end
|
||||||
|
o:depends({ dns_shunt = "smartdns" })
|
||||||
|
|
||||||
o = s:taboption("DNS", DynamicList, "smartdns_remote_dns", translate("Remote DNS"))
|
o = s:taboption("DNS", DynamicList, "smartdns_remote_dns", translate("Remote DNS"))
|
||||||
o:value("tcp://1.1.1.1")
|
o:value("tcp://1.1.1.1")
|
||||||
o:value("tcp://8.8.4.4")
|
o:value("tcp://8.8.4.4")
|
||||||
@ -385,7 +416,7 @@ if api.is_finded("smartdns") then
|
|||||||
o:value("https://dns.adguard.com/dns-query,176.103.130.130")
|
o:value("https://dns.adguard.com/dns-query,176.103.130.130")
|
||||||
o:value("https://doh.libredns.gr/dns-query,116.202.176.26")
|
o:value("https://doh.libredns.gr/dns-query,116.202.176.26")
|
||||||
o:value("https://doh.libredns.gr/ads,116.202.176.26")
|
o:value("https://doh.libredns.gr/ads,116.202.176.26")
|
||||||
o:depends("dns_shunt", "smartdns")
|
o:depends({ dns_shunt = "smartdns", smartdns_dns_mode = "socks" })
|
||||||
o.cfgvalue = function(self, section)
|
o.cfgvalue = function(self, section)
|
||||||
return m:get(section, self.option) or {"tcp://1.1.1.1"}
|
return m:get(section, self.option) or {"tcp://1.1.1.1"}
|
||||||
end
|
end
|
||||||
@ -409,35 +440,16 @@ if api.is_finded("smartdns") then
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
---- DNS Forward Mode
|
|
||||||
o = s:taboption("DNS", ListValue, "dns_mode", translate("Filter Mode"))
|
|
||||||
o:value("udp", translatef("Requery DNS By %s", "UDP"))
|
|
||||||
o:value("tcp", translatef("Requery DNS By %s", "TCP"))
|
|
||||||
if chinadns_tls == 0 then
|
|
||||||
o:value("dot", translatef("Requery DNS By %s", "DoT"))
|
|
||||||
end
|
|
||||||
if api.is_finded("dns2socks") then
|
|
||||||
o:value("dns2socks", "dns2socks")
|
|
||||||
end
|
|
||||||
if has_singbox then
|
|
||||||
o:value("sing-box", "Sing-Box")
|
|
||||||
end
|
|
||||||
if has_xray then
|
|
||||||
o:value("xray", "Xray")
|
|
||||||
end
|
|
||||||
if api.is_finded("smartdns") then
|
|
||||||
o:depends({ dns_shunt = "smartdns", ['!reverse'] = true })
|
|
||||||
end
|
|
||||||
|
|
||||||
o = s:taboption("DNS", ListValue, "xray_dns_mode", translate("Request protocol"))
|
o = s:taboption("DNS", ListValue, "xray_dns_mode", translate("Request protocol"))
|
||||||
o:value("tcp", "TCP")
|
o:value("tcp", "TCP")
|
||||||
o:value("tcp+doh", "TCP + DoH (" .. translate("A/AAAA type") .. ")")
|
o:value("tcp+doh", "TCP + DoH (" .. translate("A/AAAA type") .. ")")
|
||||||
o:depends("dns_mode", "xray")
|
o:depends("dns_mode", "xray")
|
||||||
|
o:depends("smartdns_dns_mode", "xray")
|
||||||
o.cfgvalue = function(self, section)
|
o.cfgvalue = function(self, section)
|
||||||
return m:get(section, "v2ray_dns_mode")
|
return m:get(section, "v2ray_dns_mode")
|
||||||
end
|
end
|
||||||
o.write = function(self, section, value)
|
o.write = function(self, section, value)
|
||||||
if s.fields["dns_mode"]:formvalue(section) == "xray" then
|
if s.fields["dns_mode"]:formvalue(section) == "xray" or s.fields["smartdns_dns_mode"]:formvalue(section) == "xray" then
|
||||||
return m:set(section, "v2ray_dns_mode", value)
|
return m:set(section, "v2ray_dns_mode", value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -446,11 +458,12 @@ o = s:taboption("DNS", ListValue, "singbox_dns_mode", translate("Request protoco
|
|||||||
o:value("tcp", "TCP")
|
o:value("tcp", "TCP")
|
||||||
o:value("doh", "DoH")
|
o:value("doh", "DoH")
|
||||||
o:depends("dns_mode", "sing-box")
|
o:depends("dns_mode", "sing-box")
|
||||||
|
o:depends("smartdns_dns_mode", "sing-box")
|
||||||
o.cfgvalue = function(self, section)
|
o.cfgvalue = function(self, section)
|
||||||
return m:get(section, "v2ray_dns_mode")
|
return m:get(section, "v2ray_dns_mode")
|
||||||
end
|
end
|
||||||
o.write = function(self, section, value)
|
o.write = function(self, section, value)
|
||||||
if s.fields["dns_mode"]:formvalue(section) == "sing-box" then
|
if s.fields["dns_mode"]:formvalue(section) == "sing-box" or s.fields["smartdns_dns_mode"]:formvalue(section) == "sing-box" then
|
||||||
return m:set(section, "v2ray_dns_mode", value)
|
return m:set(section, "v2ray_dns_mode", value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -524,19 +537,26 @@ o.validate = doh_validate
|
|||||||
o:depends({xray_dns_mode = "tcp+doh"})
|
o:depends({xray_dns_mode = "tcp+doh"})
|
||||||
o:depends({singbox_dns_mode = "doh"})
|
o:depends({singbox_dns_mode = "doh"})
|
||||||
|
|
||||||
o = s:taboption("DNS", Value, "dns_client_ip", translate("EDNS Client Subnet"))
|
o = s:taboption("DNS", Value, "remote_dns_client_ip", translate("EDNS Client Subnet"))
|
||||||
o.description = translate("Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address).") .. "<br />" ..
|
o.description = translate("Notify the DNS server when the DNS query is notified, the location of the client (cannot be a private IP address).") .. "<br />" ..
|
||||||
translate("This feature requires the DNS server to support the Edns Client Subnet (RFC7871).")
|
translate("This feature requires the DNS server to support the Edns Client Subnet (RFC7871).")
|
||||||
o.datatype = "ipaddr"
|
o.datatype = "ipaddr"
|
||||||
|
o:depends({dns_mode = "sing-box"})
|
||||||
o:depends({dns_mode = "xray"})
|
o:depends({dns_mode = "xray"})
|
||||||
|
o:depends("smartdns_dns_mode", "sing-box")
|
||||||
|
o:depends("smartdns_dns_mode", "xray")
|
||||||
|
|
||||||
o = s:taboption("DNS", Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the shunt domain that proxy."))
|
o = s:taboption("DNS", Flag, "remote_fakedns", "FakeDNS", translate("Use FakeDNS work in the shunt domain that proxy."))
|
||||||
o.default = "0"
|
o.default = "0"
|
||||||
o:depends({dns_mode = "sing-box", dns_shunt = "dnsmasq"})
|
o:depends({dns_mode = "sing-box", dns_shunt = "dnsmasq"})
|
||||||
o:depends({dns_mode = "sing-box", dns_shunt = "chinadns-ng"})
|
o:depends({dns_mode = "sing-box", dns_shunt = "chinadns-ng"})
|
||||||
|
o:depends({smartdns_dns_mode = "sing-box", dns_shunt = "smartdns"})
|
||||||
|
o:depends({dns_mode = "xray", dns_shunt = "dnsmasq"})
|
||||||
|
o:depends({dns_mode = "xray", dns_shunt = "chinadns-ng"})
|
||||||
|
o:depends({smartdns_dns_mode = "xray", dns_shunt = "smartdns"})
|
||||||
o.validate = function(self, value, t)
|
o.validate = function(self, value, t)
|
||||||
if value and value == "1" then
|
if value and value == "1" then
|
||||||
local _dns_mode = s.fields["dns_mode"]:formvalue(t)
|
local _dns_mode = s.fields["dns_mode"]:formvalue(t) or s.fields["smartdns_dns_mode"]:formvalue(t)
|
||||||
local _tcp_node = s.fields["tcp_node"]:formvalue(t)
|
local _tcp_node = s.fields["tcp_node"]:formvalue(t)
|
||||||
if _dns_mode and _tcp_node then
|
if _dns_mode and _tcp_node then
|
||||||
if m:get(_tcp_node, "type"):lower() ~= _dns_mode then
|
if m:get(_tcp_node, "type"):lower() ~= _dns_mode then
|
||||||
|
@ -394,7 +394,6 @@ o = s:option(ListValue, _n("transport"), translate("Transport"))
|
|||||||
o:value("raw", "RAW (TCP)")
|
o:value("raw", "RAW (TCP)")
|
||||||
o:value("mkcp", "mKCP")
|
o:value("mkcp", "mKCP")
|
||||||
o:value("ws", "WebSocket")
|
o:value("ws", "WebSocket")
|
||||||
o:value("h2", "HTTP/2")
|
|
||||||
o:value("ds", "DomainSocket")
|
o:value("ds", "DomainSocket")
|
||||||
o:value("quic", "QUIC")
|
o:value("quic", "QUIC")
|
||||||
o:value("grpc", "gRPC")
|
o:value("grpc", "gRPC")
|
||||||
@ -496,25 +495,6 @@ o = s:option(Value, _n("ws_heartbeatPeriod"), translate("HeartbeatPeriod(second)
|
|||||||
o.datatype = "integer"
|
o.datatype = "integer"
|
||||||
o:depends({ [_n("transport")] = "ws" })
|
o:depends({ [_n("transport")] = "ws" })
|
||||||
|
|
||||||
-- [[ HTTP/2部分 ]]--
|
|
||||||
o = s:option(Value, _n("h2_host"), translate("HTTP/2 Host"))
|
|
||||||
o:depends({ [_n("transport")] = "h2" })
|
|
||||||
|
|
||||||
o = s:option(Value, _n("h2_path"), translate("HTTP/2 Path"))
|
|
||||||
o.placeholder = "/"
|
|
||||||
o:depends({ [_n("transport")] = "h2" })
|
|
||||||
|
|
||||||
o = s:option(Flag, _n("h2_health_check"), translate("Health check"))
|
|
||||||
o:depends({ [_n("transport")] = "h2" })
|
|
||||||
|
|
||||||
o = s:option(Value, _n("h2_read_idle_timeout"), translate("Idle timeout"))
|
|
||||||
o.default = "10"
|
|
||||||
o:depends({ [_n("h2_health_check")] = true })
|
|
||||||
|
|
||||||
o = s:option(Value, _n("h2_health_check_timeout"), translate("Health check timeout"))
|
|
||||||
o.default = "15"
|
|
||||||
o:depends({ [_n("h2_health_check")] = true })
|
|
||||||
|
|
||||||
-- [[ DomainSocket部分 ]]--
|
-- [[ DomainSocket部分 ]]--
|
||||||
o = s:option(Value, _n("ds_path"), "Path", translate("A legal file path. This file must not exist before running."))
|
o = s:option(Value, _n("ds_path"), "Path", translate("A legal file path. This file must not exist before running."))
|
||||||
o:depends({ [_n("transport")] = "ds" })
|
o:depends({ [_n("transport")] = "ds" })
|
||||||
|
@ -201,7 +201,6 @@ o = s:option(ListValue, _n("transport"), translate("Transport"))
|
|||||||
o:value("raw", "RAW")
|
o:value("raw", "RAW")
|
||||||
o:value("mkcp", "mKCP")
|
o:value("mkcp", "mKCP")
|
||||||
o:value("ws", "WebSocket")
|
o:value("ws", "WebSocket")
|
||||||
o:value("h2", "HTTP/2")
|
|
||||||
o:value("ds", "DomainSocket")
|
o:value("ds", "DomainSocket")
|
||||||
o:value("quic", "QUIC")
|
o:value("quic", "QUIC")
|
||||||
o:value("grpc", "gRPC")
|
o:value("grpc", "gRPC")
|
||||||
@ -245,14 +244,6 @@ o = s:option(Value, _n("xhttp_maxconcurrentuploads"), translate("maxConcurrentUp
|
|||||||
o.default = "10"
|
o.default = "10"
|
||||||
o:depends({ [_n("transport")] = "xhttp" })
|
o:depends({ [_n("transport")] = "xhttp" })
|
||||||
|
|
||||||
-- [[ HTTP/2部分 ]]--
|
|
||||||
|
|
||||||
o = s:option(Value, _n("h2_host"), translate("HTTP/2 Host"))
|
|
||||||
o:depends({ [_n("transport")] = "h2" })
|
|
||||||
|
|
||||||
o = s:option(Value, _n("h2_path"), translate("HTTP/2 Path"))
|
|
||||||
o:depends({ [_n("transport")] = "h2" })
|
|
||||||
|
|
||||||
-- [[ TCP部分 ]]--
|
-- [[ TCP部分 ]]--
|
||||||
|
|
||||||
-- TCP伪装
|
-- TCP伪装
|
||||||
|
@ -219,7 +219,14 @@ end
|
|||||||
|
|
||||||
function is_install(package)
|
function is_install(package)
|
||||||
if package and #package > 0 then
|
if package and #package > 0 then
|
||||||
return sys.call(string.format('opkg list-installed | grep "%s" > /dev/null 2>&1', package)) == 0
|
local file_path = "/usr/lib/opkg/info"
|
||||||
|
local file_ext = ".control"
|
||||||
|
local has = sys.call("[ -d " .. file_path .. " ]")
|
||||||
|
if has ~= 0 then
|
||||||
|
file_path = "/lib/apk/packages"
|
||||||
|
file_ext = ".list"
|
||||||
|
end
|
||||||
|
return sys.call(string.format('[ -s "%s/%s%s" ]', file_path, package, file_ext)) == 0
|
||||||
end
|
end
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
@ -762,6 +762,7 @@ function gen_config(var)
|
|||||||
local remote_dns_tcp_server = var["-remote_dns_tcp_server"]
|
local remote_dns_tcp_server = var["-remote_dns_tcp_server"]
|
||||||
local remote_dns_doh_url = var["-remote_dns_doh_url"]
|
local remote_dns_doh_url = var["-remote_dns_doh_url"]
|
||||||
local remote_dns_doh_host = var["-remote_dns_doh_host"]
|
local remote_dns_doh_host = var["-remote_dns_doh_host"]
|
||||||
|
local remote_dns_client_ip = var["-remote_dns_client_ip"]
|
||||||
local remote_dns_query_strategy = var["-remote_dns_query_strategy"]
|
local remote_dns_query_strategy = var["-remote_dns_query_strategy"]
|
||||||
local remote_dns_fake = var["-remote_dns_fake"]
|
local remote_dns_fake = var["-remote_dns_fake"]
|
||||||
local dns_cache = var["-dns_cache"]
|
local dns_cache = var["-dns_cache"]
|
||||||
@ -1278,6 +1279,7 @@ function gen_config(var)
|
|||||||
strategy = remote_strategy,
|
strategy = remote_strategy,
|
||||||
address_resolver = "direct",
|
address_resolver = "direct",
|
||||||
detour = default_outTag,
|
detour = default_outTag,
|
||||||
|
client_subnet = (remote_dns_client_ip and remote_dns_client_ip ~= "") and remote_dns_client_ip or nil,
|
||||||
}
|
}
|
||||||
|
|
||||||
if remote_dns_udp_server then
|
if remote_dns_udp_server then
|
||||||
@ -1317,7 +1319,7 @@ function gen_config(var)
|
|||||||
experimental.cache_file = {
|
experimental.cache_file = {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
store_fakeip = true,
|
store_fakeip = true,
|
||||||
path = "/tmp/singbox_passwall_" .. flag .. ".db"
|
path = api.CACHE_PATH .. "/singbox_" .. flag .. ".db"
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -191,12 +191,6 @@ function gen_outbound(flag, node, tag, proxy_table)
|
|||||||
earlyDataHeaderName = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil,
|
earlyDataHeaderName = (node.ws_earlyDataHeaderName) and node.ws_earlyDataHeaderName or nil,
|
||||||
heartbeatPeriod = tonumber(node.ws_heartbeatPeriod) or nil
|
heartbeatPeriod = tonumber(node.ws_heartbeatPeriod) or nil
|
||||||
} or nil,
|
} or nil,
|
||||||
httpSettings = (node.transport == "h2") and {
|
|
||||||
path = node.h2_path or "/",
|
|
||||||
host = node.h2_host,
|
|
||||||
read_idle_timeout = tonumber(node.h2_read_idle_timeout) or nil,
|
|
||||||
health_check_timeout = tonumber(node.h2_health_check_timeout) or nil
|
|
||||||
} or nil,
|
|
||||||
dsSettings = (node.transport == "ds") and
|
dsSettings = (node.transport == "ds") and
|
||||||
{path = node.ds_path} or nil,
|
{path = node.ds_path} or nil,
|
||||||
quicSettings = (node.transport == "quic") and {
|
quicSettings = (node.transport == "quic") and {
|
||||||
@ -488,9 +482,6 @@ function gen_config_server(node)
|
|||||||
host = node.ws_host or nil,
|
host = node.ws_host or nil,
|
||||||
path = node.ws_path
|
path = node.ws_path
|
||||||
} or nil,
|
} or nil,
|
||||||
httpSettings = (node.transport == "h2") and {
|
|
||||||
path = node.h2_path, host = node.h2_host
|
|
||||||
} or nil,
|
|
||||||
dsSettings = (node.transport == "ds") and {
|
dsSettings = (node.transport == "ds") and {
|
||||||
path = node.ds_path
|
path = node.ds_path
|
||||||
} or nil,
|
} or nil,
|
||||||
@ -572,20 +563,23 @@ function gen_config(var)
|
|||||||
local local_http_username = var["-local_http_username"]
|
local local_http_username = var["-local_http_username"]
|
||||||
local local_http_password = var["-local_http_password"]
|
local local_http_password = var["-local_http_password"]
|
||||||
local dns_listen_port = var["-dns_listen_port"]
|
local dns_listen_port = var["-dns_listen_port"]
|
||||||
local dns_query_strategy = var["-dns_query_strategy"]
|
local dns_cache = var["-dns_cache"]
|
||||||
|
local direct_dns_query_strategy = var["-direct_dns_query_strategy"]
|
||||||
local remote_dns_tcp_server = var["-remote_dns_tcp_server"]
|
local remote_dns_tcp_server = var["-remote_dns_tcp_server"]
|
||||||
local remote_dns_tcp_port = var["-remote_dns_tcp_port"]
|
local remote_dns_tcp_port = var["-remote_dns_tcp_port"]
|
||||||
local remote_dns_doh_url = var["-remote_dns_doh_url"]
|
local remote_dns_doh_url = var["-remote_dns_doh_url"]
|
||||||
local remote_dns_doh_host = var["-remote_dns_doh_host"]
|
local remote_dns_doh_host = var["-remote_dns_doh_host"]
|
||||||
local remote_dns_doh_ip = var["-remote_dns_doh_ip"]
|
local remote_dns_doh_ip = var["-remote_dns_doh_ip"]
|
||||||
local remote_dns_doh_port = var["-remote_dns_doh_port"]
|
local remote_dns_doh_port = var["-remote_dns_doh_port"]
|
||||||
local dns_cache = var["-dns_cache"]
|
local remote_dns_client_ip = var["-remote_dns_client_ip"]
|
||||||
local dns_client_ip = var["-dns_client_ip"]
|
local remote_dns_fake = var["-remote_dns_fake"]
|
||||||
|
local remote_dns_query_strategy = var["-remote_dns_query_strategy"]
|
||||||
local dns_socks_address = var["-dns_socks_address"]
|
local dns_socks_address = var["-dns_socks_address"]
|
||||||
local dns_socks_port = var["-dns_socks_port"]
|
local dns_socks_port = var["-dns_socks_port"]
|
||||||
local loglevel = var["-loglevel"] or "warning"
|
local loglevel = var["-loglevel"] or "warning"
|
||||||
|
|
||||||
local dns = nil
|
local dns = nil
|
||||||
|
local fakedns = nil
|
||||||
local routing = nil
|
local routing = nil
|
||||||
local observatory = nil
|
local observatory = nil
|
||||||
local inbounds = {}
|
local inbounds = {}
|
||||||
@ -1141,12 +1135,13 @@ function gen_config(var)
|
|||||||
disableFallback = true,
|
disableFallback = true,
|
||||||
disableFallbackIfMatch = true,
|
disableFallbackIfMatch = true,
|
||||||
servers = {},
|
servers = {},
|
||||||
clientIp = (dns_client_ip and dns_client_ip ~= "") and dns_client_ip or nil,
|
clientIp = (remote_dns_client_ip and remote_dns_client_ip ~= "") and remote_dns_client_ip or nil,
|
||||||
queryStrategy = (dns_query_strategy and dns_query_strategy ~= "") and dns_query_strategy or "UseIPv4"
|
queryStrategy = "UseIP"
|
||||||
}
|
}
|
||||||
|
|
||||||
local _remote_dns = {
|
local _remote_dns = {
|
||||||
--_flag = "remote",
|
_flag = "remote",
|
||||||
|
queryStrategy = (remote_dns_query_strategy and remote_dns_query_strategy ~= "") and remote_dns_query_strategy or "UseIPv4",
|
||||||
address = "tcp://" .. remote_dns_tcp_server .. ":" .. tonumber(remote_dns_tcp_port) or 53
|
address = "tcp://" .. remote_dns_tcp_server .. ":" .. tonumber(remote_dns_tcp_port) or 53
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1162,6 +1157,31 @@ function gen_config(var)
|
|||||||
|
|
||||||
table.insert(dns.servers, _remote_dns)
|
table.insert(dns.servers, _remote_dns)
|
||||||
|
|
||||||
|
if remote_dns_fake then
|
||||||
|
fakedns = {}
|
||||||
|
local fakedns4 = {
|
||||||
|
ipPool = "198.18.0.0/15",
|
||||||
|
poolSize = 65535
|
||||||
|
}
|
||||||
|
local fakedns6 = {
|
||||||
|
ipPool = "fc00::/18",
|
||||||
|
poolSize = 65535
|
||||||
|
}
|
||||||
|
if remote_dns_query_strategy == "UseIP" then
|
||||||
|
table.insert(fakedns, fakedns4)
|
||||||
|
table.insert(fakedns, fakedns6)
|
||||||
|
elseif remote_dns_query_strategy == "UseIPv4" then
|
||||||
|
table.insert(fakedns, fakedns4)
|
||||||
|
elseif remote_dns_query_strategy == "UseIPv6" then
|
||||||
|
table.insert(fakedns, fakedns6)
|
||||||
|
end
|
||||||
|
local _remote_fakedns = {
|
||||||
|
_flag = "remote_fakedns",
|
||||||
|
address = "fakedns",
|
||||||
|
}
|
||||||
|
table.insert(dns.servers, 1, _remote_fakedns)
|
||||||
|
end
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
local default_dns_flag = "remote"
|
local default_dns_flag = "remote"
|
||||||
if (not COMMON.default_balancer_tag and not COMMON.default_outbound_tag) or COMMON.default_outbound_tag == "direct" then
|
if (not COMMON.default_balancer_tag and not COMMON.default_outbound_tag) or COMMON.default_outbound_tag == "direct" then
|
||||||
@ -1172,10 +1192,15 @@ function gen_config(var)
|
|||||||
local dns_servers = nil
|
local dns_servers = nil
|
||||||
for index, value in ipairs(dns.servers) do
|
for index, value in ipairs(dns.servers) do
|
||||||
if not dns_servers and value["_flag"] == default_dns_flag then
|
if not dns_servers and value["_flag"] == default_dns_flag then
|
||||||
|
if value["_flag"] == "remote" and remote_dns_fake then
|
||||||
|
value["_flag"] = "default"
|
||||||
|
break
|
||||||
|
end
|
||||||
dns_servers = {
|
dns_servers = {
|
||||||
_flag = "default",
|
_flag = "default",
|
||||||
address = value.address,
|
address = value.address,
|
||||||
port = value.port
|
port = value.port,
|
||||||
|
queryStrategy = value.queryStrategy
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
@ -1317,6 +1342,7 @@ function gen_config(var)
|
|||||||
},
|
},
|
||||||
-- DNS
|
-- DNS
|
||||||
dns = dns,
|
dns = dns,
|
||||||
|
fakedns = fakedns,
|
||||||
-- 传入连接
|
-- 传入连接
|
||||||
inbounds = inbounds,
|
inbounds = inbounds,
|
||||||
-- 传出连接
|
-- 传出连接
|
||||||
@ -1371,7 +1397,7 @@ function gen_config(var)
|
|||||||
protocol = "freedom",
|
protocol = "freedom",
|
||||||
tag = "direct",
|
tag = "direct",
|
||||||
settings = {
|
settings = {
|
||||||
domainStrategy = (dns_query_strategy and dns_query_strategy ~= "") and dns_query_strategy or "UseIPv4"
|
domainStrategy = (direct_dns_query_strategy and direct_dns_query_strategy ~= "") and direct_dns_query_strategy or "UseIP"
|
||||||
},
|
},
|
||||||
streamSettings = {
|
streamSettings = {
|
||||||
sockopt = {
|
sockopt = {
|
||||||
|
@ -95,11 +95,15 @@ local api = require "luci.passwall.api"
|
|||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error("备份失败!");
|
throw new Error("备份失败!");
|
||||||
}
|
}
|
||||||
return response.blob();
|
const filename = response.headers.get("X-Backup-Filename");
|
||||||
|
if (!filename) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return response.blob().then(blob => ({ blob, filename }));
|
||||||
})
|
})
|
||||||
.then(blob => {
|
.then(result => {
|
||||||
const date = new Date().toISOString().slice(0, 10).replace(/-/g, '');
|
if (!result) return;
|
||||||
const filename = `passwall-${date}-backup.tar.gz`;
|
const { blob, filename } = result;
|
||||||
const url = window.URL.createObjectURL(blob);
|
const url = window.URL.createObjectURL(blob);
|
||||||
const a = document.createElement("a");
|
const a = document.createElement("a");
|
||||||
a.href = url;
|
a.href = url;
|
||||||
|
@ -810,16 +810,22 @@ local api = require "luci.passwall.api"
|
|||||||
}
|
}
|
||||||
|
|
||||||
queryParam.type = queryParam.type.toLowerCase();
|
queryParam.type = queryParam.type.toLowerCase();
|
||||||
if (queryParam.type === "kcp" || queryParam.type === "mkcp")
|
if (queryParam.type === "kcp" || queryParam.type === "mkcp") {
|
||||||
queryParam.type = "mkcp"
|
queryParam.type = "mkcp";
|
||||||
if (queryParam.type === "h2" || queryParam.type === "http")
|
}
|
||||||
queryParam.type = "h2"
|
if (queryParam.type === "h2" || queryParam.type === "http") {
|
||||||
|
queryParam.type = "http";
|
||||||
|
}
|
||||||
if (dom_prefix == "singbox_" && queryParam.type === "raw") {
|
if (dom_prefix == "singbox_" && queryParam.type === "raw") {
|
||||||
queryParam.type = "tcp";
|
queryParam.type = "tcp";
|
||||||
} else if (dom_prefix == "xray_" && queryParam.type === "tcp") {
|
} else if (dom_prefix == "xray_" && queryParam.type === "tcp") {
|
||||||
queryParam.type = "raw";
|
queryParam.type = "raw";
|
||||||
}
|
}
|
||||||
|
if (dom_prefix == "xray_" && queryParam.type === "http") {
|
||||||
|
opt.set(dom_prefix + 'transport', "xhttp");
|
||||||
|
} else {
|
||||||
opt.set(dom_prefix + 'transport', queryParam.type);
|
opt.set(dom_prefix + 'transport', queryParam.type);
|
||||||
|
}
|
||||||
if (queryParam.type === "raw" || queryParam.type === "tcp") {
|
if (queryParam.type === "raw" || queryParam.type === "tcp") {
|
||||||
opt.set(dom_prefix + 'tcp_guise', queryParam.headerType || "none");
|
opt.set(dom_prefix + 'tcp_guise', queryParam.headerType || "none");
|
||||||
if (queryParam.headerType && queryParam.headerType != "none") {
|
if (queryParam.headerType && queryParam.headerType != "none") {
|
||||||
@ -848,8 +854,14 @@ local api = require "luci.passwall.api"
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (queryParam.type === "h2" || queryParam.type === "http") {
|
} else if (queryParam.type === "h2" || queryParam.type === "http") {
|
||||||
opt.set(dom_prefix + 'h2_host', queryParam.host || "");
|
if (dom_prefix == "xray_") {
|
||||||
opt.set(dom_prefix + 'h2_path', queryParam.path || "");
|
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
||||||
|
opt.set(dom_prefix + 'xhttp_host', queryParam.host || "");
|
||||||
|
opt.set(dom_prefix + 'xhttp_path', queryParam.path || "");
|
||||||
|
} else {
|
||||||
|
opt.set(dom_prefix + 'http_host', queryParam.host || "");
|
||||||
|
opt.set(dom_prefix + 'http_path', queryParam.path || "");
|
||||||
|
}
|
||||||
} else if (queryParam.type === "quic") {
|
} else if (queryParam.type === "quic") {
|
||||||
opt.set(dom_prefix + 'quic_guise', queryParam.headerType || "none");
|
opt.set(dom_prefix + 'quic_guise', queryParam.headerType || "none");
|
||||||
opt.set(dom_prefix + 'quic_security', queryParam.quicSecurity);
|
opt.set(dom_prefix + 'quic_security', queryParam.quicSecurity);
|
||||||
@ -925,16 +937,22 @@ local api = require "luci.passwall.api"
|
|||||||
opt.set(dom_prefix + 'password', decodeURIComponent(password));
|
opt.set(dom_prefix + 'password', decodeURIComponent(password));
|
||||||
|
|
||||||
queryParam.type = queryParam.type.toLowerCase();
|
queryParam.type = queryParam.type.toLowerCase();
|
||||||
if (queryParam.type === "kcp" || queryParam.type === "mkcp")
|
if (queryParam.type === "kcp" || queryParam.type === "mkcp") {
|
||||||
queryParam.type = "mkcp"
|
queryParam.type = "mkcp";
|
||||||
if (queryParam.type === "h2" || queryParam.type === "http")
|
}
|
||||||
queryParam.type = "h2"
|
if (queryParam.type === "h2" || queryParam.type === "http") {
|
||||||
|
queryParam.type = "http";
|
||||||
|
}
|
||||||
if (dom_prefix == "singbox_" && queryParam.type === "raw") {
|
if (dom_prefix == "singbox_" && queryParam.type === "raw") {
|
||||||
queryParam.type = "tcp";
|
queryParam.type = "tcp";
|
||||||
} else if (dom_prefix == "xray_" && queryParam.type === "tcp") {
|
} else if (dom_prefix == "xray_" && queryParam.type === "tcp") {
|
||||||
queryParam.type = "raw";
|
queryParam.type = "raw";
|
||||||
}
|
}
|
||||||
|
if (dom_prefix == "xray_" && queryParam.type === "http") {
|
||||||
|
opt.set(dom_prefix + 'transport', "xhttp");
|
||||||
|
} else {
|
||||||
opt.set(dom_prefix + 'transport', queryParam.type);
|
opt.set(dom_prefix + 'transport', queryParam.type);
|
||||||
|
}
|
||||||
if (queryParam.type === "raw" || queryParam.type === "tcp") {
|
if (queryParam.type === "raw" || queryParam.type === "tcp") {
|
||||||
opt.set(dom_prefix + 'tcp_guise', queryParam.headerType || "none");
|
opt.set(dom_prefix + 'tcp_guise', queryParam.headerType || "none");
|
||||||
if (queryParam.headerType && queryParam.headerType != "none") {
|
if (queryParam.headerType && queryParam.headerType != "none") {
|
||||||
@ -963,8 +981,14 @@ local api = require "luci.passwall.api"
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (queryParam.type === "h2" || queryParam.type === "http") {
|
} else if (queryParam.type === "h2" || queryParam.type === "http") {
|
||||||
opt.set(dom_prefix + 'h2_host', queryParam.host || "");
|
if (dom_prefix == "xray_") {
|
||||||
opt.set(dom_prefix + 'h2_path', queryParam.path || "");
|
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
||||||
|
opt.set(dom_prefix + 'xhttp_host', queryParam.host || "");
|
||||||
|
opt.set(dom_prefix + 'xhttp_path', queryParam.path || "");
|
||||||
|
} else {
|
||||||
|
opt.set(dom_prefix + 'http_host', queryParam.host || "");
|
||||||
|
opt.set(dom_prefix + 'http_path', queryParam.path || "");
|
||||||
|
}
|
||||||
} else if (queryParam.type === "quic") {
|
} else if (queryParam.type === "quic") {
|
||||||
opt.set(dom_prefix + 'quic_guise', queryParam.headerType || "none");
|
opt.set(dom_prefix + 'quic_guise', queryParam.headerType || "none");
|
||||||
opt.set(dom_prefix + 'quic_security', queryParam.quicSecurity);
|
opt.set(dom_prefix + 'quic_security', queryParam.quicSecurity);
|
||||||
@ -1030,7 +1054,14 @@ local api = require "luci.passwall.api"
|
|||||||
} else if (dom_prefix == "xray_" && ssm.net === "tcp") {
|
} else if (dom_prefix == "xray_" && ssm.net === "tcp") {
|
||||||
ssm.net = "raw";
|
ssm.net = "raw";
|
||||||
}
|
}
|
||||||
|
if (ssm.net === "h2" || ssm.net === "http") {
|
||||||
|
ssm.net = "http";
|
||||||
|
}
|
||||||
|
if (dom_prefix == "xray_" && ssm.net === "http") {
|
||||||
|
opt.set(dom_prefix + 'transport', "xhttp");
|
||||||
|
} else {
|
||||||
opt.set(dom_prefix + 'transport', ssm.net);
|
opt.set(dom_prefix + 'transport', ssm.net);
|
||||||
|
}
|
||||||
if (ssm.net === "raw" || ssm.net === "tcp") {
|
if (ssm.net === "raw" || ssm.net === "tcp") {
|
||||||
opt.set(dom_prefix + 'tcp_guise', (ssm.host && ssm.path) ? "http" : "none");
|
opt.set(dom_prefix + 'tcp_guise', (ssm.host && ssm.path) ? "http" : "none");
|
||||||
if (ssm.host && ssm.path) {
|
if (ssm.host && ssm.path) {
|
||||||
@ -1058,9 +1089,15 @@ local api = require "luci.passwall.api"
|
|||||||
opt.set(dom_prefix + 'ws_earlyDataHeaderName', 'Sec-WebSocket-Protocol');
|
opt.set(dom_prefix + 'ws_earlyDataHeaderName', 'Sec-WebSocket-Protocol');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (ssm.net === "h2") {
|
} else if (ssm.net === "http") {
|
||||||
opt.set(dom_prefix + 'h2_host', ssm.host);
|
if (dom_prefix == "xray_") {
|
||||||
opt.set(dom_prefix + 'h2_path', ssm.path);
|
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
||||||
|
opt.set(dom_prefix + 'xhttp_host', ssm.host || "");
|
||||||
|
opt.set(dom_prefix + 'xhttp_path', ssm.path || "");
|
||||||
|
} else {
|
||||||
|
opt.set(dom_prefix + 'http_host', ssm.host || "");
|
||||||
|
opt.set(dom_prefix + 'http_path', ssm.path || "");
|
||||||
|
}
|
||||||
} else if (ssm.net === "quic") {
|
} else if (ssm.net === "quic") {
|
||||||
opt.set(dom_prefix + 'quic_security', ssm.securty);
|
opt.set(dom_prefix + 'quic_security', ssm.securty);
|
||||||
opt.set(dom_prefix + 'quic_key', ssm.key);
|
opt.set(dom_prefix + 'quic_key', ssm.key);
|
||||||
@ -1134,16 +1171,22 @@ local api = require "luci.passwall.api"
|
|||||||
}
|
}
|
||||||
|
|
||||||
queryParam.type = queryParam.type.toLowerCase();
|
queryParam.type = queryParam.type.toLowerCase();
|
||||||
if (queryParam.type === "kcp" || queryParam.type === "mkcp")
|
if (queryParam.type === "kcp" || queryParam.type === "mkcp") {
|
||||||
queryParam.type = "mkcp"
|
queryParam.type = "mkcp";
|
||||||
if (queryParam.type === "h2" || queryParam.type === "http")
|
}
|
||||||
queryParam.type = "h2"
|
if (queryParam.type === "h2" || queryParam.type === "http") {
|
||||||
|
queryParam.type = "http";
|
||||||
|
}
|
||||||
if (dom_prefix == "singbox_" && queryParam.type === "raw") {
|
if (dom_prefix == "singbox_" && queryParam.type === "raw") {
|
||||||
queryParam.type = "tcp";
|
queryParam.type = "tcp";
|
||||||
} else if (dom_prefix == "xray_" && queryParam.type === "tcp") {
|
} else if (dom_prefix == "xray_" && queryParam.type === "tcp") {
|
||||||
queryParam.type = "raw";
|
queryParam.type = "raw";
|
||||||
}
|
}
|
||||||
|
if (dom_prefix == "xray_" && queryParam.type === "http") {
|
||||||
|
opt.set(dom_prefix + 'transport', "xhttp");
|
||||||
|
} else {
|
||||||
opt.set(dom_prefix + 'transport', queryParam.type);
|
opt.set(dom_prefix + 'transport', queryParam.type);
|
||||||
|
}
|
||||||
if (queryParam.type === "raw" || queryParam.type === "tcp") {
|
if (queryParam.type === "raw" || queryParam.type === "tcp") {
|
||||||
opt.set(dom_prefix + 'tcp_guise', queryParam.headerType || "none");
|
opt.set(dom_prefix + 'tcp_guise', queryParam.headerType || "none");
|
||||||
if (queryParam.headerType && queryParam.headerType != "none") {
|
if (queryParam.headerType && queryParam.headerType != "none") {
|
||||||
@ -1172,8 +1215,14 @@ local api = require "luci.passwall.api"
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (queryParam.type === "h2" || queryParam.type === "http") {
|
} else if (queryParam.type === "h2" || queryParam.type === "http") {
|
||||||
opt.set(dom_prefix + 'h2_host', queryParam.host || "");
|
if (dom_prefix == "xray_") {
|
||||||
opt.set(dom_prefix + 'h2_path', queryParam.path || "");
|
opt.set(dom_prefix + 'xhttp_mode', "stream-one");
|
||||||
|
opt.set(dom_prefix + 'xhttp_host', queryParam.host || "");
|
||||||
|
opt.set(dom_prefix + 'xhttp_path', queryParam.path || "");
|
||||||
|
} else {
|
||||||
|
opt.set(dom_prefix + 'http_host', queryParam.host || "");
|
||||||
|
opt.set(dom_prefix + 'http_path', queryParam.path || "");
|
||||||
|
}
|
||||||
} else if (queryParam.type === "quic") {
|
} else if (queryParam.type === "quic") {
|
||||||
opt.set(dom_prefix + 'quic_guise', queryParam.headerType || "none");
|
opt.set(dom_prefix + 'quic_guise', queryParam.headerType || "none");
|
||||||
opt.set(dom_prefix + 'quic_security', queryParam.quicSecurity);
|
opt.set(dom_prefix + 'quic_security', queryParam.quicSecurity);
|
||||||
|
@ -413,7 +413,7 @@ run_ipt2socks() {
|
|||||||
|
|
||||||
run_singbox() {
|
run_singbox() {
|
||||||
local flag type node tcp_redir_port udp_redir_port socks_address socks_port socks_username socks_password http_address http_port http_username http_password
|
local flag type node tcp_redir_port udp_redir_port socks_address socks_port socks_username socks_password http_address http_port http_username http_password
|
||||||
local dns_listen_port direct_dns_port direct_dns_udp_server direct_dns_tcp_server direct_dns_dot_server remote_dns_protocol remote_dns_udp_server remote_dns_tcp_server remote_dns_doh remote_fakedns remote_dns_query_strategy dns_cache dns_socks_address dns_socks_port
|
local dns_listen_port direct_dns_port direct_dns_udp_server direct_dns_tcp_server direct_dns_dot_server remote_dns_protocol remote_dns_udp_server remote_dns_tcp_server remote_dns_doh remote_dns_client_ip remote_fakedns remote_dns_query_strategy dns_cache dns_socks_address dns_socks_port
|
||||||
local loglevel log_file config_file server_host server_port
|
local loglevel log_file config_file server_host server_port
|
||||||
local _extra_param=""
|
local _extra_param=""
|
||||||
eval_set_val $@
|
eval_set_val $@
|
||||||
@ -469,7 +469,7 @@ run_singbox() {
|
|||||||
direct_dns_port=$(echo ${local_dns} | awk -F '#' '{print $2}')
|
direct_dns_port=$(echo ${local_dns} | awk -F '#' '{print $2}')
|
||||||
fi
|
fi
|
||||||
_extra_param="${_extra_param} -direct_dns_port ${direct_dns_port:-53}"
|
_extra_param="${_extra_param} -direct_dns_port ${direct_dns_port:-53}"
|
||||||
_extra_param="${_extra_param} -direct_dns_query_strategy UseIP"
|
_extra_param="${_extra_param} -direct_dns_query_strategy ${DIRECT_DNS_QUERY_STRATEGY}"
|
||||||
|
|
||||||
[ -n "$remote_dns_query_strategy" ] && _extra_param="${_extra_param} -remote_dns_query_strategy ${remote_dns_query_strategy}"
|
[ -n "$remote_dns_query_strategy" ] && _extra_param="${_extra_param} -remote_dns_query_strategy ${remote_dns_query_strategy}"
|
||||||
case "$remote_dns_protocol" in
|
case "$remote_dns_protocol" in
|
||||||
@ -486,6 +486,7 @@ run_singbox() {
|
|||||||
_extra_param="${_extra_param} -remote_dns_port ${_doh_port} -remote_dns_doh_url ${_doh_url} -remote_dns_doh_host ${_doh_host}"
|
_extra_param="${_extra_param} -remote_dns_port ${_doh_port} -remote_dns_doh_url ${_doh_url} -remote_dns_doh_host ${_doh_host}"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
[ -n "$remote_dns_client_ip" ] && _extra_param="${_extra_param} -remote_dns_client_ip ${remote_dns_client_ip}"
|
||||||
[ "$remote_fakedns" = "1" ] && _extra_param="${_extra_param} -remote_dns_fake 1"
|
[ "$remote_fakedns" = "1" ] && _extra_param="${_extra_param} -remote_dns_fake 1"
|
||||||
_extra_param="${_extra_param} -tcp_proxy_way $tcp_proxy_way"
|
_extra_param="${_extra_param} -tcp_proxy_way $tcp_proxy_way"
|
||||||
lua $UTIL_SINGBOX gen_config ${_extra_param} > $config_file
|
lua $UTIL_SINGBOX gen_config ${_extra_param} > $config_file
|
||||||
@ -494,7 +495,7 @@ run_singbox() {
|
|||||||
|
|
||||||
run_xray() {
|
run_xray() {
|
||||||
local flag type node tcp_redir_port udp_redir_port socks_address socks_port socks_username socks_password http_address http_port http_username http_password
|
local flag type node tcp_redir_port udp_redir_port socks_address socks_port socks_username socks_password http_address http_port http_username http_password
|
||||||
local dns_listen_port remote_dns_udp_server remote_dns_tcp_server remote_dns_doh dns_client_ip dns_query_strategy dns_cache dns_socks_address dns_socks_port
|
local dns_listen_port remote_dns_udp_server remote_dns_tcp_server remote_dns_doh remote_dns_client_ip remote_fakedns remote_dns_query_strategy dns_cache dns_socks_address dns_socks_port
|
||||||
local loglevel log_file config_file server_host server_port
|
local loglevel log_file config_file server_host server_port
|
||||||
local _extra_param=""
|
local _extra_param=""
|
||||||
eval_set_val $@
|
eval_set_val $@
|
||||||
@ -522,8 +523,10 @@ run_xray() {
|
|||||||
[ -n "$http_username" ] && [ -n "$http_password" ] && _extra_param="${_extra_param} -local_http_username $http_username -local_http_password $http_password"
|
[ -n "$http_username" ] && [ -n "$http_password" ] && _extra_param="${_extra_param} -local_http_username $http_username -local_http_password $http_password"
|
||||||
[ -n "$dns_socks_address" ] && [ -n "$dns_socks_port" ] && _extra_param="${_extra_param} -dns_socks_address ${dns_socks_address} -dns_socks_port ${dns_socks_port}"
|
[ -n "$dns_socks_address" ] && [ -n "$dns_socks_port" ] && _extra_param="${_extra_param} -dns_socks_address ${dns_socks_address} -dns_socks_port ${dns_socks_port}"
|
||||||
[ -n "$dns_listen_port" ] && _extra_param="${_extra_param} -dns_listen_port ${dns_listen_port}"
|
[ -n "$dns_listen_port" ] && _extra_param="${_extra_param} -dns_listen_port ${dns_listen_port}"
|
||||||
[ -n "$dns_query_strategy" ] && _extra_param="${_extra_param} -dns_query_strategy ${dns_query_strategy}"
|
_extra_param="${_extra_param} -direct_dns_query_strategy ${DIRECT_DNS_QUERY_STRATEGY}"
|
||||||
[ -n "$dns_client_ip" ] && _extra_param="${_extra_param} -dns_client_ip ${dns_client_ip}"
|
[ -n "$remote_dns_query_strategy" ] && _extra_param="${_extra_param} -remote_dns_query_strategy ${remote_dns_query_strategy}"
|
||||||
|
[ -n "$remote_dns_client_ip" ] && _extra_param="${_extra_param} -remote_dns_client_ip ${remote_dns_client_ip}"
|
||||||
|
[ "$remote_fakedns" = "1" ] && _extra_param="${_extra_param} -remote_dns_fake 1"
|
||||||
[ -n "$dns_cache" ] && _extra_param="${_extra_param} -dns_cache ${dns_cache}"
|
[ -n "$dns_cache" ] && _extra_param="${_extra_param} -dns_cache ${dns_cache}"
|
||||||
[ -n "${remote_dns_tcp_server}" ] && {
|
[ -n "${remote_dns_tcp_server}" ] && {
|
||||||
local _dns=$(get_first_dns remote_dns_tcp_server 53 | sed 's/#/:/g')
|
local _dns=$(get_first_dns remote_dns_tcp_server 53 | sed 's/#/:/g')
|
||||||
@ -874,8 +877,10 @@ run_redir() {
|
|||||||
[ "${DNS_MODE}" = "sing-box" ] && {
|
[ "${DNS_MODE}" = "sing-box" ] && {
|
||||||
resolve_dns=1
|
resolve_dns=1
|
||||||
config_file=$(echo $config_file | sed "s/.json/_DNS.json/g")
|
config_file=$(echo $config_file | sed "s/.json/_DNS.json/g")
|
||||||
_args="${_args} remote_dns_query_strategy=${DNS_QUERY_STRATEGY}"
|
_args="${_args} remote_dns_query_strategy=${REMOTE_DNS_QUERY_STRATEGY}"
|
||||||
DNSMASQ_FILTER_PROXY_IPV6=0
|
DNSMASQ_FILTER_PROXY_IPV6=0
|
||||||
|
local _remote_dns_client_ip=$(config_t_get global remote_dns_client_ip)
|
||||||
|
[ -n "${_remote_dns_client_ip}" ] && _args="${_args} remote_dns_client_ip=${_remote_dns_client_ip}"
|
||||||
[ "${DNS_CACHE}" == "0" ] && _args="${_args} dns_cache=0"
|
[ "${DNS_CACHE}" == "0" ] && _args="${_args} dns_cache=0"
|
||||||
resolve_dns_port=${dns_listen_port}
|
resolve_dns_port=${dns_listen_port}
|
||||||
_args="${_args} dns_listen_port=${resolve_dns_port}"
|
_args="${_args} dns_listen_port=${resolve_dns_port}"
|
||||||
@ -950,10 +955,10 @@ run_redir() {
|
|||||||
[ "${DNS_MODE}" = "xray" ] && {
|
[ "${DNS_MODE}" = "xray" ] && {
|
||||||
resolve_dns=1
|
resolve_dns=1
|
||||||
config_file=$(echo $config_file | sed "s/.json/_DNS.json/g")
|
config_file=$(echo $config_file | sed "s/.json/_DNS.json/g")
|
||||||
_args="${_args} dns_query_strategy=${DNS_QUERY_STRATEGY}"
|
_args="${_args} remote_dns_query_strategy=${REMOTE_DNS_QUERY_STRATEGY}"
|
||||||
DNSMASQ_FILTER_PROXY_IPV6=0
|
DNSMASQ_FILTER_PROXY_IPV6=0
|
||||||
local _dns_client_ip=$(config_t_get global dns_client_ip)
|
local _remote_dns_client_ip=$(config_t_get global remote_dns_client_ip)
|
||||||
[ -n "${_dns_client_ip}" ] && _args="${_args} dns_client_ip=${_dns_client_ip}"
|
[ -n "${_remote_dns_client_ip}" ] && _args="${_args} remote_dns_client_ip=${_remote_dns_client_ip}"
|
||||||
[ "${DNS_CACHE}" == "0" ] && _args="${_args} dns_cache=0"
|
[ "${DNS_CACHE}" == "0" ] && _args="${_args} dns_cache=0"
|
||||||
resolve_dns_port=${dns_listen_port}
|
resolve_dns_port=${dns_listen_port}
|
||||||
_args="${_args} dns_listen_port=${resolve_dns_port}"
|
_args="${_args} dns_listen_port=${resolve_dns_port}"
|
||||||
@ -965,6 +970,12 @@ run_redir() {
|
|||||||
else
|
else
|
||||||
resolve_dns_log="Xray DNS(127.0.0.1#${resolve_dns_port}) -> tcp://${REMOTE_DNS}"
|
resolve_dns_log="Xray DNS(127.0.0.1#${resolve_dns_port}) -> tcp://${REMOTE_DNS}"
|
||||||
fi
|
fi
|
||||||
|
local remote_fakedns=$(config_t_get global remote_fakedns 0)
|
||||||
|
[ "${remote_fakedns}" = "1" ] && {
|
||||||
|
fakedns=1
|
||||||
|
_args="${_args} remote_fakedns=1"
|
||||||
|
resolve_dns_log="${resolve_dns_log} + FakeDNS"
|
||||||
|
}
|
||||||
dns_listen_port=$(expr $dns_listen_port + 1)
|
dns_listen_port=$(expr $dns_listen_port + 1)
|
||||||
}
|
}
|
||||||
run_xray flag=$_flag node=$node tcp_redir_port=$local_port config_file=$config_file log_file=$log_file ${_args}
|
run_xray flag=$_flag node=$node tcp_redir_port=$local_port config_file=$config_file log_file=$log_file ${_args}
|
||||||
@ -1395,32 +1406,6 @@ start_dns() {
|
|||||||
TUN_DNS="127.0.0.1#${dns_listen_port}"
|
TUN_DNS="127.0.0.1#${dns_listen_port}"
|
||||||
[ "${resolve_dns}" == "1" ] && TUN_DNS="127.0.0.1#${resolve_dns_port}"
|
[ "${resolve_dns}" == "1" ] && TUN_DNS="127.0.0.1#${resolve_dns_port}"
|
||||||
|
|
||||||
[ "${DNS_SHUNT}" = "smartdns" ] && {
|
|
||||||
if command -v smartdns > /dev/null 2>&1; then
|
|
||||||
rm -rf $TMP_PATH2/dnsmasq_default*
|
|
||||||
local group_domestic=$(config_t_get global group_domestic)
|
|
||||||
local smartdns_remote_dns=$(config_t_get global smartdns_remote_dns)
|
|
||||||
if [ -n "${smartdns_remote_dns}" -a "${smartdns_remote_dns}" != "nil" ]; then
|
|
||||||
smartdns_remote_dns=$(echo ${smartdns_remote_dns} | tr -s ' ' '|')
|
|
||||||
else
|
|
||||||
smartdns_remote_dns="tcp://1.1.1.1"
|
|
||||||
fi
|
|
||||||
lua $APP_PATH/helper_smartdns_add.lua -FLAG "default" -SMARTDNS_CONF "/tmp/etc/smartdns/$CONFIG.conf" \
|
|
||||||
-LOCAL_GROUP ${group_domestic:-nil} -REMOTE_GROUP "passwall_proxy" -REMOTE_PROXY_SERVER ${TCP_SOCKS_server} -USE_DEFAULT_DNS "${USE_DEFAULT_DNS:-direct}" \
|
|
||||||
-TUN_DNS ${smartdns_remote_dns} \
|
|
||||||
-USE_DIRECT_LIST "${USE_DIRECT_LIST}" -USE_PROXY_LIST "${USE_PROXY_LIST}" -USE_BLOCK_LIST "${USE_BLOCK_LIST}" -USE_GFW_LIST "${USE_GFW_LIST}" -CHN_LIST "${CHN_LIST}" \
|
|
||||||
-TCP_NODE ${TCP_NODE} -DEFAULT_PROXY_MODE "${TCP_PROXY_MODE}" -NO_PROXY_IPV6 ${FILTER_PROXY_IPV6:-0} -NFTFLAG ${nftflag:-0} \
|
|
||||||
-NO_LOGIC_LOG ${NO_LOGIC_LOG:-0}
|
|
||||||
source $APP_PATH/helper_smartdns.sh restart
|
|
||||||
echolog " - 域名解析:使用SmartDNS,请确保配置正常。"
|
|
||||||
return
|
|
||||||
else
|
|
||||||
DNS_SHUNT="dnsmasq"
|
|
||||||
echolog " * 未安装SmartDNS,默认使用Dnsmasq进行域名解析!"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
rm -rf $TMP_PATH2/smartdns_default*
|
|
||||||
|
|
||||||
case "$DNS_MODE" in
|
case "$DNS_MODE" in
|
||||||
dns2socks)
|
dns2socks)
|
||||||
local dns2socks_socks_server=$(echo $(config_t_get global socks_server 127.0.0.1:1080) | sed "s/#/:/g")
|
local dns2socks_socks_server=$(echo $(config_t_get global socks_server 127.0.0.1:1080) | sed "s/#/:/g")
|
||||||
@ -1435,8 +1420,10 @@ start_dns() {
|
|||||||
local log_file=/dev/null
|
local log_file=/dev/null
|
||||||
local _args="type=$DNS_MODE config_file=$config_file log_file=$log_file"
|
local _args="type=$DNS_MODE config_file=$config_file log_file=$log_file"
|
||||||
[ "${DNS_CACHE}" == "0" ] && _args="${_args} dns_cache=0"
|
[ "${DNS_CACHE}" == "0" ] && _args="${_args} dns_cache=0"
|
||||||
_args="${_args} remote_dns_query_strategy=${DNS_QUERY_STRATEGY}"
|
_args="${_args} remote_dns_query_strategy=${REMOTE_DNS_QUERY_STRATEGY}"
|
||||||
DNSMASQ_FILTER_PROXY_IPV6=0
|
DNSMASQ_FILTER_PROXY_IPV6=0
|
||||||
|
local _remote_dns_client_ip=$(config_t_get global remote_dns_client_ip)
|
||||||
|
[ -n "${_remote_dns_client_ip}" ] && _args="${_args} remote_dns_client_ip=${_remote_dns_client_ip}"
|
||||||
use_tcp_node_resolve_dns=1
|
use_tcp_node_resolve_dns=1
|
||||||
local v2ray_dns_mode=$(config_t_get global v2ray_dns_mode tcp)
|
local v2ray_dns_mode=$(config_t_get global v2ray_dns_mode tcp)
|
||||||
_args="${_args} dns_listen_port=${dns_listen_port}"
|
_args="${_args} dns_listen_port=${dns_listen_port}"
|
||||||
@ -1468,10 +1455,10 @@ start_dns() {
|
|||||||
local log_file=/dev/null
|
local log_file=/dev/null
|
||||||
local _args="type=$DNS_MODE config_file=$config_file log_file=$log_file"
|
local _args="type=$DNS_MODE config_file=$config_file log_file=$log_file"
|
||||||
[ "${DNS_CACHE}" == "0" ] && _args="${_args} dns_cache=0"
|
[ "${DNS_CACHE}" == "0" ] && _args="${_args} dns_cache=0"
|
||||||
_args="${_args} dns_query_strategy=${DNS_QUERY_STRATEGY}"
|
_args="${_args} remote_dns_query_strategy=${REMOTE_DNS_QUERY_STRATEGY}"
|
||||||
DNSMASQ_FILTER_PROXY_IPV6=0
|
DNSMASQ_FILTER_PROXY_IPV6=0
|
||||||
local _dns_client_ip=$(config_t_get global dns_client_ip)
|
local _remote_dns_client_ip=$(config_t_get global remote_dns_client_ip)
|
||||||
[ -n "${_dns_client_ip}" ] && _args="${_args} dns_client_ip=${_dns_client_ip}"
|
[ -n "${_remote_dns_client_ip}" ] && _args="${_args} remote_dns_client_ip=${_remote_dns_client_ip}"
|
||||||
use_tcp_node_resolve_dns=1
|
use_tcp_node_resolve_dns=1
|
||||||
_args="${_args} dns_listen_port=${dns_listen_port}"
|
_args="${_args} dns_listen_port=${dns_listen_port}"
|
||||||
_args="${_args} remote_dns_tcp_server=${REMOTE_DNS}"
|
_args="${_args} remote_dns_tcp_server=${REMOTE_DNS}"
|
||||||
@ -1534,7 +1521,7 @@ start_dns() {
|
|||||||
echolog " - udp://${TUN_DNS}"
|
echolog " - udp://${TUN_DNS}"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
tcp)
|
||||||
use_tcp_node_resolve_dns=1
|
use_tcp_node_resolve_dns=1
|
||||||
if [ "$DNS_SHUNT" = "chinadns-ng" ] && [ -n "$(first_type chinadns-ng)" ]; then
|
if [ "$DNS_SHUNT" = "chinadns-ng" ] && [ -n "$(first_type chinadns-ng)" ]; then
|
||||||
local china_ng_listen_port=${dns_listen_port}
|
local china_ng_listen_port=${dns_listen_port}
|
||||||
@ -1551,6 +1538,32 @@ start_dns() {
|
|||||||
[ "${use_tcp_node_resolve_dns}" = "1" ] && echolog " * 请确认上游 DNS 支持 TCP/DoT/DoH 查询,如非直连地址,确保 TCP 代理打开,并且已经正确转发!"
|
[ "${use_tcp_node_resolve_dns}" = "1" ] && echolog " * 请确认上游 DNS 支持 TCP/DoT/DoH 查询,如非直连地址,确保 TCP 代理打开,并且已经正确转发!"
|
||||||
[ "${use_udp_node_resolve_dns}" = "1" ] && echolog " * 请确认上游 DNS 支持 UDP 查询并已使用 UDP 节点,如上游 DNS 非直连地址,确保 UDP 代理打开,并且已经正确转发!"
|
[ "${use_udp_node_resolve_dns}" = "1" ] && echolog " * 请确认上游 DNS 支持 UDP 查询并已使用 UDP 节点,如上游 DNS 非直连地址,确保 UDP 代理打开,并且已经正确转发!"
|
||||||
|
|
||||||
|
[ "${DNS_SHUNT}" = "smartdns" ] && {
|
||||||
|
if command -v smartdns > /dev/null 2>&1; then
|
||||||
|
rm -rf $TMP_PATH2/dnsmasq_default*
|
||||||
|
local group_domestic=$(config_t_get global group_domestic)
|
||||||
|
local smartdns_remote_dns=$(config_t_get global smartdns_remote_dns)
|
||||||
|
if [ -n "${smartdns_remote_dns}" -a "${smartdns_remote_dns}" != "nil" ]; then
|
||||||
|
smartdns_remote_dns=$(echo ${smartdns_remote_dns} | tr -s ' ' '|')
|
||||||
|
else
|
||||||
|
smartdns_remote_dns="tcp://1.1.1.1"
|
||||||
|
fi
|
||||||
|
lua $APP_PATH/helper_smartdns_add.lua -FLAG "default" -SMARTDNS_CONF "/tmp/etc/smartdns/$CONFIG.conf" \
|
||||||
|
-LOCAL_GROUP ${group_domestic:-nil} -REMOTE_GROUP "passwall_proxy" -REMOTE_PROXY_SERVER ${TCP_SOCKS_server} -USE_DEFAULT_DNS "${USE_DEFAULT_DNS:-direct}" \
|
||||||
|
-REMOTE_DNS ${smartdns_remote_dns} -DNS_MODE ${DNS_MODE:-socks} -TUN_DNS ${TUN_DNS} -REMOTE_FAKEDNS ${fakedns:-0} \
|
||||||
|
-USE_DIRECT_LIST "${USE_DIRECT_LIST}" -USE_PROXY_LIST "${USE_PROXY_LIST}" -USE_BLOCK_LIST "${USE_BLOCK_LIST}" -USE_GFW_LIST "${USE_GFW_LIST}" -CHN_LIST "${CHN_LIST}" \
|
||||||
|
-TCP_NODE ${TCP_NODE} -DEFAULT_PROXY_MODE "${TCP_PROXY_MODE}" -NO_PROXY_IPV6 ${FILTER_PROXY_IPV6:-0} -NFTFLAG ${nftflag:-0} \
|
||||||
|
-NO_LOGIC_LOG ${NO_LOGIC_LOG:-0}
|
||||||
|
source $APP_PATH/helper_smartdns.sh restart
|
||||||
|
echolog " - 域名解析:使用SmartDNS,请确保配置正常。"
|
||||||
|
return
|
||||||
|
else
|
||||||
|
DNS_SHUNT="dnsmasq"
|
||||||
|
echolog " * 未安装SmartDNS,默认使用Dnsmasq进行域名解析!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
rm -rf $TMP_PATH2/smartdns_default*
|
||||||
|
|
||||||
[ "$DNS_SHUNT" = "chinadns-ng" ] && [ -n "$(first_type chinadns-ng)" ] && {
|
[ "$DNS_SHUNT" = "chinadns-ng" ] && [ -n "$(first_type chinadns-ng)" ] && {
|
||||||
chinadns_ng_min=2024.04.13
|
chinadns_ng_min=2024.04.13
|
||||||
chinadns_ng_now=$(chinadns-ng -V | grep -i "ChinaDNS-NG " | awk '{print $2}')
|
chinadns_ng_now=$(chinadns-ng -V | grep -i "ChinaDNS-NG " | awk '{print $2}')
|
||||||
@ -1590,7 +1603,9 @@ start_dns() {
|
|||||||
[ "$(expr $dnsmasq_version \>= 2.87)" == 0 ] && echolog "Dnsmasq版本低于2.87,有可能无法正常使用!!!"
|
[ "$(expr $dnsmasq_version \>= 2.87)" == 0 ] && echolog "Dnsmasq版本低于2.87,有可能无法正常使用!!!"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local DNSMASQ_TUN_DNS=$(get_first_dns TUN_DNS 53 | sed 's/:/#/g')
|
||||||
local RUN_NEW_DNSMASQ=1
|
local RUN_NEW_DNSMASQ=1
|
||||||
|
RUN_NEW_DNSMASQ=${DNS_REDIRECT}
|
||||||
if [ "${RUN_NEW_DNSMASQ}" == "0" ]; then
|
if [ "${RUN_NEW_DNSMASQ}" == "0" ]; then
|
||||||
#The old logic will be removed in the future.
|
#The old logic will be removed in the future.
|
||||||
#Run a copy dnsmasq instance, DNS hijack that don't need a proxy devices.
|
#Run a copy dnsmasq instance, DNS hijack that don't need a proxy devices.
|
||||||
@ -1608,11 +1623,13 @@ start_dns() {
|
|||||||
#Modify the default dnsmasq service
|
#Modify the default dnsmasq service
|
||||||
lua $APP_PATH/helper_dnsmasq.lua stretch
|
lua $APP_PATH/helper_dnsmasq.lua stretch
|
||||||
lua $APP_PATH/helper_dnsmasq.lua add_rule -FLAG "default" -TMP_DNSMASQ_PATH ${GLOBAL_DNSMASQ_CONF_PATH} -DNSMASQ_CONF_FILE ${GLOBAL_DNSMASQ_CONF} \
|
lua $APP_PATH/helper_dnsmasq.lua add_rule -FLAG "default" -TMP_DNSMASQ_PATH ${GLOBAL_DNSMASQ_CONF_PATH} -DNSMASQ_CONF_FILE ${GLOBAL_DNSMASQ_CONF} \
|
||||||
-DEFAULT_DNS ${DEFAULT_DNS} -LOCAL_DNS ${LOCAL_DNS} -TUN_DNS ${TUN_DNS} \
|
-DEFAULT_DNS ${DEFAULT_DNS} -LOCAL_DNS ${LOCAL_DNS} -TUN_DNS ${DNSMASQ_TUN_DNS} \
|
||||||
-REMOTE_FAKEDNS ${fakedns:-0} -USE_DEFAULT_DNS "${USE_DEFAULT_DNS:-direct}" -CHINADNS_DNS ${china_ng_listen:-0} \
|
-REMOTE_FAKEDNS ${fakedns:-0} -USE_DEFAULT_DNS "${USE_DEFAULT_DNS:-direct}" -CHINADNS_DNS ${china_ng_listen:-0} \
|
||||||
-USE_DIRECT_LIST "${USE_DIRECT_LIST}" -USE_PROXY_LIST "${USE_PROXY_LIST}" -USE_BLOCK_LIST "${USE_BLOCK_LIST}" -USE_GFW_LIST "${USE_GFW_LIST}" -CHN_LIST "${CHN_LIST}" \
|
-USE_DIRECT_LIST "${USE_DIRECT_LIST}" -USE_PROXY_LIST "${USE_PROXY_LIST}" -USE_BLOCK_LIST "${USE_BLOCK_LIST}" -USE_GFW_LIST "${USE_GFW_LIST}" -CHN_LIST "${CHN_LIST}" \
|
||||||
-TCP_NODE ${TCP_NODE} -DEFAULT_PROXY_MODE ${TCP_PROXY_MODE} -NO_PROXY_IPV6 ${DNSMASQ_FILTER_PROXY_IPV6:-0} -NFTFLAG ${nftflag:-0} \
|
-TCP_NODE ${TCP_NODE} -DEFAULT_PROXY_MODE ${TCP_PROXY_MODE} -NO_PROXY_IPV6 ${DNSMASQ_FILTER_PROXY_IPV6:-0} -NFTFLAG ${nftflag:-0} \
|
||||||
-NO_LOGIC_LOG ${NO_LOGIC_LOG:-0}
|
-NO_LOGIC_LOG ${NO_LOGIC_LOG:-0}
|
||||||
|
uci -q add_list dhcp.@dnsmasq[0].addnmount=${GLOBAL_DNSMASQ_CONF_PATH}
|
||||||
|
uci -q commit dhcp
|
||||||
lua $APP_PATH/helper_dnsmasq.lua logic_restart -LOG 1
|
lua $APP_PATH/helper_dnsmasq.lua logic_restart -LOG 1
|
||||||
else
|
else
|
||||||
#Run a copy dnsmasq instance, DNS hijack for that need proxy devices.
|
#Run a copy dnsmasq instance, DNS hijack for that need proxy devices.
|
||||||
@ -1620,7 +1637,7 @@ start_dns() {
|
|||||||
GLOBAL_DNSMASQ_CONF=${GLOBAL_ACL_PATH}/dnsmasq.conf
|
GLOBAL_DNSMASQ_CONF=${GLOBAL_ACL_PATH}/dnsmasq.conf
|
||||||
GLOBAL_DNSMASQ_CONF_PATH=${GLOBAL_ACL_PATH}/dnsmasq.d
|
GLOBAL_DNSMASQ_CONF_PATH=${GLOBAL_ACL_PATH}/dnsmasq.d
|
||||||
lua $APP_PATH/helper_dnsmasq.lua add_rule -FLAG "default" -TMP_DNSMASQ_PATH ${GLOBAL_DNSMASQ_CONF_PATH} -DNSMASQ_CONF_FILE ${GLOBAL_DNSMASQ_CONF} \
|
lua $APP_PATH/helper_dnsmasq.lua add_rule -FLAG "default" -TMP_DNSMASQ_PATH ${GLOBAL_DNSMASQ_CONF_PATH} -DNSMASQ_CONF_FILE ${GLOBAL_DNSMASQ_CONF} \
|
||||||
-LISTEN_PORT ${GLOBAL_DNSMASQ_PORT} -DEFAULT_DNS ${DEFAULT_DNS} -LOCAL_DNS ${LOCAL_DNS} -TUN_DNS ${TUN_DNS} \
|
-LISTEN_PORT ${GLOBAL_DNSMASQ_PORT} -DEFAULT_DNS ${DEFAULT_DNS} -LOCAL_DNS ${LOCAL_DNS} -TUN_DNS ${DNSMASQ_TUN_DNS} \
|
||||||
-REMOTE_FAKEDNS ${fakedns:-0} -USE_DEFAULT_DNS "${USE_DEFAULT_DNS:-direct}" -CHINADNS_DNS ${china_ng_listen:-0} \
|
-REMOTE_FAKEDNS ${fakedns:-0} -USE_DEFAULT_DNS "${USE_DEFAULT_DNS:-direct}" -CHINADNS_DNS ${china_ng_listen:-0} \
|
||||||
-USE_DIRECT_LIST "${USE_DIRECT_LIST}" -USE_PROXY_LIST "${USE_PROXY_LIST}" -USE_BLOCK_LIST "${USE_BLOCK_LIST}" -USE_GFW_LIST "${USE_GFW_LIST}" -CHN_LIST "${CHN_LIST}" \
|
-USE_DIRECT_LIST "${USE_DIRECT_LIST}" -USE_PROXY_LIST "${USE_PROXY_LIST}" -USE_BLOCK_LIST "${USE_BLOCK_LIST}" -USE_GFW_LIST "${USE_GFW_LIST}" -CHN_LIST "${CHN_LIST}" \
|
||||||
-TCP_NODE ${TCP_NODE} -DEFAULT_PROXY_MODE ${TCP_PROXY_MODE} -NO_PROXY_IPV6 ${DNSMASQ_FILTER_PROXY_IPV6:-0} -NFTFLAG ${nftflag:-0} \
|
-TCP_NODE ${TCP_NODE} -DEFAULT_PROXY_MODE ${TCP_PROXY_MODE} -NO_PROXY_IPV6 ${DNSMASQ_FILTER_PROXY_IPV6:-0} -NFTFLAG ${nftflag:-0} \
|
||||||
@ -1687,8 +1704,7 @@ acl_app() {
|
|||||||
socks_port=11100
|
socks_port=11100
|
||||||
redir_port=11200
|
redir_port=11200
|
||||||
dns_port=11300
|
dns_port=11300
|
||||||
dnsmasq_port=11400
|
dnsmasq_port=${GLOBAL_DNSMASQ_PORT:-11400}
|
||||||
[ -n "${GLOBAL_DNSMASQ_PORT}" ] && dnsmasq_port=$(get_new_port $GLOBAL_DNSMASQ_PORT)
|
|
||||||
chinadns_port=11500
|
chinadns_port=11500
|
||||||
for item in $items; do
|
for item in $items; do
|
||||||
sid=$(uci -q show "${CONFIG}.${item}" | grep "=acl_rule" | awk -F '=' '{print $1}' | awk -F '.' '{print $2}')
|
sid=$(uci -q show "${CONFIG}.${item}" | grep "=acl_rule" | awk -F '=' '{print $1}' | awk -F '.' '{print $2}')
|
||||||
@ -1696,6 +1712,7 @@ acl_app() {
|
|||||||
|
|
||||||
[ "$enabled" = "1" ] || continue
|
[ "$enabled" = "1" ] || continue
|
||||||
|
|
||||||
|
if [ -n "${sources}" ]; then
|
||||||
for s in $sources; do
|
for s in $sources; do
|
||||||
local s2
|
local s2
|
||||||
is_iprange=$(lua_api "iprange(\"${s}\")")
|
is_iprange=$(lua_api "iprange(\"${s}\")")
|
||||||
@ -1714,11 +1731,13 @@ acl_app() {
|
|||||||
[ -n "${s2}" ] && source_list="${source_list}\n${s2}"
|
[ -n "${s2}" ] && source_list="${source_list}\n${s2}"
|
||||||
unset s2
|
unset s2
|
||||||
done
|
done
|
||||||
|
else
|
||||||
|
source_list="any"
|
||||||
|
fi
|
||||||
|
|
||||||
local acl_path=${TMP_ACL_PATH}/$sid
|
local acl_path=${TMP_ACL_PATH}/$sid
|
||||||
mkdir -p ${acl_path}
|
mkdir -p ${acl_path}
|
||||||
|
[ -n "${source_list}" ] && echo -e "${source_list}" | sed '/^$/d' > ${acl_path}/source_list
|
||||||
[ ! -z "${source_list}" ] && echo -e "${source_list}" | sed '/^$/d' > ${acl_path}/source_list
|
|
||||||
|
|
||||||
use_global_config=${use_global_config:-0}
|
use_global_config=${use_global_config:-0}
|
||||||
[ "${use_global_config}" = "1" ] && {
|
[ "${use_global_config}" = "1" ] && {
|
||||||
@ -1752,7 +1771,6 @@ acl_app() {
|
|||||||
|
|
||||||
[ -n "$tcp_node" ] && {
|
[ -n "$tcp_node" ] && {
|
||||||
local GLOBAL_TCP_NODE=$(get_cache_var "ACL_GLOBAL_TCP_node")
|
local GLOBAL_TCP_NODE=$(get_cache_var "ACL_GLOBAL_TCP_node")
|
||||||
echolog "${GLOBAL_TCP_NODE}"
|
|
||||||
[ -n "${GLOBAL_TCP_NODE}" ] && GLOBAL_TCP_redir_port=$(get_cache_var "ACL_GLOBAL_TCP_redir_port")
|
[ -n "${GLOBAL_TCP_NODE}" ] && GLOBAL_TCP_redir_port=$(get_cache_var "ACL_GLOBAL_TCP_redir_port")
|
||||||
if [ "$tcp_node" = "default" ]; then
|
if [ "$tcp_node" = "default" ]; then
|
||||||
if [ -n "${GLOBAL_TCP_NODE}" ]; then
|
if [ -n "${GLOBAL_TCP_NODE}" ]; then
|
||||||
@ -1785,7 +1803,9 @@ acl_app() {
|
|||||||
local type=${dns_mode}
|
local type=${dns_mode}
|
||||||
[ "${dns_mode}" = "sing-box" ] && type="singbox"
|
[ "${dns_mode}" = "sing-box" ] && type="singbox"
|
||||||
dnsmasq_filter_proxy_ipv6=0
|
dnsmasq_filter_proxy_ipv6=0
|
||||||
run_${type} flag=acl_${sid} type=$dns_mode dns_socks_address=127.0.0.1 dns_socks_port=$socks_port dns_listen_port=${_dns_port} remote_dns_protocol=${v2ray_dns_mode} remote_dns_tcp_server=${remote_dns} remote_dns_doh="${remote_dns_doh}" remote_dns_query_strategy=${DNS_QUERY_STRATEGY} dns_client_ip=${dns_client_ip} dns_query_strategy=${DNS_QUERY_STRATEGY} config_file=$config_file
|
remote_dns_query_strategy="UseIP"
|
||||||
|
[ "$filter_proxy_ipv6" = "1" ] && remote_dns_query_strategy="UseIPv4"
|
||||||
|
run_${type} flag=acl_${sid} type=$dns_mode dns_socks_address=127.0.0.1 dns_socks_port=$socks_port dns_listen_port=${_dns_port} remote_dns_protocol=${v2ray_dns_mode} remote_dns_tcp_server=${remote_dns} remote_dns_doh="${remote_dns_doh}" remote_dns_query_strategy=${remote_dns_query_strategy} remote_dns_client_ip=${remote_dns_client_ip} config_file=$config_file
|
||||||
fi
|
fi
|
||||||
set_cache_var "node_${tcp_node}_$(echo -n "${remote_dns}" | md5sum | cut -d " " -f1)" "${_dns_port}"
|
set_cache_var "node_${tcp_node}_$(echo -n "${remote_dns}" | md5sum | cut -d " " -f1)" "${_dns_port}"
|
||||||
}
|
}
|
||||||
@ -1879,8 +1899,10 @@ acl_app() {
|
|||||||
config_file=$(echo $config_file | sed "s/TCP_/DNS_${_dns_port}_TCP_/g")
|
config_file=$(echo $config_file | sed "s/TCP_/DNS_${_dns_port}_TCP_/g")
|
||||||
remote_dns_doh=${remote_dns}
|
remote_dns_doh=${remote_dns}
|
||||||
dnsmasq_filter_proxy_ipv6=0
|
dnsmasq_filter_proxy_ipv6=0
|
||||||
|
remote_dns_query_strategy="UseIP"
|
||||||
|
[ "$filter_proxy_ipv6" = "1" ] && remote_dns_query_strategy="UseIPv4"
|
||||||
[ "$dns_mode" = "xray" ] && [ "$v2ray_dns_mode" = "tcp+doh" ] && remote_dns_doh=${remote_dns_doh:-https://1.1.1.1/dns-query}
|
[ "$dns_mode" = "xray" ] && [ "$v2ray_dns_mode" = "tcp+doh" ] && remote_dns_doh=${remote_dns_doh:-https://1.1.1.1/dns-query}
|
||||||
_extra_param="dns_listen_port=${_dns_port} remote_dns_protocol=${v2ray_dns_mode} remote_dns_tcp_server=${remote_dns} remote_dns_doh=${remote_dns_doh} remote_dns_query_strategy=${DNS_QUERY_STRATEGY} dns_client_ip=${dns_client_ip} dns_query_strategy=${DNS_QUERY_STRATEGY}"
|
_extra_param="dns_listen_port=${_dns_port} remote_dns_protocol=${v2ray_dns_mode} remote_dns_tcp_server=${remote_dns} remote_dns_doh=${remote_dns_doh} remote_dns_query_strategy=${remote_dns_query_strategy} remote_dns_client_ip=${remote_dns_client_ip}"
|
||||||
fi
|
fi
|
||||||
[ -n "$udp_node" ] && ([ "$udp_node" = "tcp" ] || [ "$udp_node" = "$tcp_node" ]) && {
|
[ -n "$udp_node" ] && ([ "$udp_node" = "tcp" ] || [ "$udp_node" = "$tcp_node" ]) && {
|
||||||
config_file=$(echo $config_file | sed "s/TCP_/TCP_UDP_/g")
|
config_file=$(echo $config_file | sed "s/TCP_/TCP_UDP_/g")
|
||||||
@ -1959,7 +1981,7 @@ acl_app() {
|
|||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
unset enabled sid remarks sources interface tcp_no_redir_ports udp_no_redir_ports use_global_config tcp_node udp_node use_direct_list use_proxy_list use_block_list use_gfw_list chn_list tcp_proxy_mode udp_proxy_mode filter_proxy_ipv6 dns_mode remote_dns v2ray_dns_mode remote_dns_doh dns_client_ip
|
unset enabled sid remarks sources interface tcp_no_redir_ports udp_no_redir_ports use_global_config tcp_node udp_node use_direct_list use_proxy_list use_block_list use_gfw_list chn_list tcp_proxy_mode udp_proxy_mode filter_proxy_ipv6 dns_mode remote_dns v2ray_dns_mode remote_dns_doh remote_dns_client_ip
|
||||||
unset _ip _mac _iprange _ipset _ip_or_mac source_list tcp_port udp_port config_file _extra_param
|
unset _ip _mac _iprange _ipset _ip_or_mac source_list tcp_port udp_port config_file _extra_param
|
||||||
unset _china_ng_listen _chinadns_local_dns _direct_dns_mode chinadns_ng_default_tag dnsmasq_filter_proxy_ipv6
|
unset _china_ng_listen _chinadns_local_dns _direct_dns_mode chinadns_ng_default_tag dnsmasq_filter_proxy_ipv6
|
||||||
done
|
done
|
||||||
@ -1984,7 +2006,7 @@ start() {
|
|||||||
USE_TABLES="nftables"
|
USE_TABLES="nftables"
|
||||||
nftflag=1
|
nftflag=1
|
||||||
config_t_set global_forwarding use_nft 1
|
config_t_set global_forwarding use_nft 1
|
||||||
uci commit ${CONFIG}
|
uci -q commit ${CONFIG}
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@ -2005,9 +2027,11 @@ start() {
|
|||||||
|
|
||||||
if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then
|
if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then
|
||||||
[ "$(uci -q get dhcp.@dnsmasq[0].dns_redirect)" == "1" ] && {
|
[ "$(uci -q get dhcp.@dnsmasq[0].dns_redirect)" == "1" ] && {
|
||||||
uci -q set dhcp.@dnsmasq[0].dns_redirect='0' 2>/dev/null
|
uci -q set ${CONFIG}.@global[0].dnsmasq_dns_redirect='1'
|
||||||
uci commit dhcp 2>/dev/null
|
uci -q commit ${CONFIG}
|
||||||
/etc/init.d/dnsmasq restart >/dev/null 2>&1
|
uci -q set dhcp.@dnsmasq[0].dns_redirect='0'
|
||||||
|
uci -q commit dhcp
|
||||||
|
lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0
|
||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -2041,18 +2065,32 @@ stop() {
|
|||||||
delete_ip2route
|
delete_ip2route
|
||||||
kill_all v2ray-plugin obfs-local
|
kill_all v2ray-plugin obfs-local
|
||||||
pgrep -f "sleep.*(6s|9s|58s)" | xargs kill -9 >/dev/null 2>&1
|
pgrep -f "sleep.*(6s|9s|58s)" | xargs kill -9 >/dev/null 2>&1
|
||||||
pgrep -af "${CONFIG}/" | awk '! /app\.sh|subscribe\.lua|rule_update\.lua|tasks\.sh/{print $1}' | xargs kill -9 >/dev/null 2>&1
|
pgrep -af "${CONFIG}/" | awk '! /app\.sh|subscribe\.lua|rule_update\.lua|tasks\.sh|ujail/{print $1}' | xargs kill -9 >/dev/null 2>&1
|
||||||
unset V2RAY_LOCATION_ASSET
|
unset V2RAY_LOCATION_ASSET
|
||||||
unset XRAY_LOCATION_ASSET
|
unset XRAY_LOCATION_ASSET
|
||||||
stop_crontab
|
stop_crontab
|
||||||
source $APP_PATH/helper_smartdns.sh del
|
source $APP_PATH/helper_smartdns.sh del
|
||||||
rm -rf $GLOBAL_DNSMASQ_CONF
|
rm -rf $GLOBAL_DNSMASQ_CONF
|
||||||
rm -rf $GLOBAL_DNSMASQ_CONF_PATH
|
rm -rf $GLOBAL_DNSMASQ_CONF_PATH
|
||||||
[ -z "$(get_cache_var "ACL_default_dns_port")" ] && lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0
|
[ "1" = "1" ] && {
|
||||||
|
#restore logic
|
||||||
|
bak_dnsmasq_dns_redirect=$(config_t_get global dnsmasq_dns_redirect)
|
||||||
|
[ -n "${bak_dnsmasq_dns_redirect}" ] && {
|
||||||
|
uci -q set dhcp.@dnsmasq[0].dns_redirect="${bak_dnsmasq_dns_redirect}"
|
||||||
|
uci -q commit dhcp
|
||||||
|
uci -q delete ${CONFIG}.@global[0].dnsmasq_dns_redirect
|
||||||
|
uci -q commit ${CONFIG}
|
||||||
|
}
|
||||||
|
if [ -z "$(get_cache_var "ACL_default_dns_port")" ] || [ -n "${bak_dnsmasq_dns_redirect}" ]; then
|
||||||
|
uci -q del_list dhcp.@dnsmasq[0].addnmount="${GLOBAL_DNSMASQ_CONF_PATH}"
|
||||||
|
uci -q commit dhcp
|
||||||
|
lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0
|
||||||
|
fi
|
||||||
bak_bridge_nf_ipt=$(get_cache_var "bak_bridge_nf_ipt")
|
bak_bridge_nf_ipt=$(get_cache_var "bak_bridge_nf_ipt")
|
||||||
[ -n "${bak_bridge_nf_ipt}" ] && sysctl -w net.bridge.bridge-nf-call-iptables=${bak_bridge_nf_ipt} >/dev/null 2>&1
|
[ -n "${bak_bridge_nf_ipt}" ] && sysctl -w net.bridge.bridge-nf-call-iptables=${bak_bridge_nf_ipt} >/dev/null 2>&1
|
||||||
bak_bridge_nf_ip6t=$(get_cache_var "bak_bridge_nf_ip6t")
|
bak_bridge_nf_ip6t=$(get_cache_var "bak_bridge_nf_ip6t")
|
||||||
[ -n "${bak_bridge_nf_ip6t}" ] && sysctl -w net.bridge.bridge-nf-call-ip6tables=${bak_bridge_nf_ip6t} >/dev/null 2>&1
|
[ -n "${bak_bridge_nf_ip6t}" ] && sysctl -w net.bridge.bridge-nf-call-ip6tables=${bak_bridge_nf_ip6t} >/dev/null 2>&1
|
||||||
|
}
|
||||||
rm -rf $TMP_PATH
|
rm -rf $TMP_PATH
|
||||||
rm -rf /tmp/lock/${CONFIG}_socks_auto_switch*
|
rm -rf /tmp/lock/${CONFIG}_socks_auto_switch*
|
||||||
echolog "清空并关闭相关程序和缓存完成。"
|
echolog "清空并关闭相关程序和缓存完成。"
|
||||||
@ -2107,10 +2145,13 @@ CLIENT_PROXY=$(config_t_get global client_proxy 1)
|
|||||||
DNS_SHUNT=$(config_t_get global dns_shunt dnsmasq)
|
DNS_SHUNT=$(config_t_get global dns_shunt dnsmasq)
|
||||||
[ -z "$(first_type $DNS_SHUNT)" ] && DNS_SHUNT="dnsmasq"
|
[ -z "$(first_type $DNS_SHUNT)" ] && DNS_SHUNT="dnsmasq"
|
||||||
DNS_MODE=$(config_t_get global dns_mode tcp)
|
DNS_MODE=$(config_t_get global dns_mode tcp)
|
||||||
|
SMARTDNS_DNS_MODE=$(config_t_get global smartdns_dns_mode socks)
|
||||||
|
[ "$DNS_SHUNT" = "smartdns" ] && DNS_MODE=$SMARTDNS_DNS_MODE
|
||||||
DNS_CACHE=0
|
DNS_CACHE=0
|
||||||
REMOTE_DNS=$(config_t_get global remote_dns 1.1.1.1:53 | sed 's/#/:/g' | sed -E 's/\:([^:]+)$/#\1/g')
|
REMOTE_DNS=$(config_t_get global remote_dns 1.1.1.1:53 | sed 's/#/:/g' | sed -E 's/\:([^:]+)$/#\1/g')
|
||||||
USE_DEFAULT_DNS=$(config_t_get global use_default_dns direct)
|
USE_DEFAULT_DNS=$(config_t_get global use_default_dns direct)
|
||||||
FILTER_PROXY_IPV6=$(config_t_get global filter_proxy_ipv6 0)
|
FILTER_PROXY_IPV6=$(config_t_get global filter_proxy_ipv6 0)
|
||||||
|
DNS_REDIRECT=$(config_t_get global dns_redirect 1)
|
||||||
dns_listen_port=${DNS_PORT}
|
dns_listen_port=${DNS_PORT}
|
||||||
|
|
||||||
REDIRECT_LIST="socks ss ss-rust ssr sing-box xray trojan-plus naiveproxy hysteria2"
|
REDIRECT_LIST="socks ss ss-rust ssr sing-box xray trojan-plus naiveproxy hysteria2"
|
||||||
@ -2139,8 +2180,9 @@ fi
|
|||||||
GLOBAL_DNSMASQ_CONF=${DNSMASQ_CONF_DIR}/dnsmasq-${CONFIG}.conf
|
GLOBAL_DNSMASQ_CONF=${DNSMASQ_CONF_DIR}/dnsmasq-${CONFIG}.conf
|
||||||
GLOBAL_DNSMASQ_CONF_PATH=${GLOBAL_ACL_PATH}/dnsmasq.d
|
GLOBAL_DNSMASQ_CONF_PATH=${GLOBAL_ACL_PATH}/dnsmasq.d
|
||||||
|
|
||||||
DNS_QUERY_STRATEGY="UseIP"
|
DIRECT_DNS_QUERY_STRATEGY="UseIP"
|
||||||
[ "$FILTER_PROXY_IPV6" = "1" ] && DNS_QUERY_STRATEGY="UseIPv4"
|
REMOTE_DNS_QUERY_STRATEGY="UseIP"
|
||||||
|
[ "$FILTER_PROXY_IPV6" = "1" ] && REMOTE_DNS_QUERY_STRATEGY="UseIPv4"
|
||||||
DNSMASQ_FILTER_PROXY_IPV6=${FILTER_PROXY_IPV6}
|
DNSMASQ_FILTER_PROXY_IPV6=${FILTER_PROXY_IPV6}
|
||||||
|
|
||||||
export V2RAY_LOCATION_ASSET=$(config_t_get global_rules v2ray_location_asset "/usr/share/v2ray/")
|
export V2RAY_LOCATION_ASSET=$(config_t_get global_rules v2ray_location_asset "/usr/share/v2ray/")
|
||||||
|
@ -170,11 +170,15 @@ if not is_file_nonzero(file_vpslist) then
|
|||||||
f_out:close()
|
f_out:close()
|
||||||
end
|
end
|
||||||
if is_file_nonzero(file_vpslist) then
|
if is_file_nonzero(file_vpslist) then
|
||||||
|
local sets = {
|
||||||
|
setflag .. "passwall_vps",
|
||||||
|
setflag .. "passwall_vps6"
|
||||||
|
}
|
||||||
tmp_lines = {
|
tmp_lines = {
|
||||||
"group vpslist",
|
"group vpslist",
|
||||||
"group-dnl " .. file_vpslist,
|
"group-dnl " .. file_vpslist,
|
||||||
"group-upstream " .. DNS_LOCAL,
|
"group-upstream " .. DNS_LOCAL,
|
||||||
"group-ipset " .. setflag .. "passwall_vpslist," .. setflag .. "passwall_vpslist6"
|
"group-ipset " .. table.concat(sets, ",")
|
||||||
}
|
}
|
||||||
insert_array_after(config_lines, tmp_lines, "#--6")
|
insert_array_after(config_lines, tmp_lines, "#--6")
|
||||||
log(string.format(" - 节点列表中的域名(vpslist):%s", DNS_LOCAL or "默认"))
|
log(string.format(" - 节点列表中的域名(vpslist):%s", DNS_LOCAL or "默认"))
|
||||||
@ -209,11 +213,15 @@ if USE_DIRECT_LIST == "1" and not fs.access(file_direct_host) then
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if USE_DIRECT_LIST == "1" and is_file_nonzero(file_direct_host) then
|
if USE_DIRECT_LIST == "1" and is_file_nonzero(file_direct_host) then
|
||||||
|
local sets = {
|
||||||
|
setflag .. "passwall_white",
|
||||||
|
setflag .. "passwall_white6"
|
||||||
|
}
|
||||||
tmp_lines = {
|
tmp_lines = {
|
||||||
"group directlist",
|
"group directlist",
|
||||||
"group-dnl " .. file_direct_host,
|
"group-dnl " .. file_direct_host,
|
||||||
"group-upstream " .. DNS_LOCAL,
|
"group-upstream " .. DNS_LOCAL,
|
||||||
"group-ipset " .. setflag .. "passwall_whitelist," .. setflag .. "passwall_whitelist6"
|
"group-ipset " .. table.concat(sets, ",")
|
||||||
}
|
}
|
||||||
insert_array_after(config_lines, tmp_lines, "#--4")
|
insert_array_after(config_lines, tmp_lines, "#--4")
|
||||||
log(string.format(" - 域名白名单(whitelist):%s", DNS_LOCAL or "默认"))
|
log(string.format(" - 域名白名单(whitelist):%s", DNS_LOCAL or "默认"))
|
||||||
@ -248,11 +256,21 @@ if USE_PROXY_LIST == "1" and not fs.access(file_proxy_host) then
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if USE_PROXY_LIST == "1" and is_file_nonzero(file_proxy_host) then
|
if USE_PROXY_LIST == "1" and is_file_nonzero(file_proxy_host) then
|
||||||
|
local sets = {
|
||||||
|
setflag .. "passwall_black",
|
||||||
|
setflag .. "passwall_black6"
|
||||||
|
}
|
||||||
|
if FLAG ~= "default" then
|
||||||
|
sets = {
|
||||||
|
setflag .. "passwall_" .. FLAG .. "_black",
|
||||||
|
setflag .. "passwall_" .. FLAG .. "_black6"
|
||||||
|
}
|
||||||
|
end
|
||||||
tmp_lines = {
|
tmp_lines = {
|
||||||
"group proxylist",
|
"group proxylist",
|
||||||
"group-dnl " .. file_proxy_host,
|
"group-dnl " .. file_proxy_host,
|
||||||
"group-upstream " .. DNS_TRUST,
|
"group-upstream " .. DNS_TRUST,
|
||||||
REMOTE_FAKEDNS ~= "1" and "group-ipset " .. setflag .. "passwall_blacklist," .. setflag .. "passwall_blacklist6" or nil
|
REMOTE_FAKEDNS ~= "1" and "group-ipset " .. table.concat(sets, ",") or nil
|
||||||
}
|
}
|
||||||
if NO_IPV6_TRUST == "1" then table.insert(tmp_lines, "no-ipv6 tag:proxylist") end
|
if NO_IPV6_TRUST == "1" then table.insert(tmp_lines, "no-ipv6 tag:proxylist") end
|
||||||
insert_array_after(config_lines, tmp_lines, "#--3")
|
insert_array_after(config_lines, tmp_lines, "#--3")
|
||||||
@ -262,9 +280,19 @@ end
|
|||||||
--内置组(chn/gfw)优先级在自定义组后
|
--内置组(chn/gfw)优先级在自定义组后
|
||||||
--GFW列表
|
--GFW列表
|
||||||
if GFWLIST == "1" and is_file_nonzero(RULES_PATH .. "/gfwlist") then
|
if GFWLIST == "1" and is_file_nonzero(RULES_PATH .. "/gfwlist") then
|
||||||
|
local sets = {
|
||||||
|
setflag .. "passwall_gfw",
|
||||||
|
setflag .. "passwall_gfw6"
|
||||||
|
}
|
||||||
|
if FLAG ~= "default" then
|
||||||
|
sets = {
|
||||||
|
setflag .. "passwall_" .. FLAG .. "_gfw",
|
||||||
|
setflag .. "passwall_" .. FLAG .. "_gfw6"
|
||||||
|
}
|
||||||
|
end
|
||||||
tmp_lines = {
|
tmp_lines = {
|
||||||
"gfwlist-file " .. RULES_PATH .. "/gfwlist",
|
"gfwlist-file " .. RULES_PATH .. "/gfwlist",
|
||||||
REMOTE_FAKEDNS ~= "1" and "add-taggfw-ip " .. setflag .. "passwall_gfwlist," .. setflag .. "passwall_gfwlist6" or nil
|
REMOTE_FAKEDNS ~= "1" and "add-taggfw-ip " .. table.concat(sets, ",") or nil
|
||||||
}
|
}
|
||||||
if NO_IPV6_TRUST == "1" then table.insert(tmp_lines, "no-ipv6 tag:gfw") end
|
if NO_IPV6_TRUST == "1" then table.insert(tmp_lines, "no-ipv6 tag:gfw") end
|
||||||
merge_array(config_lines, tmp_lines)
|
merge_array(config_lines, tmp_lines)
|
||||||
@ -276,8 +304,8 @@ if CHNLIST ~= "0" and is_file_nonzero(RULES_PATH .. "/chnlist") then
|
|||||||
if CHNLIST == "direct" then
|
if CHNLIST == "direct" then
|
||||||
tmp_lines = {
|
tmp_lines = {
|
||||||
"chnlist-file " .. RULES_PATH .. "/chnlist",
|
"chnlist-file " .. RULES_PATH .. "/chnlist",
|
||||||
"ipset-name4 " .. setflag .. "passwall_chnroute",
|
"ipset-name4 " .. setflag .. "passwall_chn",
|
||||||
"ipset-name6 " .. setflag .. "passwall_chnroute6",
|
"ipset-name6 " .. setflag .. "passwall_chn6",
|
||||||
"add-tagchn-ip",
|
"add-tagchn-ip",
|
||||||
"chnlist-first"
|
"chnlist-first"
|
||||||
}
|
}
|
||||||
@ -287,11 +315,15 @@ if CHNLIST ~= "0" and is_file_nonzero(RULES_PATH .. "/chnlist") then
|
|||||||
|
|
||||||
--回中国模式
|
--回中国模式
|
||||||
if CHNLIST == "proxy" then
|
if CHNLIST == "proxy" then
|
||||||
|
local sets = {
|
||||||
|
setflag .. "passwall_chn",
|
||||||
|
setflag .. "passwall_chn6"
|
||||||
|
}
|
||||||
tmp_lines = {
|
tmp_lines = {
|
||||||
"group chn_proxy",
|
"group chn_proxy",
|
||||||
"group-dnl " .. RULES_PATH .. "/chnlist",
|
"group-dnl " .. RULES_PATH .. "/chnlist",
|
||||||
"group-upstream " .. DNS_TRUST,
|
"group-upstream " .. DNS_TRUST,
|
||||||
REMOTE_FAKEDNS ~= "1" and "group-ipset " .. setflag .. "passwall_chnroute," .. setflag .. "passwall_chnroute6" or nil
|
REMOTE_FAKEDNS ~= "1" and "group-ipset " .. table.concat(sets, ",") or nil
|
||||||
}
|
}
|
||||||
if NO_IPV6_TRUST == "1" then table.insert(tmp_lines, "no-ipv6 tag:chn_proxy") end
|
if NO_IPV6_TRUST == "1" then table.insert(tmp_lines, "no-ipv6 tag:chn_proxy") end
|
||||||
insert_array_after(config_lines, tmp_lines, "#--1")
|
insert_array_after(config_lines, tmp_lines, "#--1")
|
||||||
@ -378,6 +410,17 @@ if uci:get(appname, TCP_NODE, "protocol") == "_shunt" then
|
|||||||
log(" * 解析[分流节点] Geosite 完成")
|
log(" * 解析[分流节点] Geosite 完成")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local sets = {
|
||||||
|
setflag .. "passwall_shunt",
|
||||||
|
setflag .. "passwall_shunt6"
|
||||||
|
}
|
||||||
|
if FLAG ~= "default" then
|
||||||
|
sets = {
|
||||||
|
setflag .. "passwall_" .. FLAG .. "_shunt",
|
||||||
|
setflag .. "passwall_" .. FLAG .. "_shunt6"
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
if is_file_nonzero(file_white_host) then
|
if is_file_nonzero(file_white_host) then
|
||||||
if USE_DIRECT_LIST == "1" then
|
if USE_DIRECT_LIST == "1" then
|
||||||
--当白名单启用时,添加到白名单组一同处理
|
--当白名单启用时,添加到白名单组一同处理
|
||||||
@ -393,7 +436,7 @@ if uci:get(appname, TCP_NODE, "protocol") == "_shunt" then
|
|||||||
"group whitelist",
|
"group whitelist",
|
||||||
"group-dnl " .. file_white_host,
|
"group-dnl " .. file_white_host,
|
||||||
"group-upstream " .. DNS_LOCAL,
|
"group-upstream " .. DNS_LOCAL,
|
||||||
"group-ipset " .. setflag .. "passwall_shuntlist," .. setflag .. "passwall_shuntlist6"
|
"group-ipset " .. table.concat(sets, ",")
|
||||||
}
|
}
|
||||||
insert_array_after(config_lines, tmp_lines, "#--4")
|
insert_array_after(config_lines, tmp_lines, "#--4")
|
||||||
end
|
end
|
||||||
@ -405,7 +448,7 @@ if uci:get(appname, TCP_NODE, "protocol") == "_shunt" then
|
|||||||
"group shuntlist",
|
"group shuntlist",
|
||||||
"group-dnl " .. file_shunt_host,
|
"group-dnl " .. file_shunt_host,
|
||||||
"group-upstream " .. DNS_TRUST,
|
"group-upstream " .. DNS_TRUST,
|
||||||
(not only_global and REMOTE_FAKEDNS == "1") and nil or ("group-ipset " .. setflag .. "passwall_shuntlist," .. setflag .. "passwall_shuntlist6")
|
(not only_global and REMOTE_FAKEDNS == "1") and nil or ("group-ipset " .. table.concat(sets, ","))
|
||||||
}
|
}
|
||||||
if NO_IPV6_TRUST == "1" then table.insert(tmp_lines, "no-ipv6 tag:shuntlist") end
|
if NO_IPV6_TRUST == "1" then table.insert(tmp_lines, "no-ipv6 tag:shuntlist") end
|
||||||
insert_array_after(config_lines, tmp_lines, "#--2")
|
insert_array_after(config_lines, tmp_lines, "#--2")
|
||||||
|
@ -355,7 +355,6 @@ function add_rule(var)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local fwd_dns
|
local fwd_dns
|
||||||
local ipset_flag
|
|
||||||
local no_ipv6
|
local no_ipv6
|
||||||
|
|
||||||
--始终用国内DNS解析节点域名
|
--始终用国内DNS解析节点域名
|
||||||
@ -364,12 +363,16 @@ function add_rule(var)
|
|||||||
if USE_CHINADNS_NG == "1" then
|
if USE_CHINADNS_NG == "1" then
|
||||||
fwd_dns = nil
|
fwd_dns = nil
|
||||||
else
|
else
|
||||||
|
local sets = {
|
||||||
|
setflag_4 .. "passwall_vps",
|
||||||
|
setflag_6 .. "passwall_vps6"
|
||||||
|
}
|
||||||
uci:foreach(appname, "nodes", function(t)
|
uci:foreach(appname, "nodes", function(t)
|
||||||
local function process_address(address)
|
local function process_address(address)
|
||||||
if address == "engage.cloudflareclient.com" then return end
|
if address == "engage.cloudflareclient.com" then return end
|
||||||
if datatypes.hostname(address) then
|
if datatypes.hostname(address) then
|
||||||
set_domain_dns(address, fwd_dns)
|
set_domain_dns(address, fwd_dns)
|
||||||
set_domain_ipset(address, setflag_4 .. "passwall_vpslist," .. setflag_6 .. "passwall_vpslist6")
|
set_domain_ipset(address, table.concat(sets, ","))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
process_address(t.address)
|
process_address(t.address)
|
||||||
@ -387,13 +390,17 @@ function add_rule(var)
|
|||||||
fwd_dns = nil
|
fwd_dns = nil
|
||||||
end
|
end
|
||||||
if fwd_dns then
|
if fwd_dns then
|
||||||
|
local sets = {
|
||||||
|
setflag_4 .. "passwall_white",
|
||||||
|
setflag_6 .. "passwall_white6"
|
||||||
|
}
|
||||||
--始终用国内DNS解析直连(白名单)列表
|
--始终用国内DNS解析直连(白名单)列表
|
||||||
for line in io.lines("/usr/share/passwall/rules/direct_host") do
|
for line in io.lines("/usr/share/passwall/rules/direct_host") do
|
||||||
line = api.get_std_domain(line)
|
line = api.get_std_domain(line)
|
||||||
if line ~= "" and not line:find("#") then
|
if line ~= "" and not line:find("#") then
|
||||||
add_excluded_domain(line)
|
add_excluded_domain(line)
|
||||||
set_domain_dns(line, fwd_dns)
|
set_domain_dns(line, fwd_dns)
|
||||||
set_domain_ipset(line, setflag_4 .. "passwall_whitelist," .. setflag_6 .. "passwall_whitelist6")
|
set_domain_ipset(line, table.concat(sets, ","))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
log(string.format(" - 域名白名单(whitelist):%s", fwd_dns or "默认"))
|
log(string.format(" - 域名白名单(whitelist):%s", fwd_dns or "默认"))
|
||||||
@ -409,21 +416,31 @@ function add_rule(var)
|
|||||||
fwd_dns = nil
|
fwd_dns = nil
|
||||||
end
|
end
|
||||||
if fwd_dns then
|
if fwd_dns then
|
||||||
|
local set_name = "passwall_black"
|
||||||
|
local set6_name = "passwall_black6"
|
||||||
|
if FLAG ~= "default" then
|
||||||
|
set_name = "passwall_" .. FLAG .. "_black"
|
||||||
|
set6_name = "passwall_" .. FLAG .. "_black6"
|
||||||
|
end
|
||||||
|
local sets = {
|
||||||
|
setflag_4 .. set_name
|
||||||
|
}
|
||||||
|
if NO_PROXY_IPV6 ~= "1" then
|
||||||
|
table.insert(sets, setflag_6 .. set6_name)
|
||||||
|
end
|
||||||
|
if REMOTE_FAKEDNS == "1" then
|
||||||
|
sets = {}
|
||||||
|
end
|
||||||
--始终使用远程DNS解析代理(黑名单)列表
|
--始终使用远程DNS解析代理(黑名单)列表
|
||||||
for line in io.lines("/usr/share/passwall/rules/proxy_host") do
|
for line in io.lines("/usr/share/passwall/rules/proxy_host") do
|
||||||
line = api.get_std_domain(line)
|
line = api.get_std_domain(line)
|
||||||
if line ~= "" and not line:find("#") then
|
if line ~= "" and not line:find("#") then
|
||||||
add_excluded_domain(line)
|
add_excluded_domain(line)
|
||||||
local ipset_flag = setflag_4 .. "passwall_blacklist," .. setflag_6 .. "passwall_blacklist6"
|
|
||||||
if NO_PROXY_IPV6 == "1" then
|
if NO_PROXY_IPV6 == "1" then
|
||||||
set_domain_address(line, "::")
|
set_domain_address(line, "::")
|
||||||
ipset_flag = setflag_4 .. "passwall_blacklist"
|
|
||||||
end
|
|
||||||
if REMOTE_FAKEDNS == "1" then
|
|
||||||
ipset_flag = nil
|
|
||||||
end
|
end
|
||||||
set_domain_dns(line, fwd_dns)
|
set_domain_dns(line, fwd_dns)
|
||||||
set_domain_ipset(line, ipset_flag)
|
set_domain_ipset(line, table.concat(sets, ","))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
log(string.format(" - 代理域名表(blacklist):%s", fwd_dns or "默认"))
|
log(string.format(" - 代理域名表(blacklist):%s", fwd_dns or "默认"))
|
||||||
@ -439,12 +456,20 @@ function add_rule(var)
|
|||||||
fwd_dns = nil
|
fwd_dns = nil
|
||||||
end
|
end
|
||||||
if fwd_dns then
|
if fwd_dns then
|
||||||
local ipset_flag = setflag_4 .. "passwall_gfwlist," .. setflag_6 .. "passwall_gfwlist6"
|
local set_name = "passwall_gfw"
|
||||||
if NO_PROXY_IPV6 == "1" then
|
local set6_name = "passwall_gfw6"
|
||||||
ipset_flag = setflag_4 .. "passwall_gfwlist"
|
if FLAG ~= "default" then
|
||||||
|
set_name = "passwall_" .. FLAG .. "_gfw"
|
||||||
|
set6_name = "passwall_" .. FLAG .. "_gfw6"
|
||||||
|
end
|
||||||
|
local sets = {
|
||||||
|
setflag_4 .. set_name
|
||||||
|
}
|
||||||
|
if NO_PROXY_IPV6 ~= "1" then
|
||||||
|
table.insert(sets, setflag_6 .. set6_name)
|
||||||
end
|
end
|
||||||
if REMOTE_FAKEDNS == "1" then
|
if REMOTE_FAKEDNS == "1" then
|
||||||
ipset_flag = nil
|
sets = {}
|
||||||
end
|
end
|
||||||
local gfwlist_str = sys.exec('cat /usr/share/passwall/rules/gfwlist | grep -v -E "^#" | grep -v -E "' .. excluded_domain_str .. '"')
|
local gfwlist_str = sys.exec('cat /usr/share/passwall/rules/gfwlist | grep -v -E "^#" | grep -v -E "' .. excluded_domain_str .. '"')
|
||||||
for line in string.gmatch(gfwlist_str, "[^\r\n]+") do
|
for line in string.gmatch(gfwlist_str, "[^\r\n]+") do
|
||||||
@ -457,7 +482,7 @@ function add_rule(var)
|
|||||||
else
|
else
|
||||||
set_domain_dns(line, fwd_dns)
|
set_domain_dns(line, fwd_dns)
|
||||||
end
|
end
|
||||||
set_domain_ipset(line, ipset_flag)
|
set_domain_ipset(line, table.concat(sets, ","))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
log(string.format(" - 防火墙域名表(gfwlist):%s", fwd_dns or "默认"))
|
log(string.format(" - 防火墙域名表(gfwlist):%s", fwd_dns or "默认"))
|
||||||
@ -479,13 +504,15 @@ function add_rule(var)
|
|||||||
fwd_dns = nil
|
fwd_dns = nil
|
||||||
end
|
end
|
||||||
if fwd_dns then
|
if fwd_dns then
|
||||||
local ipset_flag = setflag_4 .. "passwall_chnroute," .. setflag_6 .. "passwall_chnroute6"
|
local sets = {
|
||||||
|
setflag_4 .. "passwall_chn"
|
||||||
|
}
|
||||||
if CHN_LIST == "proxy" then
|
if CHN_LIST == "proxy" then
|
||||||
if NO_PROXY_IPV6 == "1" then
|
if NO_PROXY_IPV6 ~= "1" then
|
||||||
ipset_flag = setflag_4 .. "passwall_chnroute"
|
table.insert(sets, setflag_6 .. "passwall_chn6")
|
||||||
end
|
end
|
||||||
if REMOTE_FAKEDNS == "1" then
|
if REMOTE_FAKEDNS == "1" then
|
||||||
ipset_flag = nil
|
sets = {}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local chnlist_str = sys.exec('cat /usr/share/passwall/rules/chnlist | grep -v -E "^#" | grep -v -E "' .. excluded_domain_str .. '"')
|
local chnlist_str = sys.exec('cat /usr/share/passwall/rules/chnlist | grep -v -E "^#" | grep -v -E "' .. excluded_domain_str .. '"')
|
||||||
@ -499,7 +526,7 @@ function add_rule(var)
|
|||||||
else
|
else
|
||||||
set_domain_dns(line, fwd_dns)
|
set_domain_dns(line, fwd_dns)
|
||||||
end
|
end
|
||||||
set_domain_ipset(line, ipset_flag)
|
set_domain_ipset(line, table.concat(sets, ","))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
log(string.format(" - 中国域名表(chnroute):%s", fwd_dns or "默认"))
|
log(string.format(" - 中国域名表(chnroute):%s", fwd_dns or "默认"))
|
||||||
@ -519,26 +546,42 @@ function add_rule(var)
|
|||||||
end
|
end
|
||||||
|
|
||||||
fwd_dns = nil
|
fwd_dns = nil
|
||||||
ipset_flag = nil
|
|
||||||
no_ipv6 = nil
|
no_ipv6 = nil
|
||||||
|
|
||||||
|
local sets = {}
|
||||||
|
|
||||||
if _node_id == "_direct" then
|
if _node_id == "_direct" then
|
||||||
fwd_dns = LOCAL_DNS
|
fwd_dns = LOCAL_DNS
|
||||||
if USE_DIRECT_LIST == "1" then
|
if USE_DIRECT_LIST == "1" then
|
||||||
ipset_flag = setflag_4 .. "passwall_whitelist," .. setflag_6 .. "passwall_whitelist6"
|
table.insert(sets, setflag_4 .. "passwall_white")
|
||||||
|
table.insert(sets, setflag_6 .. "passwall_white6")
|
||||||
else
|
else
|
||||||
ipset_flag = setflag_4 .. "passwall_shuntlist," .. setflag_6 .. "passwall_shuntlist6"
|
local set_name = "passwall_shunt"
|
||||||
|
local set6_name = "passwall_shunt6"
|
||||||
|
if FLAG ~= "default" then
|
||||||
|
set_name = "passwall_" .. FLAG .. "_shunt"
|
||||||
|
set6_name = "passwall_" .. FLAG .. "_shunt6"
|
||||||
|
end
|
||||||
|
table.insert(sets, setflag_4 .. set_name)
|
||||||
|
table.insert(sets, setflag_6 .. set6_name)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
local set_name = "passwall_shunt"
|
||||||
|
local set6_name = "passwall_shunt6"
|
||||||
|
if FLAG ~= "default" then
|
||||||
|
set_name = "passwall_" .. FLAG .. "_shunt"
|
||||||
|
set6_name = "passwall_" .. FLAG .. "_shunt6"
|
||||||
|
end
|
||||||
fwd_dns = TUN_DNS
|
fwd_dns = TUN_DNS
|
||||||
ipset_flag = setflag_4 .. "passwall_shuntlist," .. setflag_6 .. "passwall_shuntlist6"
|
table.insert(sets, setflag_4 .. set_name)
|
||||||
if NO_PROXY_IPV6 == "1" then
|
if NO_PROXY_IPV6 ~= "1" then
|
||||||
ipset_flag = setflag_4 .. "passwall_shuntlist"
|
table.insert(sets, setflag_6 .. set6_name)
|
||||||
|
else
|
||||||
no_ipv6 = true
|
no_ipv6 = true
|
||||||
end
|
end
|
||||||
if not only_global then
|
if not only_global then
|
||||||
if REMOTE_FAKEDNS == "1" then
|
if REMOTE_FAKEDNS == "1" then
|
||||||
ipset_flag = nil
|
sets = {}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -556,7 +599,7 @@ function add_rule(var)
|
|||||||
set_domain_address(line, "::")
|
set_domain_address(line, "::")
|
||||||
end
|
end
|
||||||
set_domain_dns(line, fwd_dns)
|
set_domain_dns(line, fwd_dns)
|
||||||
set_domain_ipset(line, ipset_flag)
|
set_domain_ipset(line, table.concat(sets, ","))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if _node_id ~= "_direct" then
|
if _node_id ~= "_direct" then
|
||||||
@ -617,13 +660,9 @@ function add_rule(var)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if USE_CHINADNS_NG == "0" then
|
if USE_CHINADNS_NG == "0" then
|
||||||
if api.is_install("procd\\-ujail") then
|
|
||||||
fs.copyr(CACHE_DNS_PATH, TMP_DNSMASQ_PATH)
|
|
||||||
else
|
|
||||||
api.remove(TMP_DNSMASQ_PATH)
|
api.remove(TMP_DNSMASQ_PATH)
|
||||||
fs.symlink(CACHE_DNS_PATH, TMP_DNSMASQ_PATH)
|
fs.symlink(CACHE_DNS_PATH, TMP_DNSMASQ_PATH)
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
if DNSMASQ_CONF_FILE ~= "nil" then
|
if DNSMASQ_CONF_FILE ~= "nil" then
|
||||||
local conf_lines = {}
|
local conf_lines = {}
|
||||||
|
@ -9,7 +9,10 @@ local LOCAL_GROUP = var["-LOCAL_GROUP"]
|
|||||||
local REMOTE_GROUP = var["-REMOTE_GROUP"]
|
local REMOTE_GROUP = var["-REMOTE_GROUP"]
|
||||||
local REMOTE_PROXY_SERVER = var["-REMOTE_PROXY_SERVER"]
|
local REMOTE_PROXY_SERVER = var["-REMOTE_PROXY_SERVER"]
|
||||||
local USE_DEFAULT_DNS = var["-USE_DEFAULT_DNS"]
|
local USE_DEFAULT_DNS = var["-USE_DEFAULT_DNS"]
|
||||||
|
local REMOTE_DNS = var["-REMOTE_DNS"]
|
||||||
local TUN_DNS = var["-TUN_DNS"]
|
local TUN_DNS = var["-TUN_DNS"]
|
||||||
|
local DNS_MODE = var["-DNS_MODE"]
|
||||||
|
local REMOTE_FAKEDNS = var["-REMOTE_FAKEDNS"]
|
||||||
local TCP_NODE = var["-TCP_NODE"]
|
local TCP_NODE = var["-TCP_NODE"]
|
||||||
local USE_DIRECT_LIST = var["-USE_DIRECT_LIST"]
|
local USE_DIRECT_LIST = var["-USE_DIRECT_LIST"]
|
||||||
local USE_PROXY_LIST = var["-USE_PROXY_LIST"]
|
local USE_PROXY_LIST = var["-USE_PROXY_LIST"]
|
||||||
@ -156,8 +159,8 @@ end
|
|||||||
|
|
||||||
if not REMOTE_GROUP or REMOTE_GROUP == "nil" then
|
if not REMOTE_GROUP or REMOTE_GROUP == "nil" then
|
||||||
REMOTE_GROUP = "passwall_proxy"
|
REMOTE_GROUP = "passwall_proxy"
|
||||||
if TUN_DNS then
|
if REMOTE_DNS then
|
||||||
TUN_DNS = TUN_DNS:gsub("#", ":")
|
REMOTE_DNS = REMOTE_DNS:gsub("#", ":")
|
||||||
end
|
end
|
||||||
sys.call('sed -i "/passwall/d" /etc/smartdns/custom.conf >/dev/null 2>&1')
|
sys.call('sed -i "/passwall/d" /etc/smartdns/custom.conf >/dev/null 2>&1')
|
||||||
end
|
end
|
||||||
@ -166,10 +169,10 @@ local proxy_server_name = "passwall-proxy-server"
|
|||||||
config_lines = {
|
config_lines = {
|
||||||
"force-qtype-SOA 65",
|
"force-qtype-SOA 65",
|
||||||
"server 114.114.114.114 -bootstrap-dns",
|
"server 114.114.114.114 -bootstrap-dns",
|
||||||
string.format("proxy-server socks5://%s -name %s", REMOTE_PROXY_SERVER, proxy_server_name)
|
DNS_MODE == "socks" and string.format("proxy-server socks5://%s -name %s", REMOTE_PROXY_SERVER, proxy_server_name) or nil
|
||||||
}
|
}
|
||||||
if true then
|
if DNS_MODE == "socks" then
|
||||||
string.gsub(TUN_DNS, '[^' .. "|" .. ']+', function(w)
|
string.gsub(REMOTE_DNS, '[^' .. "|" .. ']+', function(w)
|
||||||
local server_dns = w
|
local server_dns = w
|
||||||
local server_param = string.format("server %s -group %s -proxy %s", "%s", REMOTE_GROUP, proxy_server_name)
|
local server_param = string.format("server %s -group %s -proxy %s", "%s", REMOTE_GROUP, proxy_server_name)
|
||||||
server_param = server_param .. " -exclude-default-group"
|
server_param = server_param .. " -exclude-default-group"
|
||||||
@ -202,6 +205,11 @@ if true then
|
|||||||
server_param = string.format(server_param, server_dns)
|
server_param = string.format(server_param, server_dns)
|
||||||
table.insert(config_lines, server_param)
|
table.insert(config_lines, server_param)
|
||||||
end)
|
end)
|
||||||
|
REMOTE_FAKEDNS = 0
|
||||||
|
else
|
||||||
|
local server_param = string.format("server %s -group %s -exclude-default-group", TUN_DNS:gsub("#", ":"), REMOTE_GROUP)
|
||||||
|
table.insert(config_lines, server_param)
|
||||||
|
log(" - " .. DNS_MODE:gsub("^%l",string.upper) .. " " .. TUN_DNS .. " -> " .. REMOTE_GROUP)
|
||||||
end
|
end
|
||||||
|
|
||||||
--设置默认 DNS 分组(托底组)
|
--设置默认 DNS 分组(托底组)
|
||||||
@ -290,8 +298,12 @@ if is_file_nonzero(file_vpslist) then
|
|||||||
tmp_lines = {
|
tmp_lines = {
|
||||||
string.format("domain-set -name %s -file %s", domain_set_name, file_vpslist)
|
string.format("domain-set -name %s -file %s", domain_set_name, file_vpslist)
|
||||||
}
|
}
|
||||||
|
local sets = {
|
||||||
|
"#4:" .. setflag .. "passwall_vps",
|
||||||
|
"#6:" .. setflag .. "passwall_vps6"
|
||||||
|
}
|
||||||
local domain_rules_str = string.format('domain-rules /domain-set:%s/ %s', domain_set_name, LOCAL_GROUP and "-nameserver " .. LOCAL_GROUP or "")
|
local domain_rules_str = string.format('domain-rules /domain-set:%s/ %s', domain_set_name, LOCAL_GROUP and "-nameserver " .. LOCAL_GROUP or "")
|
||||||
domain_rules_str = domain_rules_str .. " " .. set_type .. " #4:" .. setflag .. "passwall_vpslist,#6:" .. setflag .. "passwall_vpslist6"
|
domain_rules_str = domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",")
|
||||||
domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "")
|
domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "")
|
||||||
table.insert(tmp_lines, domain_rules_str)
|
table.insert(tmp_lines, domain_rules_str)
|
||||||
insert_array_after(config_lines, tmp_lines, "#--8")
|
insert_array_after(config_lines, tmp_lines, "#--8")
|
||||||
@ -331,8 +343,12 @@ if USE_DIRECT_LIST == "1" and is_file_nonzero(file_direct_host) then
|
|||||||
tmp_lines = {
|
tmp_lines = {
|
||||||
string.format("domain-set -name %s -file %s", domain_set_name, file_direct_host)
|
string.format("domain-set -name %s -file %s", domain_set_name, file_direct_host)
|
||||||
}
|
}
|
||||||
|
local sets = {
|
||||||
|
"#4:" .. setflag .. "passwall_white",
|
||||||
|
"#6:" .. setflag .. "passwall_white6"
|
||||||
|
}
|
||||||
local domain_rules_str = string.format('domain-rules /domain-set:%s/ %s', domain_set_name, LOCAL_GROUP and "-nameserver " .. LOCAL_GROUP or "")
|
local domain_rules_str = string.format('domain-rules /domain-set:%s/ %s', domain_set_name, LOCAL_GROUP and "-nameserver " .. LOCAL_GROUP or "")
|
||||||
domain_rules_str = domain_rules_str .. " " .. set_type .. " #4:" .. setflag .. "passwall_whitelist,#6:" .. setflag .. "passwall_whitelist6"
|
domain_rules_str = domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",")
|
||||||
domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "")
|
domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "")
|
||||||
table.insert(tmp_lines, domain_rules_str)
|
table.insert(tmp_lines, domain_rules_str)
|
||||||
insert_array_after(config_lines, tmp_lines, "#--6")
|
insert_array_after(config_lines, tmp_lines, "#--6")
|
||||||
@ -375,11 +391,15 @@ if USE_PROXY_LIST == "1" and is_file_nonzero(file_proxy_host) then
|
|||||||
local domain_rules_str = string.format('domain-rules /domain-set:%s/ -nameserver %s', domain_set_name, REMOTE_GROUP)
|
local domain_rules_str = string.format('domain-rules /domain-set:%s/ -nameserver %s', domain_set_name, REMOTE_GROUP)
|
||||||
domain_rules_str = domain_rules_str .. " -speed-check-mode none"
|
domain_rules_str = domain_rules_str .. " -speed-check-mode none"
|
||||||
domain_rules_str = domain_rules_str .. " -no-serve-expired"
|
domain_rules_str = domain_rules_str .. " -no-serve-expired"
|
||||||
|
local sets = {
|
||||||
|
"#4:" .. setflag .. "passwall_black"
|
||||||
|
}
|
||||||
if NO_PROXY_IPV6 == "1" then
|
if NO_PROXY_IPV6 == "1" then
|
||||||
domain_rules_str = domain_rules_str .. " -address #6"
|
domain_rules_str = domain_rules_str .. " -address #6"
|
||||||
domain_rules_str = domain_rules_str .. " " .. set_type .. " #4:" .. setflag .. "passwall_blacklist"
|
domain_rules_str = REMOTE_FAKEDNS ~= "1" and (domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",")) or domain_rules_str
|
||||||
else
|
else
|
||||||
domain_rules_str = domain_rules_str .. " -d no " .. set_type .. " #4:" .. setflag .. "passwall_blacklist" .. ",#6:" .. setflag .. "passwall_blacklist6"
|
table.insert(sets, "#6:" .. setflag .. "passwall_black6")
|
||||||
|
domain_rules_str = REMOTE_FAKEDNS ~= "1" and (domain_rules_str .. " -d no " .. set_type .. " " .. table.concat(sets, ",")) or domain_rules_str
|
||||||
end
|
end
|
||||||
table.insert(tmp_lines, domain_rules_str)
|
table.insert(tmp_lines, domain_rules_str)
|
||||||
insert_array_after(config_lines, tmp_lines, "#--5")
|
insert_array_after(config_lines, tmp_lines, "#--5")
|
||||||
@ -395,11 +415,15 @@ if USE_GFW_LIST == "1" and is_file_nonzero(RULES_PATH .. "/gfwlist") then
|
|||||||
local domain_rules_str = string.format('domain-rules /domain-set:%s/ -nameserver %s', domain_set_name, REMOTE_GROUP)
|
local domain_rules_str = string.format('domain-rules /domain-set:%s/ -nameserver %s', domain_set_name, REMOTE_GROUP)
|
||||||
domain_rules_str = domain_rules_str .. " -speed-check-mode none"
|
domain_rules_str = domain_rules_str .. " -speed-check-mode none"
|
||||||
domain_rules_str = domain_rules_str .. " -no-serve-expired"
|
domain_rules_str = domain_rules_str .. " -no-serve-expired"
|
||||||
|
local sets = {
|
||||||
|
"#4:" .. setflag .. "passwall_gfw"
|
||||||
|
}
|
||||||
if NO_PROXY_IPV6 == "1" then
|
if NO_PROXY_IPV6 == "1" then
|
||||||
domain_rules_str = domain_rules_str .. " -address #6"
|
domain_rules_str = domain_rules_str .. " -address #6"
|
||||||
domain_rules_str = domain_rules_str .. " " .. set_type .. " #4:" .. setflag .. "passwall_gfwlist"
|
domain_rules_str = REMOTE_FAKEDNS ~= "1" and (domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",")) or domain_rules_str
|
||||||
else
|
else
|
||||||
domain_rules_str = domain_rules_str .. " -d no " .. set_type .. " #4:" .. setflag .. "passwall_gfwlist" .. ",#6:" .. setflag .. "passwall_gfwlist6"
|
table.insert(sets, "#6:" .. setflag .. "passwall_gfw6")
|
||||||
|
domain_rules_str = REMOTE_FAKEDNS ~= "1" and (domain_rules_str .. " -d no " .. set_type .. " " .. table.concat(sets, ",")) or domain_rules_str
|
||||||
end
|
end
|
||||||
table.insert(tmp_lines, domain_rules_str)
|
table.insert(tmp_lines, domain_rules_str)
|
||||||
insert_array_after(config_lines, tmp_lines, "#--1")
|
insert_array_after(config_lines, tmp_lines, "#--1")
|
||||||
@ -414,8 +438,12 @@ if CHN_LIST ~= "0" and is_file_nonzero(RULES_PATH .. "/chnlist") then
|
|||||||
}
|
}
|
||||||
|
|
||||||
if CHN_LIST == "direct" then
|
if CHN_LIST == "direct" then
|
||||||
|
local sets = {
|
||||||
|
"#4:" .. setflag .. "passwall_chn",
|
||||||
|
"#6:" .. setflag .. "passwall_chn6"
|
||||||
|
}
|
||||||
local domain_rules_str = string.format('domain-rules /domain-set:%s/ %s', domain_set_name, LOCAL_GROUP and "-nameserver " .. LOCAL_GROUP or "")
|
local domain_rules_str = string.format('domain-rules /domain-set:%s/ %s', domain_set_name, LOCAL_GROUP and "-nameserver " .. LOCAL_GROUP or "")
|
||||||
domain_rules_str = domain_rules_str .. " " .. set_type .. " #4:" .. setflag .. "passwall_chnroute,#6:" .. setflag .. "passwall_chnroute6"
|
domain_rules_str = domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",")
|
||||||
domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "")
|
domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "")
|
||||||
table.insert(tmp_lines, domain_rules_str)
|
table.insert(tmp_lines, domain_rules_str)
|
||||||
insert_array_after(config_lines, tmp_lines, "#--2")
|
insert_array_after(config_lines, tmp_lines, "#--2")
|
||||||
@ -427,11 +455,15 @@ if CHN_LIST ~= "0" and is_file_nonzero(RULES_PATH .. "/chnlist") then
|
|||||||
local domain_rules_str = string.format('domain-rules /domain-set:%s/ -nameserver %s', domain_set_name, REMOTE_GROUP)
|
local domain_rules_str = string.format('domain-rules /domain-set:%s/ -nameserver %s', domain_set_name, REMOTE_GROUP)
|
||||||
domain_rules_str = domain_rules_str .. " -speed-check-mode none"
|
domain_rules_str = domain_rules_str .. " -speed-check-mode none"
|
||||||
domain_rules_str = domain_rules_str .. " -no-serve-expired"
|
domain_rules_str = domain_rules_str .. " -no-serve-expired"
|
||||||
|
local sets = {
|
||||||
|
"#4:" .. setflag .. "passwall_chn"
|
||||||
|
}
|
||||||
if NO_PROXY_IPV6 == "1" then
|
if NO_PROXY_IPV6 == "1" then
|
||||||
domain_rules_str = domain_rules_str .. " -address #6"
|
domain_rules_str = domain_rules_str .. " -address #6"
|
||||||
domain_rules_str = domain_rules_str .. " " .. set_type .. " #4:" .. setflag .. "passwall_chnroute"
|
domain_rules_str = REMOTE_FAKEDNS ~= "1" and (domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",")) or domain_rules_str
|
||||||
else
|
else
|
||||||
domain_rules_str = domain_rules_str .. " -d no " .. set_type .. " #4:" .. setflag .. "passwall_chnroute" .. ",#6:" .. setflag .. "passwall_chnroute6"
|
table.insert(sets, "#6:" .. setflag .. "passwall_chn6")
|
||||||
|
domain_rules_str = REMOTE_FAKEDNS ~= "1" and (domain_rules_str .. " -d no " .. set_type .. " " .. table.concat(sets, ",")) or domain_rules_str
|
||||||
end
|
end
|
||||||
table.insert(tmp_lines, domain_rules_str)
|
table.insert(tmp_lines, domain_rules_str)
|
||||||
insert_array_after(config_lines, tmp_lines, "#--2")
|
insert_array_after(config_lines, tmp_lines, "#--2")
|
||||||
@ -525,9 +557,17 @@ if uci:get(appname, TCP_NODE, "protocol") == "_shunt" then
|
|||||||
}
|
}
|
||||||
local domain_rules_str = string.format('domain-rules /domain-set:%s/ %s', domain_set_name, LOCAL_GROUP and "-nameserver " .. LOCAL_GROUP or "")
|
local domain_rules_str = string.format('domain-rules /domain-set:%s/ %s', domain_set_name, LOCAL_GROUP and "-nameserver " .. LOCAL_GROUP or "")
|
||||||
if USE_DIRECT_LIST == "1" then
|
if USE_DIRECT_LIST == "1" then
|
||||||
domain_rules_str = domain_rules_str .. " " .. set_type .. " #4:" .. setflag .. "passwall_whitelist,#6:" .. setflag .. "passwall_whitelist6"
|
local sets = {
|
||||||
|
"#4:" .. setflag .. "passwall_white",
|
||||||
|
"#6:" .. setflag .. "passwall_white6"
|
||||||
|
}
|
||||||
|
domain_rules_str = domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",")
|
||||||
else
|
else
|
||||||
domain_rules_str = domain_rules_str .. " " .. set_type .. " #4:" .. setflag .. "passwall_shuntlist,#6:" .. setflag .. "passwall_shuntlist6"
|
local sets = {
|
||||||
|
"#4:" .. setflag .. "passwall_shunt",
|
||||||
|
"#6:" .. setflag .. "passwall_shunt6"
|
||||||
|
}
|
||||||
|
domain_rules_str = domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ",")
|
||||||
end
|
end
|
||||||
domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "")
|
domain_rules_str = domain_rules_str .. (LOCAL_EXTEND_ARG ~= "" and " " .. LOCAL_EXTEND_ARG or "")
|
||||||
table.insert(tmp_lines, domain_rules_str)
|
table.insert(tmp_lines, domain_rules_str)
|
||||||
@ -542,11 +582,19 @@ if uci:get(appname, TCP_NODE, "protocol") == "_shunt" then
|
|||||||
local domain_rules_str = string.format('domain-rules /domain-set:%s/ -nameserver %s', domain_set_name, REMOTE_GROUP)
|
local domain_rules_str = string.format('domain-rules /domain-set:%s/ -nameserver %s', domain_set_name, REMOTE_GROUP)
|
||||||
domain_rules_str = domain_rules_str .. " -speed-check-mode none"
|
domain_rules_str = domain_rules_str .. " -speed-check-mode none"
|
||||||
domain_rules_str = domain_rules_str .. " -no-serve-expired"
|
domain_rules_str = domain_rules_str .. " -no-serve-expired"
|
||||||
|
local sets = {
|
||||||
|
"#4:" .. setflag .. "passwall_shunt"
|
||||||
|
}
|
||||||
if NO_PROXY_IPV6 == "1" then
|
if NO_PROXY_IPV6 == "1" then
|
||||||
domain_rules_str = domain_rules_str .. " -address #6"
|
domain_rules_str = domain_rules_str .. " -address #6"
|
||||||
domain_rules_str = domain_rules_str .. " " .. set_type .. " #4:" .. setflag .. "passwall_shuntlist"
|
domain_rules_str = (not only_global and REMOTE_FAKEDNS == "1")
|
||||||
|
and domain_rules_str
|
||||||
|
or (domain_rules_str .. " " .. set_type .. " " .. table.concat(sets, ","))
|
||||||
else
|
else
|
||||||
domain_rules_str = domain_rules_str .. " -d no " .. set_type .. " #4:" .. setflag .. "passwall_shuntlist" .. ",#6:" .. setflag .. "passwall_shuntlist6"
|
table.insert(sets, "#6:" .. setflag .. "passwall_shunt6")
|
||||||
|
domain_rules_str = (not only_global and REMOTE_FAKEDNS == "1")
|
||||||
|
and domain_rules_str
|
||||||
|
or (domain_rules_str .. " -d no " .. set_type .. " " .. table.concat(sets, ","))
|
||||||
end
|
end
|
||||||
table.insert(tmp_lines, domain_rules_str)
|
table.insert(tmp_lines, domain_rules_str)
|
||||||
insert_array_after(config_lines, tmp_lines, "#--3")
|
insert_array_after(config_lines, tmp_lines, "#--3")
|
||||||
|
@ -2,25 +2,25 @@
|
|||||||
|
|
||||||
DIR="$(cd "$(dirname "$0")" && pwd)"
|
DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
MY_PATH=$DIR/iptables.sh
|
MY_PATH=$DIR/iptables.sh
|
||||||
IPSET_LOCALLIST="passwall_locallist"
|
IPSET_LOCAL="passwall_local"
|
||||||
IPSET_LANLIST="passwall_lanlist"
|
IPSET_LAN="passwall_lan"
|
||||||
IPSET_VPSLIST="passwall_vpslist"
|
IPSET_VPS="passwall_vps"
|
||||||
IPSET_SHUNTLIST="passwall_shuntlist"
|
IPSET_SHUNT="passwall_shunt"
|
||||||
IPSET_GFW="passwall_gfwlist"
|
IPSET_GFW="passwall_gfw"
|
||||||
IPSET_CHN="passwall_chnroute"
|
IPSET_CHN="passwall_chn"
|
||||||
IPSET_BLACKLIST="passwall_blacklist"
|
IPSET_BLACK="passwall_black"
|
||||||
IPSET_WHITELIST="passwall_whitelist"
|
IPSET_WHITE="passwall_white"
|
||||||
IPSET_BLOCKLIST="passwall_blocklist"
|
IPSET_BLOCK="passwall_block"
|
||||||
|
|
||||||
IPSET_LOCALLIST6="passwall_locallist6"
|
IPSET_LOCAL6="passwall_local6"
|
||||||
IPSET_LANLIST6="passwall_lanlist6"
|
IPSET_LAN6="passwall_lan6"
|
||||||
IPSET_VPSLIST6="passwall_vpslist6"
|
IPSET_VPS6="passwall_vps6"
|
||||||
IPSET_SHUNTLIST6="passwall_shuntlist6"
|
IPSET_SHUNT6="passwall_shunt6"
|
||||||
IPSET_GFW6="passwall_gfwlist6"
|
IPSET_GFW6="passwall_gfw6"
|
||||||
IPSET_CHN6="passwall_chnroute6"
|
IPSET_CHN6="passwall_chn6"
|
||||||
IPSET_BLACKLIST6="passwall_blacklist6"
|
IPSET_BLACK6="passwall_black6"
|
||||||
IPSET_WHITELIST6="passwall_whitelist6"
|
IPSET_WHITE6="passwall_white6"
|
||||||
IPSET_BLOCKLIST6="passwall_blocklist6"
|
IPSET_BLOCK6="passwall_block6"
|
||||||
|
|
||||||
FORCE_INDEX=2
|
FORCE_INDEX=2
|
||||||
|
|
||||||
@ -238,6 +238,12 @@ load_acl() {
|
|||||||
use_shunt_tcp=${USE_SHUNT_TCP}
|
use_shunt_tcp=${USE_SHUNT_TCP}
|
||||||
use_shunt_udp=${USE_SHUNT_UDP}
|
use_shunt_udp=${USE_SHUNT_UDP}
|
||||||
dns_redirect_port=${DNS_REDIRECT_PORT}
|
dns_redirect_port=${DNS_REDIRECT_PORT}
|
||||||
|
black_set_name=${IPSET_BLACK}
|
||||||
|
black6_set_name=${IPSET_BLACK6}
|
||||||
|
gfw_set_name=${IPSET_GFW}
|
||||||
|
gfw6_set_name=${IPSET_GFW6}
|
||||||
|
shunt_set_name=${IPSET_SHUNT}
|
||||||
|
shunt6_set_name=${IPSET_SHUNT6}
|
||||||
}
|
}
|
||||||
|
|
||||||
_acl_list=${TMP_ACL_PATH}/${sid}/source_list
|
_acl_list=${TMP_ACL_PATH}/${sid}/source_list
|
||||||
@ -253,6 +259,8 @@ load_acl() {
|
|||||||
[ -z "${device}" ] && device="${interface}"
|
[ -z "${device}" ] && device="${interface}"
|
||||||
_ipt_source="-i ${device} "
|
_ipt_source="-i ${device} "
|
||||||
msg="源接口【${device}】,"
|
msg="源接口【${device}】,"
|
||||||
|
else
|
||||||
|
msg="源接口【所有】,"
|
||||||
fi
|
fi
|
||||||
if [ -n "$(echo ${i} | grep '^iprange:')" ]; then
|
if [ -n "$(echo ${i} | grep '^iprange:')" ]; then
|
||||||
_iprange=$(echo ${i} | sed 's#iprange:##g')
|
_iprange=$(echo ${i} | sed 's#iprange:##g')
|
||||||
@ -281,6 +289,8 @@ load_acl() {
|
|||||||
_ipt_source=$(factor ${_mac} "${_ipt_source}-m mac --mac-source")
|
_ipt_source=$(factor ${_mac} "${_ipt_source}-m mac --mac-source")
|
||||||
msg="${msg}MAC【${_mac}】,"
|
msg="${msg}MAC【${_mac}】,"
|
||||||
unset _mac
|
unset _mac
|
||||||
|
elif [ -n "$(echo ${i} | grep '^any')" ]; then
|
||||||
|
msg="${msg}所有设备,"
|
||||||
else
|
else
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
@ -316,6 +326,30 @@ load_acl() {
|
|||||||
local dns_redirect
|
local dns_redirect
|
||||||
[ $(config_t_get global dns_redirect "1") = "1" ] && dns_redirect=53
|
[ $(config_t_get global dns_redirect "1") = "1" ] && dns_redirect=53
|
||||||
if ([ -n "$tcp_port" ] && [ -n "${tcp_proxy_mode}" ]) || ([ -n "$udp_port" ] && [ -n "${udp_proxy_mode}" ]); then
|
if ([ -n "$tcp_port" ] && [ -n "${tcp_proxy_mode}" ]) || ([ -n "$udp_port" ] && [ -n "${udp_proxy_mode}" ]); then
|
||||||
|
[ "${use_proxy_list}" = "1" ] && {
|
||||||
|
[ "${use_global_config}" = "0" ] && {
|
||||||
|
black_set_name="passwall_${sid}_black"
|
||||||
|
black6_set_name="passwall_${sid}_black6"
|
||||||
|
ipset -! create $black_set_name nethash maxelem 1048576 timeout 172800
|
||||||
|
ipset -! create $black6_set_name nethash family inet6 maxelem 1048576 timeout 172800
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[ "${use_gfw_list}" = "1" ] && {
|
||||||
|
[ "${use_global_config}" = "0" ] && {
|
||||||
|
gfw_set_name="passwall_${sid}_gfw"
|
||||||
|
gfw6_set_name="passwall_${sid}_gfw6"
|
||||||
|
ipset -! create $gfw_set_name nethash maxelem 1048576 timeout 172800
|
||||||
|
ipset -! create $gfw6_set_name nethash family inet6 maxelem 1048576 timeout 172800
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[ "${use_shunt_tcp}" = "1" -o "${use_shunt_udp}" = "1" ] && {
|
||||||
|
[ "${use_global_config}" = "0" ] && {
|
||||||
|
shunt_set_name="passwall_${sid}_shunt"
|
||||||
|
shunt6_set_name="passwall_${sid}_shunt6"
|
||||||
|
ipset -! create $shunt_set_name nethash maxelem 1048576 timeout 172800
|
||||||
|
ipset -! create $shunt6_set_name nethash family inet6 maxelem 1048576 timeout 172800
|
||||||
|
}
|
||||||
|
}
|
||||||
[ -n "${dns_redirect_port}" ] && dns_redirect=${dns_redirect_port}
|
[ -n "${dns_redirect_port}" ] && dns_redirect=${dns_redirect_port}
|
||||||
else
|
else
|
||||||
[ -n "${DIRECT_DNSMASQ_PORT}" ] && dns_redirect=${DIRECT_DNSMASQ_PORT}
|
[ -n "${DIRECT_DNSMASQ_PORT}" ] && dns_redirect=${DIRECT_DNSMASQ_PORT}
|
||||||
@ -329,47 +363,47 @@ load_acl() {
|
|||||||
$ip6t_n -A PSW_DNS $(comment "$remarks") -p udp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect} 2>/dev/null
|
$ip6t_n -A PSW_DNS $(comment "$remarks") -p udp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect} 2>/dev/null
|
||||||
$ipt_n -A PSW_DNS $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect}
|
$ipt_n -A PSW_DNS $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect}
|
||||||
$ip6t_n -A PSW_DNS $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect} 2>/dev/null
|
$ip6t_n -A PSW_DNS $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect} 2>/dev/null
|
||||||
|
[ -z "$(get_cache_var "ACL_${sid}_tcp_default")" ] && echolog " - ${msg}使用与全局配置不相同节点,已将DNS强制重定向到专用 DNS 服务器。"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$tcp_port" -o -n "$udp_port" ] && {
|
[ -n "$tcp_port" -o -n "$udp_port" ] && {
|
||||||
[ "${use_direct_list}" = "1" ] && $ipt_n -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_WHITELIST) -j RETURN
|
[ "${use_direct_list}" = "1" ] && $ipt_tmp -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_WHITE) -j RETURN
|
||||||
[ "${use_direct_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_WHITELIST) -j RETURN
|
[ "${use_block_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_BLOCK) -j DROP
|
||||||
[ "${use_block_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_BLOCKLIST) -j DROP
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${use_direct_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_WHITELIST6) -j RETURN 2>/dev/null
|
[ "${use_direct_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_WHITE6) -j RETURN 2>/dev/null
|
||||||
[ "${use_block_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_BLOCKLIST6) -j DROP 2>/dev/null
|
[ "${use_block_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") ${_ipt_source} $(dst $IPSET_BLOCK6) -j DROP 2>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$tcp_proxy_drop_ports" != "disable" ] && {
|
[ "$tcp_proxy_drop_ports" != "disable" ] && {
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${use_proxy_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_BLACKLIST6) -j DROP 2>/dev/null
|
[ "${use_proxy_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $black6_set_name) -j DROP 2>/dev/null
|
||||||
[ "${use_gfw_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_GFW6) -j DROP 2>/dev/null
|
[ "${use_gfw_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $gfw6_set_name) -j DROP 2>/dev/null
|
||||||
[ "${chn_list}" != "0" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list} "-j DROP") 2>/dev/null
|
[ "${chn_list}" != "0" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list} "-j DROP") 2>/dev/null
|
||||||
[ "${use_shunt_tcp}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_SHUNTLIST6) -j DROP 2>/dev/null
|
[ "${use_shunt_tcp}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $shunt6_set_name) -j DROP 2>/dev/null
|
||||||
[ "${tcp_proxy_mode}" != "disable" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") -j DROP 2>/dev/null
|
[ "${tcp_proxy_mode}" != "disable" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") -j DROP 2>/dev/null
|
||||||
}
|
}
|
||||||
$ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") -d $FAKE_IP -j DROP
|
$ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") -d $FAKE_IP -j DROP
|
||||||
[ "${use_proxy_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_BLACKLIST) -j DROP
|
[ "${use_proxy_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $black_set_name) -j DROP
|
||||||
[ "${use_gfw_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_GFW) -j DROP
|
[ "${use_gfw_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $gfw_set_name) -j DROP
|
||||||
[ "${chn_list}" != "0" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${chn_list} "-j DROP")
|
[ "${chn_list}" != "0" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${chn_list} "-j DROP")
|
||||||
[ "${use_shunt_tcp}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_SHUNTLIST) -j DROP
|
[ "${use_shunt_tcp}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") $(dst $shunt_set_name) -j DROP
|
||||||
[ "${tcp_proxy_mode}" != "disable" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") -j DROP
|
[ "${tcp_proxy_mode}" != "disable" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "-m multiport --dport") -j DROP
|
||||||
echolog " - ${msg}屏蔽代理 TCP 端口[${tcp_proxy_drop_ports}]"
|
echolog " - ${msg}屏蔽代理 TCP 端口[${tcp_proxy_drop_ports}]"
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$udp_proxy_drop_ports" != "disable" ] && {
|
[ "$udp_proxy_drop_ports" != "disable" ] && {
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${use_proxy_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_BLACKLIST6) -j DROP 2>/dev/null
|
[ "${use_proxy_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $black6_set_name) -j DROP 2>/dev/null
|
||||||
[ "${use_gfw_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_GFW6) -j DROP 2>/dev/null
|
[ "${use_gfw_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $gfw6_set_name) -j DROP 2>/dev/null
|
||||||
[ "${chn_list}" != "0" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list} "-j DROP") 2>/dev/null
|
[ "${chn_list}" != "0" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list} "-j DROP") 2>/dev/null
|
||||||
[ "${use_shunt_udp}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_SHUNTLIST6) -j DROP 2>/dev/null
|
[ "${use_shunt_udp}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $shunt6_set_name) -j DROP 2>/dev/null
|
||||||
[ "${udp_proxy_mode}" != "disable" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") -j DROP 2>/dev/null
|
[ "${udp_proxy_mode}" != "disable" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") -j DROP 2>/dev/null
|
||||||
}
|
}
|
||||||
$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") -d $FAKE_IP -j DROP
|
$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") -d $FAKE_IP -j DROP
|
||||||
[ "${use_proxy_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_BLACKLIST) -j DROP
|
[ "${use_proxy_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $black_set_name) -j DROP
|
||||||
[ "${use_gfw_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_GFW) -j DROP
|
[ "${use_gfw_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $gfw_set_name) -j DROP
|
||||||
[ "${chn_list}" != "0" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${chn_list} "-j DROP")
|
[ "${chn_list}" != "0" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${chn_list} "-j DROP")
|
||||||
[ "${use_shunt_udp}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $IPSET_SHUNTLIST) -j DROP
|
[ "${use_shunt_udp}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") $(dst $shunt_set_name) -j DROP
|
||||||
[ "${udp_proxy_mode}" != "disable" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") -j DROP
|
[ "${udp_proxy_mode}" != "disable" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_proxy_drop_ports "-m multiport --dport") -j DROP
|
||||||
echolog " - ${msg}屏蔽代理 UDP 端口[${udp_proxy_drop_ports}]"
|
echolog " - ${msg}屏蔽代理 UDP 端口[${udp_proxy_drop_ports}]"
|
||||||
}
|
}
|
||||||
@ -389,34 +423,34 @@ load_acl() {
|
|||||||
|
|
||||||
[ "$accept_icmp" = "1" ] && {
|
[ "$accept_icmp" = "1" ] && {
|
||||||
$ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} -d $FAKE_IP $(REDIRECT)
|
$ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} -d $FAKE_IP $(REDIRECT)
|
||||||
[ "${use_proxy_list}" = "1" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(dst $IPSET_BLACKLIST) $(REDIRECT)
|
[ "${use_proxy_list}" = "1" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(dst $black_set_name) $(REDIRECT)
|
||||||
[ "${use_gfw_list}" = "1" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(dst $IPSET_GFW) $(REDIRECT)
|
[ "${use_gfw_list}" = "1" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(dst $gfw_set_name) $(REDIRECT)
|
||||||
[ "${chn_list}" != "0" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(dst $IPSET_CHN) $(get_jump_ipt ${chn_list})
|
[ "${chn_list}" != "0" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(dst $IPSET_CHN) $(get_jump_ipt ${chn_list})
|
||||||
[ "${use_shunt_tcp}" = "1" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(dst $IPSET_SHUNTLIST) $(REDIRECT)
|
[ "${use_shunt_tcp}" = "1" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(dst $shunt_set_name) $(REDIRECT)
|
||||||
[ "${tcp_proxy_mode}" != "disable" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(REDIRECT)
|
[ "${tcp_proxy_mode}" != "disable" ] && $ipt_n -A PSW $(comment "$remarks") -p icmp ${_ipt_source} $(REDIRECT)
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && {
|
[ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${use_proxy_list}" = "1" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(dst $IPSET_BLACKLIST6) $(REDIRECT) 2>/dev/null
|
[ "${use_proxy_list}" = "1" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(dst $black6_set_name) $(REDIRECT) 2>/dev/null
|
||||||
[ "${use_gfw_list}" = "1" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(dst $IPSET_GFW6) $(REDIRECT) 2>/dev/null
|
[ "${use_gfw_list}" = "1" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(dst $gfw6_set_name) $(REDIRECT) 2>/dev/null
|
||||||
[ "${chn_list}" != "0" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list}) 2>/dev/null
|
[ "${chn_list}" != "0" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list}) 2>/dev/null
|
||||||
[ "${use_shunt_tcp}" = "1" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(dst $IPSET_SHUNTLIST6) $(REDIRECT) 2>/dev/null
|
[ "${use_shunt_tcp}" = "1" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(dst $shunt6_set_name) $(REDIRECT) 2>/dev/null
|
||||||
[ "${tcp_proxy_mode}" != "disable" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(REDIRECT) 2>/dev/null
|
[ "${tcp_proxy_mode}" != "disable" ] && $ip6t_n -A PSW $(comment "$remarks") -p ipv6-icmp ${_ipt_source} $(REDIRECT) 2>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
$ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} -d $FAKE_IP ${ipt_j}
|
$ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} -d $FAKE_IP ${ipt_j}
|
||||||
[ "${use_proxy_list}" = "1" ] && $ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $IPSET_BLACKLIST) ${ipt_j}
|
[ "${use_proxy_list}" = "1" ] && $ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $black_set_name) ${ipt_j}
|
||||||
[ "${use_gfw_list}" = "1" ] && $ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $IPSET_GFW) ${ipt_j}
|
[ "${use_gfw_list}" = "1" ] && $ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $gfw_set_name) ${ipt_j}
|
||||||
[ "${chn_list}" != "0" ] && $ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${chn_list} "${ipt_j}")
|
[ "${chn_list}" != "0" ] && $ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${chn_list} "${ipt_j}")
|
||||||
[ "${use_shunt_tcp}" = "1" ] && $ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $IPSET_SHUNTLIST) ${ipt_j}
|
[ "${use_shunt_tcp}" = "1" ] && $ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $shunt_set_name) ${ipt_j}
|
||||||
[ "${tcp_proxy_mode}" != "disable" ] && $ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") ${ipt_j}
|
[ "${tcp_proxy_mode}" != "disable" ] && $ipt_tmp -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") ${ipt_j}
|
||||||
[ -n "${is_tproxy}" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY)
|
[ -n "${is_tproxy}" ] && $ipt_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY)
|
||||||
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${use_proxy_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $IPSET_BLACKLIST6) -j PSW_RULE 2>/dev/null
|
[ "${use_proxy_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $black6_set_name) -j PSW_RULE 2>/dev/null
|
||||||
[ "${use_gfw_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $IPSET_GFW6) -j PSW_RULE 2>/dev/null
|
[ "${use_gfw_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $gfw6_set_name) -j PSW_RULE 2>/dev/null
|
||||||
[ "${chn_list}" != "0" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list} "-j PSW_RULE") 2>/dev/null
|
[ "${chn_list}" != "0" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list} "-j PSW_RULE") 2>/dev/null
|
||||||
[ "${use_shunt_tcp}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $IPSET_SHUNTLIST6) -j PSW_RULE 2>/dev/null
|
[ "${use_shunt_tcp}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") $(dst $shunt6_set_name) -j PSW_RULE 2>/dev/null
|
||||||
[ "${tcp_proxy_mode}" != "disable" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") -j PSW_RULE 2>/dev/null
|
[ "${tcp_proxy_mode}" != "disable" ] && $ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(factor $tcp_redir_ports "-m multiport --dport") -j PSW_RULE 2>/dev/null
|
||||||
$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY) 2>/dev/null
|
$ip6t_m -A PSW $(comment "$remarks") -p tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY) 2>/dev/null
|
||||||
}
|
}
|
||||||
@ -435,18 +469,18 @@ load_acl() {
|
|||||||
msg2="${msg2}(TPROXY:${udp_port})"
|
msg2="${msg2}(TPROXY:${udp_port})"
|
||||||
|
|
||||||
$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} -d $FAKE_IP -j PSW_RULE
|
$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} -d $FAKE_IP -j PSW_RULE
|
||||||
[ "${use_proxy_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $IPSET_BLACKLIST) -j PSW_RULE
|
[ "${use_proxy_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $black_set_name) -j PSW_RULE
|
||||||
[ "${use_gfw_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $IPSET_GFW) -j PSW_RULE
|
[ "${use_gfw_list}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $gfw_set_name) -j PSW_RULE
|
||||||
[ "${chn_list}" != "0" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${chn_list} "-j PSW_RULE")
|
[ "${chn_list}" != "0" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${chn_list} "-j PSW_RULE")
|
||||||
[ "${use_shunt_udp}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $IPSET_SHUNTLIST) -j PSW_RULE
|
[ "${use_shunt_udp}" = "1" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $shunt_set_name) -j PSW_RULE
|
||||||
[ "${udp_proxy_mode}" != "disable" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") -j PSW_RULE
|
[ "${udp_proxy_mode}" != "disable" ] && $ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") -j PSW_RULE
|
||||||
$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(REDIRECT $udp_port TPROXY)
|
$ipt_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(REDIRECT $udp_port TPROXY)
|
||||||
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
|
||||||
[ "${use_proxy_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $IPSET_BLACKLIST6) -j PSW_RULE 2>/dev/null
|
[ "${use_proxy_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $black6_set_name) -j PSW_RULE 2>/dev/null
|
||||||
[ "${use_gfw_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $IPSET_GFW6) -j PSW_RULE 2>/dev/null
|
[ "${use_gfw_list}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $gfw6_set_name) -j PSW_RULE 2>/dev/null
|
||||||
[ "${chn_list}" != "0" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list} "-j PSW_RULE") 2>/dev/null
|
[ "${chn_list}" != "0" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${chn_list} "-j PSW_RULE") 2>/dev/null
|
||||||
[ "${use_shunt_udp}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $IPSET_SHUNTLIST6) -j PSW_RULE 2>/dev/null
|
[ "${use_shunt_udp}" = "1" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") $(dst $shunt6_set_name) -j PSW_RULE 2>/dev/null
|
||||||
[ "${udp_proxy_mode}" != "disable" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") -j PSW_RULE 2>/dev/null
|
[ "${udp_proxy_mode}" != "disable" ] && $ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(factor $udp_redir_ports "-m multiport --dport") -j PSW_RULE 2>/dev/null
|
||||||
$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(REDIRECT $udp_port TPROXY) 2>/dev/null
|
$ip6t_m -A PSW $(comment "$remarks") -p udp ${_ipt_source} $(REDIRECT $udp_port TPROXY) 2>/dev/null
|
||||||
}
|
}
|
||||||
@ -511,44 +545,43 @@ load_acl() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "${TCP_PROXY_MODE}" -o -n "${UDP_PROXY_MODE}" ] && {
|
[ -n "${TCP_PROXY_MODE}" -o -n "${UDP_PROXY_MODE}" ] && {
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && $ipt_n -A PSW $(comment "默认") $(dst $IPSET_WHITELIST) -j RETURN
|
[ "${USE_DIRECT_LIST}" = "1" ] && $ipt_tmp -A PSW $(comment "默认") $(dst $IPSET_WHITE) -j RETURN
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") $(dst $IPSET_WHITELIST) -j RETURN
|
[ "${USE_BLOCK_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") $(dst $IPSET_BLOCK) -j DROP
|
||||||
[ "${USE_BLOCK_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") $(dst $IPSET_BLOCKLIST) -j DROP
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") $(dst $IPSET_WHITELIST6) -j RETURN 2>/dev/null
|
[ "${USE_DIRECT_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") $(dst $IPSET_WHITE6) -j RETURN 2>/dev/null
|
||||||
[ "${USE_BLOCK_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") $(dst $IPSET_BLOCKLIST6) -j DROP 2>/dev/null
|
[ "${USE_BLOCK_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") $(dst $IPSET_BLOCK6) -j DROP 2>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$TCP_PROXY_DROP_PORTS" != "disable" ] && {
|
[ "$TCP_PROXY_DROP_PORTS" != "disable" ] && {
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST6) -j DROP
|
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_BLACK6) -j DROP
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_GFW6) -j DROP
|
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_GFW6) -j DROP
|
||||||
[ "${CHN_LIST}" != "0" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j DROP")
|
[ "${CHN_LIST}" != "0" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j DROP")
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST6) -j DROP
|
[ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT6) -j DROP
|
||||||
[ "${TCP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") -j DROP
|
[ "${TCP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") -j DROP
|
||||||
}
|
}
|
||||||
$ipt_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") -d $FAKE_IP -j DROP
|
$ipt_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") -d $FAKE_IP -j DROP
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST) -j DROP
|
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_BLACK) -j DROP
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_GFW) -j DROP
|
[ "${USE_GFW_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_GFW) -j DROP
|
||||||
[ "${CHN_LIST}" != "0" ] && $ipt_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j DROP")
|
[ "${CHN_LIST}" != "0" ] && $ipt_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j DROP")
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST) -j DROP
|
[ "${USE_SHUNT_TCP}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT) -j DROP
|
||||||
[ "${TCP_PROXY_MODE}" != "disable" ] && $ipt_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") -j DROP
|
[ "${TCP_PROXY_MODE}" != "disable" ] && $ipt_m -A PSW $(comment "默认") -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") -j DROP
|
||||||
echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]"
|
echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]"
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$UDP_PROXY_DROP_PORTS" != "disable" ] && {
|
[ "$UDP_PROXY_DROP_PORTS" != "disable" ] && {
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST6) -j DROP
|
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_BLACK6) -j DROP
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_GFW6) -j DROP
|
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_GFW6) -j DROP
|
||||||
[ "${CHN_LIST}" != "0" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j DROP")
|
[ "${CHN_LIST}" != "0" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j DROP")
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST6) -j DROP
|
[ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT6) -j DROP
|
||||||
[ "${UDP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") -j DROP
|
[ "${UDP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") -j DROP
|
||||||
}
|
}
|
||||||
$ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") -d $FAKE_IP -j DROP
|
$ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") -d $FAKE_IP -j DROP
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST) -j DROP
|
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_BLACK) -j DROP
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_GFW) -j DROP
|
[ "${USE_GFW_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_GFW) -j DROP
|
||||||
[ "${CHN_LIST}" != "0" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j DROP")
|
[ "${CHN_LIST}" != "0" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j DROP")
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST) -j DROP
|
[ "${USE_SHUNT_UDP}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT) -j DROP
|
||||||
[ "${UDP_PROXY_MODE}" != "disable" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") -j DROP
|
[ "${UDP_PROXY_MODE}" != "disable" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") -j DROP
|
||||||
echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]"
|
echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]"
|
||||||
}
|
}
|
||||||
@ -568,34 +601,34 @@ load_acl() {
|
|||||||
|
|
||||||
[ "$accept_icmp" = "1" ] && {
|
[ "$accept_icmp" = "1" ] && {
|
||||||
$ipt_n -A PSW $(comment "默认") -p icmp -d $FAKE_IP $(REDIRECT)
|
$ipt_n -A PSW $(comment "默认") -p icmp -d $FAKE_IP $(REDIRECT)
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(dst $IPSET_BLACKLIST) $(REDIRECT)
|
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(dst $IPSET_BLACK) $(REDIRECT)
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(dst $IPSET_GFW) $(REDIRECT)
|
[ "${USE_GFW_LIST}" = "1" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(dst $IPSET_GFW) $(REDIRECT)
|
||||||
[ "${CHN_LIST}" != "0" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST})
|
[ "${CHN_LIST}" != "0" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST})
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(dst $IPSET_SHUNTLIST) $(REDIRECT)
|
[ "${USE_SHUNT_TCP}" = "1" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(dst $IPSET_SHUNT) $(REDIRECT)
|
||||||
[ "${TCP_PROXY_MODE}" != "disable" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(REDIRECT)
|
[ "${TCP_PROXY_MODE}" != "disable" ] && $ipt_n -A PSW $(comment "默认") -p icmp $(REDIRECT)
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && {
|
[ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(dst $IPSET_BLACKLIST6) $(REDIRECT)
|
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(dst $IPSET_BLACK6) $(REDIRECT)
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(dst $IPSET_GFW6) $(REDIRECT)
|
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(dst $IPSET_GFW6) $(REDIRECT)
|
||||||
[ "${CHN_LIST}" != "0" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST})
|
[ "${CHN_LIST}" != "0" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST})
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(dst $IPSET_SHUNTLIST6) $(REDIRECT)
|
[ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(dst $IPSET_SHUNT6) $(REDIRECT)
|
||||||
[ "${TCP_PROXY_MODE}" != "disable" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(REDIRECT)
|
[ "${TCP_PROXY_MODE}" != "disable" ] && $ip6t_n -A PSW $(comment "默认") -p ipv6-icmp $(REDIRECT)
|
||||||
}
|
}
|
||||||
|
|
||||||
$ipt_tmp -A PSW $(comment "默认") -p tcp -d $FAKE_IP ${ipt_j}
|
$ipt_tmp -A PSW $(comment "默认") -p tcp -d $FAKE_IP ${ipt_j}
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_tmp -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST) ${ipt_j}
|
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_tmp -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACK) ${ipt_j}
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ipt_tmp -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW) ${ipt_j}
|
[ "${USE_GFW_LIST}" = "1" ] && $ipt_tmp -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW) ${ipt_j}
|
||||||
[ "${CHN_LIST}" != "0" ] && $ipt_tmp -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "${ipt_j}")
|
[ "${CHN_LIST}" != "0" ] && $ipt_tmp -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "${ipt_j}")
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && $ipt_tmp -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST) ${ipt_j}
|
[ "${USE_SHUNT_TCP}" = "1" ] && $ipt_tmp -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT) ${ipt_j}
|
||||||
[ "${TCP_PROXY_MODE}" != "disable" ] && $ipt_tmp -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") ${ipt_j}
|
[ "${TCP_PROXY_MODE}" != "disable" ] && $ipt_tmp -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") ${ipt_j}
|
||||||
[ -n "${is_tproxy}" ]&& $ipt_tmp -A PSW $(comment "默认") -p tcp $(REDIRECT $TCP_REDIR_PORT TPROXY)
|
[ -n "${is_tproxy}" ]&& $ipt_tmp -A PSW $(comment "默认") -p tcp $(REDIRECT $TCP_REDIR_PORT TPROXY)
|
||||||
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST6) -j PSW_RULE
|
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACK6) -j PSW_RULE
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW6) -j PSW_RULE
|
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW6) -j PSW_RULE
|
||||||
[ "${CHN_LIST}" != "0" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")
|
[ "${CHN_LIST}" != "0" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST6) -j PSW_RULE
|
[ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT6) -j PSW_RULE
|
||||||
[ "${TCP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") -j PSW_RULE
|
[ "${TCP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW $(comment "默认") -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") -j PSW_RULE
|
||||||
$ip6t_m -A PSW $(comment "默认") -p tcp $(REDIRECT $TCP_REDIR_PORT TPROXY)
|
$ip6t_m -A PSW $(comment "默认") -p tcp $(REDIRECT $TCP_REDIR_PORT TPROXY)
|
||||||
}
|
}
|
||||||
@ -613,18 +646,18 @@ load_acl() {
|
|||||||
msg2="${msg}使用 UDP 节点[$(config_n_get $UDP_NODE remarks)](TPROXY:${UDP_REDIR_PORT})"
|
msg2="${msg}使用 UDP 节点[$(config_n_get $UDP_NODE remarks)](TPROXY:${UDP_REDIR_PORT})"
|
||||||
|
|
||||||
$ipt_m -A PSW $(comment "默认") -p udp -d $FAKE_IP -j PSW_RULE
|
$ipt_m -A PSW $(comment "默认") -p udp -d $FAKE_IP -j PSW_RULE
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST) -j PSW_RULE
|
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACK) -j PSW_RULE
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW) -j PSW_RULE
|
[ "${USE_GFW_LIST}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW) -j PSW_RULE
|
||||||
[ "${CHN_LIST}" != "0" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")
|
[ "${CHN_LIST}" != "0" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST) -j PSW_RULE
|
[ "${USE_SHUNT_UDP}" = "1" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT) -j PSW_RULE
|
||||||
[ "${UDP_PROXY_MODE}" != "disable" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") -j PSW_RULE
|
[ "${UDP_PROXY_MODE}" != "disable" ] && $ipt_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") -j PSW_RULE
|
||||||
$ipt_m -A PSW $(comment "默认") -p udp $(REDIRECT $UDP_REDIR_PORT TPROXY)
|
$ipt_m -A PSW $(comment "默认") -p udp $(REDIRECT $UDP_REDIR_PORT TPROXY)
|
||||||
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST6) -j PSW_RULE
|
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACK6) -j PSW_RULE
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW6) -j PSW_RULE
|
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW6) -j PSW_RULE
|
||||||
[ "${CHN_LIST}" != "0" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")
|
[ "${CHN_LIST}" != "0" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST6) -j PSW_RULE
|
[ "${USE_SHUNT_UDP}" = "1" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT6) -j PSW_RULE
|
||||||
[ "${UDP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") -j PSW_RULE
|
[ "${UDP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW $(comment "默认") -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") -j PSW_RULE
|
||||||
$ip6t_m -A PSW $(comment "默认") -p udp $(REDIRECT $UDP_REDIR_PORT TPROXY)
|
$ip6t_m -A PSW $(comment "默认") -p udp $(REDIRECT $UDP_REDIR_PORT TPROXY)
|
||||||
}
|
}
|
||||||
@ -640,16 +673,16 @@ load_acl() {
|
|||||||
filter_haproxy() {
|
filter_haproxy() {
|
||||||
for item in ${haproxy_items}; do
|
for item in ${haproxy_items}; do
|
||||||
local ip=$(get_host_ip ipv4 $(echo $item | awk -F ":" '{print $1}') 1)
|
local ip=$(get_host_ip ipv4 $(echo $item | awk -F ":" '{print $1}') 1)
|
||||||
ipset -q add $IPSET_VPSLIST $ip
|
ipset -q add $IPSET_VPS $ip
|
||||||
done
|
done
|
||||||
echolog " - [$?]加入负载均衡的节点到ipset[$IPSET_VPSLIST]直连完成"
|
echolog " - [$?]加入负载均衡的节点到ipset[$IPSET_VPS]直连完成"
|
||||||
}
|
}
|
||||||
|
|
||||||
filter_vpsip() {
|
filter_vpsip() {
|
||||||
uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -v "^127\.0\.0\.1$" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_VPSLIST &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -v "^127\.0\.0\.1$" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_VPS &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
echolog " - [$?]加入所有IPv4节点到ipset[$IPSET_VPSLIST]直连完成"
|
echolog " - [$?]加入所有IPv4节点到ipset[$IPSET_VPS]直连完成"
|
||||||
uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_VPSLIST6 &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_VPS6 &/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
echolog " - [$?]加入所有IPv6节点到ipset[$IPSET_VPSLIST6]直连完成"
|
echolog " - [$?]加入所有IPv6节点到ipset[$IPSET_VPS6]直连完成"
|
||||||
}
|
}
|
||||||
|
|
||||||
filter_server_port() {
|
filter_server_port() {
|
||||||
@ -698,25 +731,25 @@ filter_direct_node_list() {
|
|||||||
|
|
||||||
add_firewall_rule() {
|
add_firewall_rule() {
|
||||||
echolog "开始加载防火墙规则..."
|
echolog "开始加载防火墙规则..."
|
||||||
ipset -! create $IPSET_LOCALLIST nethash maxelem 1048576
|
ipset -! create $IPSET_LOCAL nethash maxelem 1048576
|
||||||
ipset -! create $IPSET_LANLIST nethash maxelem 1048576
|
ipset -! create $IPSET_LAN nethash maxelem 1048576
|
||||||
ipset -! create $IPSET_VPSLIST nethash maxelem 1048576
|
ipset -! create $IPSET_VPS nethash maxelem 1048576
|
||||||
ipset -! create $IPSET_SHUNTLIST nethash maxelem 1048576 timeout 172800
|
ipset -! create $IPSET_SHUNT nethash maxelem 1048576 timeout 172800
|
||||||
ipset -! create $IPSET_GFW nethash maxelem 1048576 timeout 172800
|
ipset -! create $IPSET_GFW nethash maxelem 1048576 timeout 172800
|
||||||
ipset -! create $IPSET_CHN nethash maxelem 1048576 timeout 172800
|
ipset -! create $IPSET_CHN nethash maxelem 1048576 timeout 172800
|
||||||
ipset -! create $IPSET_BLACKLIST nethash maxelem 1048576 timeout 172800
|
ipset -! create $IPSET_BLACK nethash maxelem 1048576 timeout 172800
|
||||||
ipset -! create $IPSET_WHITELIST nethash maxelem 1048576 timeout 172800
|
ipset -! create $IPSET_WHITE nethash maxelem 1048576 timeout 172800
|
||||||
ipset -! create $IPSET_BLOCKLIST nethash maxelem 1048576 timeout 172800
|
ipset -! create $IPSET_BLOCK nethash maxelem 1048576 timeout 172800
|
||||||
|
|
||||||
ipset -! create $IPSET_LOCALLIST6 nethash family inet6 maxelem 1048576
|
ipset -! create $IPSET_LOCAL6 nethash family inet6 maxelem 1048576
|
||||||
ipset -! create $IPSET_LANLIST6 nethash family inet6 maxelem 1048576
|
ipset -! create $IPSET_LAN6 nethash family inet6 maxelem 1048576
|
||||||
ipset -! create $IPSET_VPSLIST6 nethash family inet6 maxelem 1048576
|
ipset -! create $IPSET_VPS6 nethash family inet6 maxelem 1048576
|
||||||
ipset -! create $IPSET_SHUNTLIST6 nethash family inet6 maxelem 1048576 timeout 172800
|
ipset -! create $IPSET_SHUNT6 nethash family inet6 maxelem 1048576 timeout 172800
|
||||||
ipset -! create $IPSET_GFW6 nethash family inet6 maxelem 1048576 timeout 172800
|
ipset -! create $IPSET_GFW6 nethash family inet6 maxelem 1048576 timeout 172800
|
||||||
ipset -! create $IPSET_CHN6 nethash family inet6 maxelem 1048576 timeout 172800
|
ipset -! create $IPSET_CHN6 nethash family inet6 maxelem 1048576 timeout 172800
|
||||||
ipset -! create $IPSET_BLACKLIST6 nethash family inet6 maxelem 1048576 timeout 172800
|
ipset -! create $IPSET_BLACK6 nethash family inet6 maxelem 1048576 timeout 172800
|
||||||
ipset -! create $IPSET_WHITELIST6 nethash family inet6 maxelem 1048576 timeout 172800
|
ipset -! create $IPSET_WHITE6 nethash family inet6 maxelem 1048576 timeout 172800
|
||||||
ipset -! create $IPSET_BLOCKLIST6 nethash family inet6 maxelem 1048576 timeout 172800
|
ipset -! create $IPSET_BLOCK6 nethash family inet6 maxelem 1048576 timeout 172800
|
||||||
|
|
||||||
cat $RULES_PATH/chnroute | tr -s '\n' | grep -v "^#" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_CHN &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
cat $RULES_PATH/chnroute | tr -s '\n' | grep -v "^#" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_CHN &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
cat $RULES_PATH/chnroute6 | tr -s '\n' | grep -v "^#" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_CHN6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
cat $RULES_PATH/chnroute6 | tr -s '\n' | grep -v "^#" | sed -e "/^$/d" | sed -e "s/^/add $IPSET_CHN6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
@ -749,13 +782,13 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
#直连列表
|
#直连列表
|
||||||
[ "$USE_DIRECT_LIST_ALL" = "1" ] && {
|
[ "$USE_DIRECT_LIST_ALL" = "1" ] && {
|
||||||
cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_WHITELIST &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_WHITE &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_WHITELIST6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_WHITE6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
[ "$USE_GEOVIEW" = "1" ] && {
|
[ "$USE_GEOVIEW" = "1" ] && {
|
||||||
local GEOIP_CODE=$(cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
local GEOIP_CODE=$(cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
||||||
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
||||||
get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_WHITELIST &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_WHITE &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_WHITELIST6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_WHITE6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
echolog " - [$?]解析并加入[直连列表] GeoIP 到 IPSET 完成"
|
echolog " - [$?]解析并加入[直连列表] GeoIP 到 IPSET 完成"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -763,13 +796,13 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
#代理列表
|
#代理列表
|
||||||
[ "$USE_PROXY_LIST_ALL" = "1" ] && {
|
[ "$USE_PROXY_LIST_ALL" = "1" ] && {
|
||||||
cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_BLACKLIST &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_BLACK &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_BLACKLIST6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_BLACK6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
[ "$USE_GEOVIEW" = "1" ] && {
|
[ "$USE_GEOVIEW" = "1" ] && {
|
||||||
local GEOIP_CODE=$(cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
local GEOIP_CODE=$(cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
||||||
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
||||||
get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_BLACKLIST &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_BLACK &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_BLACKLIST6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_BLACK6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
echolog " - [$?]解析并加入[代理列表] GeoIP 到 IPSET 完成"
|
echolog " - [$?]解析并加入[代理列表] GeoIP 到 IPSET 完成"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -777,13 +810,13 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
#屏蔽列表
|
#屏蔽列表
|
||||||
[ "$USE_PROXY_LIST_ALL" = "1" ] && {
|
[ "$USE_PROXY_LIST_ALL" = "1" ] && {
|
||||||
cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_BLOCKLIST &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_BLOCK &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_BLOCKLIST6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_BLOCK6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
[ "$USE_GEOVIEW" = "1" ] && {
|
[ "$USE_GEOVIEW" = "1" ] && {
|
||||||
local GEOIP_CODE=$(cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
local GEOIP_CODE=$(cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
||||||
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
||||||
get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_BLOCKLIST &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_BLOCK &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_BLOCKLIST6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_BLOCK6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
echolog " - [$?]解析并加入[屏蔽列表] GeoIP 到 IPSET 完成"
|
echolog " - [$?]解析并加入[屏蔽列表] GeoIP 到 IPSET 完成"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -794,35 +827,35 @@ add_firewall_rule() {
|
|||||||
local GEOIP_CODE=""
|
local GEOIP_CODE=""
|
||||||
local shunt_ids=$(uci show $CONFIG | grep "=shunt_rules" | awk -F '.' '{print $2}' | awk -F '=' '{print $1}')
|
local shunt_ids=$(uci show $CONFIG | grep "=shunt_rules" | awk -F '.' '{print $2}' | awk -F '=' '{print $1}')
|
||||||
for shunt_id in $shunt_ids; do
|
for shunt_id in $shunt_ids; do
|
||||||
config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_SHUNTLIST &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_SHUNT &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_SHUNTLIST6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | grep -v "^#" | sed -e "/^$/d" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_SHUNT6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
[ "$USE_GEOVIEW" = "1" ] && {
|
[ "$USE_GEOVIEW" = "1" ] && {
|
||||||
local geoip_code=$(config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
local geoip_code=$(config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
||||||
[ -n "$geoip_code" ] && GEOIP_CODE="${GEOIP_CODE:+$GEOIP_CODE,}$geoip_code"
|
[ -n "$geoip_code" ] && GEOIP_CODE="${GEOIP_CODE:+$GEOIP_CODE,}$geoip_code"
|
||||||
}
|
}
|
||||||
done
|
done
|
||||||
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
||||||
get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_SHUNTLIST &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}" | sed -e "s/^/add $IPSET_SHUNT &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_SHUNTLIST6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "s/^/add $IPSET_SHUNT6 &/g" -e "s/$/ timeout 0/g" | awk '{print $0} END{print "COMMIT"}' | ipset -! -R
|
||||||
echolog " - [$?]解析并加入[分流节点] GeoIP 到 IPSET 完成"
|
echolog " - [$?]解析并加入[分流节点] GeoIP 到 IPSET 完成"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
ipset -! -R <<-EOF
|
ipset -! -R <<-EOF
|
||||||
$(ip address show | grep -w "inet" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/^/add $IPSET_LOCALLIST /")
|
$(ip address show | grep -w "inet" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/^/add $IPSET_LOCAL /")
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
ipset -! -R <<-EOF
|
ipset -! -R <<-EOF
|
||||||
$(ip address show | grep -w "inet6" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/^/add $IPSET_LOCALLIST6 /")
|
$(ip address show | grep -w "inet6" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/^/add $IPSET_LOCAL6 /")
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
#局域网IP列表
|
#局域网IP列表
|
||||||
ipset -! -R <<-EOF
|
ipset -! -R <<-EOF
|
||||||
$(gen_lanlist | sed -e "s/^/add $IPSET_LANLIST /")
|
$(gen_lanlist | sed -e "s/^/add $IPSET_LAN /")
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
ipset -! -R <<-EOF
|
ipset -! -R <<-EOF
|
||||||
$(gen_lanlist_6 | sed -e "s/^/add $IPSET_LANLIST6 /")
|
$(gen_lanlist_6 | sed -e "s/^/add $IPSET_LAN6 /")
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# 忽略特殊IP段
|
# 忽略特殊IP段
|
||||||
@ -835,18 +868,18 @@ add_firewall_rule() {
|
|||||||
#echolog "本机IPv6网段互访直连:${lan_ip6}"
|
#echolog "本机IPv6网段互访直连:${lan_ip6}"
|
||||||
|
|
||||||
[ -n "$lan_ip" ] && ipset -! -R <<-EOF
|
[ -n "$lan_ip" ] && ipset -! -R <<-EOF
|
||||||
$(echo $lan_ip | sed -e "s/ /\n/g" | sed -e "s/^/add $IPSET_LANLIST /")
|
$(echo $lan_ip | sed -e "s/ /\n/g" | sed -e "s/^/add $IPSET_LAN /")
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
[ -n "$lan_ip6" ] && ipset -! -R <<-EOF
|
[ -n "$lan_ip6" ] && ipset -! -R <<-EOF
|
||||||
$(echo $lan_ip6 | sed -e "s/ /\n/g" | sed -e "s/^/add $IPSET_LANLIST6 /")
|
$(echo $lan_ip6 | sed -e "s/ /\n/g" | sed -e "s/^/add $IPSET_LAN6 /")
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -n "$ISP_DNS" ] && {
|
[ -n "$ISP_DNS" ] && {
|
||||||
#echolog "处理 ISP DNS 例外..."
|
#echolog "处理 ISP DNS 例外..."
|
||||||
for ispip in $ISP_DNS; do
|
for ispip in $ISP_DNS; do
|
||||||
ipset -! add $IPSET_WHITELIST $ispip timeout 0
|
ipset -! add $IPSET_WHITE $ispip timeout 0
|
||||||
echolog " - [$?]追加ISP IPv4 DNS到白名单:${ispip}"
|
echolog " - [$?]追加ISP IPv4 DNS到白名单:${ispip}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@ -854,7 +887,7 @@ add_firewall_rule() {
|
|||||||
[ -n "$ISP_DNS6" ] && {
|
[ -n "$ISP_DNS6" ] && {
|
||||||
#echolog "处理 ISP IPv6 DNS 例外..."
|
#echolog "处理 ISP IPv6 DNS 例外..."
|
||||||
for ispip6 in $ISP_DNS6; do
|
for ispip6 in $ISP_DNS6; do
|
||||||
ipset -! add $IPSET_WHITELIST6 $ispip6 timeout 0
|
ipset -! add $IPSET_WHITE6 $ispip6 timeout 0
|
||||||
echolog " - [$?]追加ISP IPv6 DNS到白名单:${ispip6}"
|
echolog " - [$?]追加ISP IPv6 DNS到白名单:${ispip6}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@ -874,8 +907,8 @@ add_firewall_rule() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
$ipt_n -N PSW
|
$ipt_n -N PSW
|
||||||
$ipt_n -A PSW $(dst $IPSET_LANLIST) -j RETURN
|
$ipt_n -A PSW $(dst $IPSET_LAN) -j RETURN
|
||||||
$ipt_n -A PSW $(dst $IPSET_VPSLIST) -j RETURN
|
$ipt_n -A PSW $(dst $IPSET_VPS) -j RETURN
|
||||||
|
|
||||||
WAN_IP=$(get_wan_ip)
|
WAN_IP=$(get_wan_ip)
|
||||||
[ ! -z "${WAN_IP}" ] && $ipt_n -A PSW $(comment "WAN_IP_RETURN") -d "${WAN_IP}" -j RETURN
|
[ ! -z "${WAN_IP}" ] && $ipt_n -A PSW $(comment "WAN_IP_RETURN") -d "${WAN_IP}" -j RETURN
|
||||||
@ -884,15 +917,15 @@ add_firewall_rule() {
|
|||||||
[ -z "${is_tproxy}" ] && insert_rule_after "$ipt_n" "PREROUTING" "prerouting_rule" "-p tcp -j PSW"
|
[ -z "${is_tproxy}" ] && insert_rule_after "$ipt_n" "PREROUTING" "prerouting_rule" "-p tcp -j PSW"
|
||||||
|
|
||||||
$ipt_n -N PSW_OUTPUT
|
$ipt_n -N PSW_OUTPUT
|
||||||
$ipt_n -A PSW_OUTPUT $(dst $IPSET_LANLIST) -j RETURN
|
$ipt_n -A PSW_OUTPUT $(dst $IPSET_LAN) -j RETURN
|
||||||
$ipt_n -A PSW_OUTPUT $(dst $IPSET_VPSLIST) -j RETURN
|
$ipt_n -A PSW_OUTPUT $(dst $IPSET_VPS) -j RETURN
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && $ipt_n -A PSW_OUTPUT $(dst $IPSET_WHITELIST) -j RETURN
|
[ "${USE_DIRECT_LIST}" = "1" ] && $ipt_n -A PSW_OUTPUT $(dst $IPSET_WHITE) -j RETURN
|
||||||
$ipt_n -A PSW_OUTPUT -m mark --mark 0xff -j RETURN
|
$ipt_n -A PSW_OUTPUT -m mark --mark 0xff -j RETURN
|
||||||
|
|
||||||
$ipt_n -N PSW_DNS
|
$ipt_n -N PSW_DNS
|
||||||
if [ $(config_t_get global dns_redirect "1") = "0" ]; then
|
if [ $(config_t_get global dns_redirect "1") = "0" ]; then
|
||||||
#Only hijack when dest address is local IP
|
#Only hijack when dest address is local IP
|
||||||
$ipt_n -I PREROUTING $(dst $IPSET_LOCALLIST) -j PSW_DNS
|
$ipt_n -I PREROUTING $(dst $IPSET_LOCAL) -j PSW_DNS
|
||||||
else
|
else
|
||||||
$ipt_n -I PREROUTING 1 -j PSW_DNS
|
$ipt_n -I PREROUTING 1 -j PSW_DNS
|
||||||
fi
|
fi
|
||||||
@ -909,8 +942,8 @@ add_firewall_rule() {
|
|||||||
$ipt_m -A PSW_RULE -j CONNMARK --save-mark
|
$ipt_m -A PSW_RULE -j CONNMARK --save-mark
|
||||||
|
|
||||||
$ipt_m -N PSW
|
$ipt_m -N PSW
|
||||||
$ipt_m -A PSW $(dst $IPSET_LANLIST) -j RETURN
|
$ipt_m -A PSW $(dst $IPSET_LAN) -j RETURN
|
||||||
$ipt_m -A PSW $(dst $IPSET_VPSLIST) -j RETURN
|
$ipt_m -A PSW $(dst $IPSET_VPS) -j RETURN
|
||||||
|
|
||||||
[ ! -z "${WAN_IP}" ] && {
|
[ ! -z "${WAN_IP}" ] && {
|
||||||
$ipt_m -A PSW $(comment "WAN_IP_RETURN") -d "${WAN_IP}" -j RETURN
|
$ipt_m -A PSW $(comment "WAN_IP_RETURN") -d "${WAN_IP}" -j RETURN
|
||||||
@ -922,8 +955,8 @@ add_firewall_rule() {
|
|||||||
insert_rule_before "$ipt_m" "PREROUTING" "PSW" "-p tcp -m socket -j PSW_DIVERT"
|
insert_rule_before "$ipt_m" "PREROUTING" "PSW" "-p tcp -m socket -j PSW_DIVERT"
|
||||||
|
|
||||||
$ipt_m -N PSW_OUTPUT
|
$ipt_m -N PSW_OUTPUT
|
||||||
$ipt_m -A PSW_OUTPUT $(dst $IPSET_LANLIST) -j RETURN
|
$ipt_m -A PSW_OUTPUT $(dst $IPSET_LAN) -j RETURN
|
||||||
$ipt_m -A PSW_OUTPUT $(dst $IPSET_VPSLIST) -j RETURN
|
$ipt_m -A PSW_OUTPUT $(dst $IPSET_VPS) -j RETURN
|
||||||
|
|
||||||
[ -n "$IPT_APPEND_DNS" ] && {
|
[ -n "$IPT_APPEND_DNS" ] && {
|
||||||
local local_dns dns_address dns_port
|
local local_dns dns_address dns_port
|
||||||
@ -942,30 +975,30 @@ add_firewall_rule() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT $(dst $IPSET_WHITELIST) -j RETURN
|
[ "${USE_DIRECT_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT $(dst $IPSET_WHITE) -j RETURN
|
||||||
$ipt_m -A PSW_OUTPUT -m mark --mark 0xff -j RETURN
|
$ipt_m -A PSW_OUTPUT -m mark --mark 0xff -j RETURN
|
||||||
[ "${USE_BLOCK_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT $(dst $IPSET_BLOCKLIST) -j DROP
|
[ "${USE_BLOCK_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT $(dst $IPSET_BLOCK) -j DROP
|
||||||
|
|
||||||
ip rule add fwmark 1 lookup 100
|
ip rule add fwmark 1 lookup 100
|
||||||
ip route add local 0.0.0.0/0 dev lo table 100
|
ip route add local 0.0.0.0/0 dev lo table 100
|
||||||
|
|
||||||
[ "$accept_icmpv6" = "1" ] && {
|
[ "$accept_icmpv6" = "1" ] && {
|
||||||
$ip6t_n -N PSW
|
$ip6t_n -N PSW
|
||||||
$ip6t_n -A PSW $(dst $IPSET_LANLIST6) -j RETURN
|
$ip6t_n -A PSW $(dst $IPSET_LAN6) -j RETURN
|
||||||
$ip6t_n -A PSW $(dst $IPSET_VPSLIST6) -j RETURN
|
$ip6t_n -A PSW $(dst $IPSET_VPS6) -j RETURN
|
||||||
$ip6t_n -A PREROUTING -p ipv6-icmp -j PSW
|
$ip6t_n -A PREROUTING -p ipv6-icmp -j PSW
|
||||||
|
|
||||||
$ip6t_n -N PSW_OUTPUT
|
$ip6t_n -N PSW_OUTPUT
|
||||||
$ip6t_n -A PSW_OUTPUT $(dst $IPSET_LANLIST6) -j RETURN
|
$ip6t_n -A PSW_OUTPUT $(dst $IPSET_LAN6) -j RETURN
|
||||||
$ip6t_n -A PSW_OUTPUT $(dst $IPSET_VPSLIST6) -j RETURN
|
$ip6t_n -A PSW_OUTPUT $(dst $IPSET_VPS6) -j RETURN
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && $ip6t_n -A PSW_OUTPUT $(dst $IPSET_WHITELIST6) -j RETURN
|
[ "${USE_DIRECT_LIST}" = "1" ] && $ip6t_n -A PSW_OUTPUT $(dst $IPSET_WHITE6) -j RETURN
|
||||||
$ip6t_n -A PSW_OUTPUT -m mark --mark 0xff -j RETURN
|
$ip6t_n -A PSW_OUTPUT -m mark --mark 0xff -j RETURN
|
||||||
}
|
}
|
||||||
|
|
||||||
$ip6t_n -N PSW_DNS
|
$ip6t_n -N PSW_DNS
|
||||||
if [ $(config_t_get global dns_redirect "1") = "0" ]; then
|
if [ $(config_t_get global dns_redirect "1") = "0" ]; then
|
||||||
#Only hijack when dest address is local IP
|
#Only hijack when dest address is local IP
|
||||||
$ip6t_n -I PREROUTING $(dst $IPSET_LOCALLIST6) -j PSW_DNS
|
$ip6t_n -I PREROUTING $(dst $IPSET_LOCAL6) -j PSW_DNS
|
||||||
else
|
else
|
||||||
$ip6t_n -I PREROUTING 1 -j PSW_DNS
|
$ip6t_n -I PREROUTING 1 -j PSW_DNS
|
||||||
fi
|
fi
|
||||||
@ -982,8 +1015,8 @@ add_firewall_rule() {
|
|||||||
$ip6t_m -A PSW_RULE -j CONNMARK --save-mark
|
$ip6t_m -A PSW_RULE -j CONNMARK --save-mark
|
||||||
|
|
||||||
$ip6t_m -N PSW
|
$ip6t_m -N PSW
|
||||||
$ip6t_m -A PSW $(dst $IPSET_LANLIST6) -j RETURN
|
$ip6t_m -A PSW $(dst $IPSET_LAN6) -j RETURN
|
||||||
$ip6t_m -A PSW $(dst $IPSET_VPSLIST6) -j RETURN
|
$ip6t_m -A PSW $(dst $IPSET_VPS6) -j RETURN
|
||||||
|
|
||||||
WAN6_IP=$(get_wan6_ip)
|
WAN6_IP=$(get_wan6_ip)
|
||||||
[ ! -z "${WAN6_IP}" ] && $ip6t_m -A PSW $(comment "WAN6_IP_RETURN") -d ${WAN6_IP} -j RETURN
|
[ ! -z "${WAN6_IP}" ] && $ip6t_m -A PSW $(comment "WAN6_IP_RETURN") -d ${WAN6_IP} -j RETURN
|
||||||
@ -994,10 +1027,10 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
$ip6t_m -N PSW_OUTPUT
|
$ip6t_m -N PSW_OUTPUT
|
||||||
$ip6t_m -A PSW_OUTPUT -m mark --mark 0xff -j RETURN
|
$ip6t_m -A PSW_OUTPUT -m mark --mark 0xff -j RETURN
|
||||||
$ip6t_m -A PSW_OUTPUT $(dst $IPSET_LANLIST6) -j RETURN
|
$ip6t_m -A PSW_OUTPUT $(dst $IPSET_LAN6) -j RETURN
|
||||||
$ip6t_m -A PSW_OUTPUT $(dst $IPSET_VPSLIST6) -j RETURN
|
$ip6t_m -A PSW_OUTPUT $(dst $IPSET_VPS6) -j RETURN
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT $(dst $IPSET_WHITELIST6) -j RETURN
|
[ "${USE_DIRECT_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT $(dst $IPSET_WHITE6) -j RETURN
|
||||||
[ "${USE_BLOCK_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT $(dst $IPSET_BLOCKLIST6) -j DROP
|
[ "${USE_BLOCK_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT $(dst $IPSET_BLOCK6) -j DROP
|
||||||
|
|
||||||
ip -6 rule add fwmark 1 table 100
|
ip -6 rule add fwmark 1 table 100
|
||||||
ip -6 route add local ::/0 dev lo table 100
|
ip -6 route add local ::/0 dev lo table 100
|
||||||
@ -1048,20 +1081,20 @@ add_firewall_rule() {
|
|||||||
[ -n "${LOCALHOST_TCP_PROXY_MODE}" -o -n "${LOCALHOST_UDP_PROXY_MODE}" ] && {
|
[ -n "${LOCALHOST_TCP_PROXY_MODE}" -o -n "${LOCALHOST_UDP_PROXY_MODE}" ] && {
|
||||||
[ "$TCP_PROXY_DROP_PORTS" != "disable" ] && {
|
[ "$TCP_PROXY_DROP_PORTS" != "disable" ] && {
|
||||||
$ipt_m -A PSW_OUTPUT -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") -d $FAKE_IP -j DROP
|
$ipt_m -A PSW_OUTPUT -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") -d $FAKE_IP -j DROP
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST) -j DROP
|
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_BLACK) -j DROP
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_GFW) -j DROP
|
[ "${USE_GFW_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_GFW) -j DROP
|
||||||
[ "${CHN_LIST}" != "0" ] && $ipt_m -A PSW_OUTPUT -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j DROP")
|
[ "${CHN_LIST}" != "0" ] && $ipt_m -A PSW_OUTPUT -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j DROP")
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && $ipt_m -A PSW_OUTPUT -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST) -j DROP
|
[ "${USE_SHUNT_TCP}" = "1" ] && $ipt_m -A PSW_OUTPUT -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT) -j DROP
|
||||||
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && $ipt_m -A PSW_OUTPUT -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") -j DROP
|
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && $ipt_m -A PSW_OUTPUT -p tcp $(factor $TCP_PROXY_DROP_PORTS "-m multiport --dport") -j DROP
|
||||||
echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]"
|
echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]"
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$UDP_PROXY_DROP_PORTS" != "disable" ] && {
|
[ "$UDP_PROXY_DROP_PORTS" != "disable" ] && {
|
||||||
$ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") -d $FAKE_IP -j DROP
|
$ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") -d $FAKE_IP -j DROP
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST) -j DROP
|
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_BLACK) -j DROP
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_GFW) -j DROP
|
[ "${USE_GFW_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_GFW) -j DROP
|
||||||
[ "${CHN_LIST}" != "0" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j DROP")
|
[ "${CHN_LIST}" != "0" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j DROP")
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST) -j DROP
|
[ "${USE_SHUNT_UDP}" = "1" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT) -j DROP
|
||||||
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") -j DROP
|
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_PROXY_DROP_PORTS "-m multiport --dport") -j DROP
|
||||||
echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]"
|
echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]"
|
||||||
}
|
}
|
||||||
@ -1072,7 +1105,7 @@ add_firewall_rule() {
|
|||||||
_proxy_tcp_access() {
|
_proxy_tcp_access() {
|
||||||
[ -n "${2}" ] || return 0
|
[ -n "${2}" ] || return 0
|
||||||
if echo "${2}" | grep -q -v ':'; then
|
if echo "${2}" | grep -q -v ':'; then
|
||||||
ipset -q test $IPSET_LANLIST ${2}
|
ipset -q test $IPSET_LAN ${2}
|
||||||
[ $? -eq 0 ] && {
|
[ $? -eq 0 ] && {
|
||||||
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 TCP 代理转发对该服务器 TCP/${3} 端口的访问"
|
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 TCP 代理转发对该服务器 TCP/${3} 端口的访问"
|
||||||
return 0
|
return 0
|
||||||
@ -1085,7 +1118,7 @@ add_firewall_rule() {
|
|||||||
fi
|
fi
|
||||||
echolog " - [$?]将上游 DNS 服务器 ${2}:${3} 加入到路由器自身代理的 TCP 转发链"
|
echolog " - [$?]将上游 DNS 服务器 ${2}:${3} 加入到路由器自身代理的 TCP 转发链"
|
||||||
else
|
else
|
||||||
ipset -q test $IPSET_LANLIST6 ${2}
|
ipset -q test $IPSET_LAN6 ${2}
|
||||||
[ $? -eq 0 ] && {
|
[ $? -eq 0 ] && {
|
||||||
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 TCP 代理转发对该服务器 TCP/${3} 端口的访问"
|
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 TCP 代理转发对该服务器 TCP/${3} 端口的访问"
|
||||||
return 0
|
return 0
|
||||||
@ -1100,28 +1133,28 @@ add_firewall_rule() {
|
|||||||
[ "$accept_icmp" = "1" ] && {
|
[ "$accept_icmp" = "1" ] && {
|
||||||
$ipt_n -A OUTPUT -p icmp -j PSW_OUTPUT
|
$ipt_n -A OUTPUT -p icmp -j PSW_OUTPUT
|
||||||
$ipt_n -A PSW_OUTPUT -p icmp -d $FAKE_IP $(REDIRECT)
|
$ipt_n -A PSW_OUTPUT -p icmp -d $FAKE_IP $(REDIRECT)
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_n -A PSW_OUTPUT -p icmp $(dst $IPSET_BLACKLIST) $(REDIRECT)
|
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_n -A PSW_OUTPUT -p icmp $(dst $IPSET_BLACK) $(REDIRECT)
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ipt_n -A PSW_OUTPUT -p icmp $(dst $IPSET_GFW) $(REDIRECT)
|
[ "${USE_GFW_LIST}" = "1" ] && $ipt_n -A PSW_OUTPUT -p icmp $(dst $IPSET_GFW) $(REDIRECT)
|
||||||
[ "${CHN_LIST}" != "0" ] && $ipt_n -A PSW_OUTPUT -p icmp $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST})
|
[ "${CHN_LIST}" != "0" ] && $ipt_n -A PSW_OUTPUT -p icmp $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST})
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && $ipt_n -A PSW_OUTPUT -p icmp $(dst $IPSET_SHUNTLIST) $(REDIRECT)
|
[ "${USE_SHUNT_TCP}" = "1" ] && $ipt_n -A PSW_OUTPUT -p icmp $(dst $IPSET_SHUNT) $(REDIRECT)
|
||||||
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && $ipt_n -A PSW_OUTPUT -p icmp $(REDIRECT)
|
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && $ipt_n -A PSW_OUTPUT -p icmp $(REDIRECT)
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$accept_icmpv6" = "1" ] && {
|
[ "$accept_icmpv6" = "1" ] && {
|
||||||
$ip6t_n -A OUTPUT -p ipv6-icmp -j PSW_OUTPUT
|
$ip6t_n -A OUTPUT -p ipv6-icmp -j PSW_OUTPUT
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(dst $IPSET_BLACKLIST6) $(REDIRECT)
|
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(dst $IPSET_BLACK6) $(REDIRECT)
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(dst $IPSET_GFW6) $(REDIRECT)
|
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(dst $IPSET_GFW6) $(REDIRECT)
|
||||||
[ "${CHN_LIST}" != "0" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST})
|
[ "${CHN_LIST}" != "0" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST})
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(dst $IPSET_SHUNTLIST6) $(REDIRECT)
|
[ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(dst $IPSET_SHUNT6) $(REDIRECT)
|
||||||
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(REDIRECT)
|
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && $ip6t_n -A PSW_OUTPUT -p ipv6-icmp $(REDIRECT)
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && {
|
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && {
|
||||||
$ipt_tmp -A PSW_OUTPUT -p tcp -d $FAKE_IP ${ipt_j}
|
$ipt_tmp -A PSW_OUTPUT -p tcp -d $FAKE_IP ${ipt_j}
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_tmp -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST) ${ipt_j}
|
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_tmp -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACK) ${ipt_j}
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ipt_tmp -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW) ${ipt_j}
|
[ "${USE_GFW_LIST}" = "1" ] && $ipt_tmp -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW) ${ipt_j}
|
||||||
[ "${CHN_LIST}" != "0" ] && $ipt_tmp -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "${ipt_j}")
|
[ "${CHN_LIST}" != "0" ] && $ipt_tmp -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "${ipt_j}")
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && $ipt_tmp -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST) ${ipt_j}
|
[ "${USE_SHUNT_TCP}" = "1" ] && $ipt_tmp -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT) ${ipt_j}
|
||||||
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && $ipt_tmp -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") ${ipt_j}
|
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && $ipt_tmp -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") ${ipt_j}
|
||||||
[ -n "${is_tproxy}" ] && $ipt_m -A PSW $(comment "本机") -p tcp -i lo $(REDIRECT $TCP_REDIR_PORT TPROXY)
|
[ -n "${is_tproxy}" ] && $ipt_m -A PSW $(comment "本机") -p tcp -i lo $(REDIRECT $TCP_REDIR_PORT TPROXY)
|
||||||
}
|
}
|
||||||
@ -1133,10 +1166,10 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && {
|
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST6) -j PSW_RULE
|
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACK6) -j PSW_RULE
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW6) -j PSW_RULE
|
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW6) -j PSW_RULE
|
||||||
[ "${CHN_LIST}" != "0" ] && $ip6t_m -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")
|
[ "${CHN_LIST}" != "0" ] && $ip6t_m -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_m -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST6) -j PSW_RULE
|
[ "${USE_SHUNT_TCP}" = "1" ] && $ip6t_m -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT6) -j PSW_RULE
|
||||||
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") -j PSW_RULE
|
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW_OUTPUT -p tcp $(factor $TCP_REDIR_PORTS "-m multiport --dport") -j PSW_RULE
|
||||||
$ip6t_m -A PSW $(comment "本机") -p tcp -i lo $(REDIRECT $TCP_REDIR_PORT TPROXY)
|
$ip6t_m -A PSW $(comment "本机") -p tcp -i lo $(REDIRECT $TCP_REDIR_PORT TPROXY)
|
||||||
}
|
}
|
||||||
@ -1150,7 +1183,7 @@ add_firewall_rule() {
|
|||||||
_proxy_udp_access() {
|
_proxy_udp_access() {
|
||||||
[ -n "${2}" ] || return 0
|
[ -n "${2}" ] || return 0
|
||||||
if echo "${2}" | grep -q -v ':'; then
|
if echo "${2}" | grep -q -v ':'; then
|
||||||
ipset -q test $IPSET_LANLIST ${2}
|
ipset -q test $IPSET_LAN ${2}
|
||||||
[ $? == 0 ] && {
|
[ $? == 0 ] && {
|
||||||
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 UDP 代理转发对该服务器 UDP/${3} 端口的访问"
|
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 UDP 代理转发对该服务器 UDP/${3} 端口的访问"
|
||||||
return 0
|
return 0
|
||||||
@ -1159,7 +1192,7 @@ add_firewall_rule() {
|
|||||||
$ipt_m -I PSW $(comment "本机") -p udp -i lo -d ${2} --dport ${3} $(REDIRECT $UDP_REDIR_PORT TPROXY)
|
$ipt_m -I PSW $(comment "本机") -p udp -i lo -d ${2} --dport ${3} $(REDIRECT $UDP_REDIR_PORT TPROXY)
|
||||||
echolog " - [$?]将上游 DNS 服务器 ${2}:${3} 加入到路由器自身代理的 UDP 转发链"
|
echolog " - [$?]将上游 DNS 服务器 ${2}:${3} 加入到路由器自身代理的 UDP 转发链"
|
||||||
else
|
else
|
||||||
ipset -q test $IPSET_LANLIST6 ${2}
|
ipset -q test $IPSET_LAN6 ${2}
|
||||||
[ $? == 0 ] && {
|
[ $? == 0 ] && {
|
||||||
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 UDP 代理转发对该服务器 UDP/${3} 端口的访问"
|
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 UDP 代理转发对该服务器 UDP/${3} 端口的访问"
|
||||||
return 0
|
return 0
|
||||||
@ -1173,10 +1206,10 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
[ -n "${LOCALHOST_UDP_PROXY_MODE}" ] && {
|
[ -n "${LOCALHOST_UDP_PROXY_MODE}" ] && {
|
||||||
$ipt_m -A PSW_OUTPUT -p udp -d $FAKE_IP -j PSW_RULE
|
$ipt_m -A PSW_OUTPUT -p udp -d $FAKE_IP -j PSW_RULE
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST) -j PSW_RULE
|
[ "${USE_PROXY_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACK) -j PSW_RULE
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW) -j PSW_RULE
|
[ "${USE_GFW_LIST}" = "1" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW) -j PSW_RULE
|
||||||
[ "${CHN_LIST}" != "0" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")
|
[ "${CHN_LIST}" != "0" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST) -j PSW_RULE
|
[ "${USE_SHUNT_UDP}" = "1" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT) -j PSW_RULE
|
||||||
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") -j PSW_RULE
|
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && $ipt_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") -j PSW_RULE
|
||||||
$ipt_m -A PSW $(comment "本机") -p udp -i lo $(REDIRECT $UDP_REDIR_PORT TPROXY)
|
$ipt_m -A PSW $(comment "本机") -p udp -i lo $(REDIRECT $UDP_REDIR_PORT TPROXY)
|
||||||
}
|
}
|
||||||
@ -1185,10 +1218,10 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
|
||||||
[ -n "$LOCALHOST_UDP_PROXY_MODE" ] && {
|
[ -n "$LOCALHOST_UDP_PROXY_MODE" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACKLIST6) -j PSW_RULE
|
[ "${USE_PROXY_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_BLACK6) -j PSW_RULE
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW6) -j PSW_RULE
|
[ "${USE_GFW_LIST}" = "1" ] && $ip6t_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_GFW6) -j PSW_RULE
|
||||||
[ "${CHN_LIST}" != "0" ] && $ip6t_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")
|
[ "${CHN_LIST}" != "0" ] && $ip6t_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_CHN6) $(get_jump_ipt ${CHN_LIST} "-j PSW_RULE")
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && $ip6t_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNTLIST6) -j PSW_RULE
|
[ "${USE_SHUNT_UDP}" = "1" ] && $ip6t_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") $(dst $IPSET_SHUNT6) -j PSW_RULE
|
||||||
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") -j PSW_RULE
|
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && $ip6t_m -A PSW_OUTPUT -p udp $(factor $UDP_REDIR_PORTS "-m multiport --dport") -j PSW_RULE
|
||||||
$ip6t_m -A PSW $(comment "本机") -p udp -i lo $(REDIRECT $UDP_REDIR_PORT TPROXY)
|
$ip6t_m -A PSW $(comment "本机") -p udp -i lo $(REDIRECT $UDP_REDIR_PORT TPROXY)
|
||||||
}
|
}
|
||||||
@ -1207,8 +1240,6 @@ add_firewall_rule() {
|
|||||||
# 加载ACLS
|
# 加载ACLS
|
||||||
load_acl
|
load_acl
|
||||||
|
|
||||||
filter_direct_node_list
|
|
||||||
|
|
||||||
[ -d "${TMP_IFACE_PATH}" ] && {
|
[ -d "${TMP_IFACE_PATH}" ] && {
|
||||||
for iface in $(ls ${TMP_IFACE_PATH}); do
|
for iface in $(ls ${TMP_IFACE_PATH}); do
|
||||||
$ipt_n -I PSW_OUTPUT -o $iface -j RETURN
|
$ipt_n -I PSW_OUTPUT -o $iface -j RETURN
|
||||||
@ -1219,6 +1250,8 @@ add_firewall_rule() {
|
|||||||
$ipt_n -I PREROUTING $(comment "PSW") -m mark --mark 1 -j RETURN
|
$ipt_n -I PREROUTING $(comment "PSW") -m mark --mark 1 -j RETURN
|
||||||
$ip6t_n -I PREROUTING $(comment "PSW") -m mark --mark 1 -j RETURN
|
$ip6t_n -I PREROUTING $(comment "PSW") -m mark --mark 1 -j RETURN
|
||||||
|
|
||||||
|
filter_direct_node_list > /dev/null 2>&1 &
|
||||||
|
|
||||||
echolog "防火墙规则加载完成!"
|
echolog "防火墙规则加载完成!"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1242,25 +1275,25 @@ del_firewall_rule() {
|
|||||||
ip -6 rule del fwmark 1 table 100 2>/dev/null
|
ip -6 rule del fwmark 1 table 100 2>/dev/null
|
||||||
ip -6 route del local ::/0 dev lo table 100 2>/dev/null
|
ip -6 route del local ::/0 dev lo table 100 2>/dev/null
|
||||||
|
|
||||||
destroy_ipset $IPSET_LOCALLIST
|
destroy_ipset $IPSET_LOCAL
|
||||||
destroy_ipset $IPSET_LANLIST
|
destroy_ipset $IPSET_LAN
|
||||||
destroy_ipset $IPSET_VPSLIST
|
destroy_ipset $IPSET_VPS
|
||||||
destroy_ipset $IPSET_SHUNTLIST
|
destroy_ipset $IPSET_SHUNT
|
||||||
#destroy_ipset $IPSET_GFW
|
#destroy_ipset $IPSET_GFW
|
||||||
#destroy_ipset $IPSET_CHN
|
#destroy_ipset $IPSET_CHN
|
||||||
#destroy_ipset $IPSET_BLACKLIST
|
#destroy_ipset $IPSET_BLACK
|
||||||
destroy_ipset $IPSET_BLOCKLIST
|
destroy_ipset $IPSET_BLOCK
|
||||||
destroy_ipset $IPSET_WHITELIST
|
destroy_ipset $IPSET_WHITE
|
||||||
|
|
||||||
destroy_ipset $IPSET_LOCALLIST6
|
destroy_ipset $IPSET_LOCAL6
|
||||||
destroy_ipset $IPSET_LANLIST6
|
destroy_ipset $IPSET_LAN6
|
||||||
destroy_ipset $IPSET_VPSLIST6
|
destroy_ipset $IPSET_VPS6
|
||||||
destroy_ipset $IPSET_SHUNTLIST6
|
destroy_ipset $IPSET_SHUNT6
|
||||||
#destroy_ipset $IPSET_GFW6
|
#destroy_ipset $IPSET_GFW6
|
||||||
#destroy_ipset $IPSET_CHN6
|
#destroy_ipset $IPSET_CHN6
|
||||||
#destroy_ipset $IPSET_BLACKLIST6
|
#destroy_ipset $IPSET_BLACK6
|
||||||
destroy_ipset $IPSET_BLOCKLIST6
|
destroy_ipset $IPSET_BLOCK6
|
||||||
destroy_ipset $IPSET_WHITELIST6
|
destroy_ipset $IPSET_WHITE6
|
||||||
|
|
||||||
$DIR/app.sh echolog "删除iptables防火墙规则完成。"
|
$DIR/app.sh echolog "删除iptables防火墙规则完成。"
|
||||||
}
|
}
|
||||||
@ -1275,7 +1308,7 @@ flush_ipset() {
|
|||||||
flush_ipset_reload() {
|
flush_ipset_reload() {
|
||||||
del_firewall_rule
|
del_firewall_rule
|
||||||
flush_ipset
|
flush_ipset
|
||||||
rm -rf /tmp/singbox_passwall*
|
rm -rf /tmp/etc/passwall_tmp/singbox*
|
||||||
rm -rf /tmp/etc/passwall_tmp/smartdns*
|
rm -rf /tmp/etc/passwall_tmp/smartdns*
|
||||||
rm -rf /tmp/etc/passwall_tmp/dnsmasq*
|
rm -rf /tmp/etc/passwall_tmp/dnsmasq*
|
||||||
/etc/init.d/passwall reload
|
/etc/init.d/passwall reload
|
||||||
|
@ -3,25 +3,25 @@
|
|||||||
DIR="$(cd "$(dirname "$0")" && pwd)"
|
DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
MY_PATH=$DIR/nftables.sh
|
MY_PATH=$DIR/nftables.sh
|
||||||
NFTABLE_NAME="inet passwall"
|
NFTABLE_NAME="inet passwall"
|
||||||
NFTSET_LOCALLIST="passwall_locallist"
|
NFTSET_LOCAL="passwall_local"
|
||||||
NFTSET_LANLIST="passwall_lanlist"
|
NFTSET_LAN="passwall_lan"
|
||||||
NFTSET_VPSLIST="passwall_vpslist"
|
NFTSET_VPS="passwall_vps"
|
||||||
NFTSET_SHUNTLIST="passwall_shuntlist"
|
NFTSET_SHUNT="passwall_shunt"
|
||||||
NFTSET_GFW="passwall_gfwlist"
|
NFTSET_GFW="passwall_gfw"
|
||||||
NFTSET_CHN="passwall_chnroute"
|
NFTSET_CHN="passwall_chn"
|
||||||
NFTSET_BLACKLIST="passwall_blacklist"
|
NFTSET_BLACK="passwall_black"
|
||||||
NFTSET_WHITELIST="passwall_whitelist"
|
NFTSET_WHITE="passwall_white"
|
||||||
NFTSET_BLOCKLIST="passwall_blocklist"
|
NFTSET_BLOCK="passwall_block"
|
||||||
|
|
||||||
NFTSET_LOCALLIST6="passwall_locallist6"
|
NFTSET_LOCAL6="passwall_local6"
|
||||||
NFTSET_LANLIST6="passwall_lanlist6"
|
NFTSET_LAN6="passwall_lan6"
|
||||||
NFTSET_VPSLIST6="passwall_vpslist6"
|
NFTSET_VPS6="passwall_vps6"
|
||||||
NFTSET_SHUNTLIST6="passwall_shuntlist6"
|
NFTSET_SHUNT6="passwall_shunt6"
|
||||||
NFTSET_GFW6="passwall_gfwlist6"
|
NFTSET_GFW6="passwall_gfw6"
|
||||||
NFTSET_CHN6="passwall_chnroute6"
|
NFTSET_CHN6="passwall_chn6"
|
||||||
NFTSET_BLACKLIST6="passwall_blacklist6"
|
NFTSET_BLACK6="passwall_black6"
|
||||||
NFTSET_WHITELIST6="passwall_whitelist6"
|
NFTSET_WHITE6="passwall_white6"
|
||||||
NFTSET_BLOCKLIST6="passwall_blocklist6"
|
NFTSET_BLOCK6="passwall_block6"
|
||||||
|
|
||||||
FORCE_INDEX=0
|
FORCE_INDEX=0
|
||||||
|
|
||||||
@ -298,6 +298,12 @@ load_acl() {
|
|||||||
use_shunt_tcp=${USE_SHUNT_TCP}
|
use_shunt_tcp=${USE_SHUNT_TCP}
|
||||||
use_shunt_udp=${USE_SHUNT_UDP}
|
use_shunt_udp=${USE_SHUNT_UDP}
|
||||||
dns_redirect_port=${DNS_REDIRECT_PORT}
|
dns_redirect_port=${DNS_REDIRECT_PORT}
|
||||||
|
black_set_name=${NFTSET_BLACK}
|
||||||
|
black6_set_name=${NFTSET_BLACK6}
|
||||||
|
gfw_set_name=${NFTSET_GFW}
|
||||||
|
gfw6_set_name=${NFTSET_GFW6}
|
||||||
|
shunt_set_name=${NFTSET_SHUNT}
|
||||||
|
shunt6_set_name=${NFTSET_SHUNT6}
|
||||||
}
|
}
|
||||||
|
|
||||||
_acl_list=${TMP_ACL_PATH}/${sid}/source_list
|
_acl_list=${TMP_ACL_PATH}/${sid}/source_list
|
||||||
@ -313,6 +319,8 @@ load_acl() {
|
|||||||
[ -z "${device}" ] && device="${interface}"
|
[ -z "${device}" ] && device="${interface}"
|
||||||
_ipt_source="iifname ${device} "
|
_ipt_source="iifname ${device} "
|
||||||
msg="源接口【${device}】,"
|
msg="源接口【${device}】,"
|
||||||
|
else
|
||||||
|
msg="源接口【所有】,"
|
||||||
fi
|
fi
|
||||||
if [ -n "$(echo ${i} | grep '^iprange:')" ]; then
|
if [ -n "$(echo ${i} | grep '^iprange:')" ]; then
|
||||||
_iprange=$(echo ${i} | sed 's#iprange:##g')
|
_iprange=$(echo ${i} | sed 's#iprange:##g')
|
||||||
@ -321,7 +329,7 @@ load_acl() {
|
|||||||
unset _iprange
|
unset _iprange
|
||||||
elif [ -n "$(echo ${i} | grep '^ipset:')" ]; then
|
elif [ -n "$(echo ${i} | grep '^ipset:')" ]; then
|
||||||
_ipset=$(echo ${i} | sed 's#ipset:##g')
|
_ipset=$(echo ${i} | sed 's#ipset:##g')
|
||||||
_ipt_source="${_ipt_source}ip daddr @${_ipset}"
|
_ipt_source="${_ipt_source}ip saddr @${_ipset}"
|
||||||
msg="${msg}NFTset【${_ipset}】,"
|
msg="${msg}NFTset【${_ipset}】,"
|
||||||
unset _ipset
|
unset _ipset
|
||||||
elif [ -n "$(echo ${i} | grep '^ip:')" ]; then
|
elif [ -n "$(echo ${i} | grep '^ip:')" ]; then
|
||||||
@ -334,6 +342,8 @@ load_acl() {
|
|||||||
_ipt_source=$(factor ${_mac} "${_ipt_source}ether saddr")
|
_ipt_source=$(factor ${_mac} "${_ipt_source}ether saddr")
|
||||||
msg="${msg}MAC【${_mac}】,"
|
msg="${msg}MAC【${_mac}】,"
|
||||||
unset _mac
|
unset _mac
|
||||||
|
elif [ -n "$(echo ${i} | grep '^any')" ]; then
|
||||||
|
msg="${msg}所有设备,"
|
||||||
else
|
else
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
@ -366,6 +376,30 @@ load_acl() {
|
|||||||
local dns_redirect
|
local dns_redirect
|
||||||
[ $(config_t_get global dns_redirect "1") = "1" ] && dns_redirect=53
|
[ $(config_t_get global dns_redirect "1") = "1" ] && dns_redirect=53
|
||||||
if ([ -n "$tcp_port" ] && [ -n "${tcp_proxy_mode}" ]) || ([ -n "$udp_port" ] && [ -n "${udp_proxy_mode}" ]); then
|
if ([ -n "$tcp_port" ] && [ -n "${tcp_proxy_mode}" ]) || ([ -n "$udp_port" ] && [ -n "${udp_proxy_mode}" ]); then
|
||||||
|
[ "${use_proxy_list}" = "1" ] && {
|
||||||
|
[ "${use_global_config}" = "0" ] && {
|
||||||
|
black_set_name="passwall_${sid}_black"
|
||||||
|
black6_set_name="passwall_${sid}_black6"
|
||||||
|
gen_nftset $black_set_name ipv4_addr "2d" 0
|
||||||
|
gen_nftset $black6_set_name ipv6_addr "2d" 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[ "${use_gfw_list}" = "1" ] && {
|
||||||
|
[ "${use_global_config}" = "0" ] && {
|
||||||
|
gfw_set_name="passwall_${sid}_gfw"
|
||||||
|
gfw6_set_name="passwall_${sid}_gfw6"
|
||||||
|
gen_nftset $gfw_set_name ipv4_addr "2d" 0
|
||||||
|
gen_nftset $gfw6_set_name ipv6_addr "2d" 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[ "${use_shunt_tcp}" = "1" -o "${use_shunt_udp}" = "1" ] && {
|
||||||
|
[ "${use_global_config}" = "0" ] && {
|
||||||
|
shunt_set_name="passwall_${sid}_shunt"
|
||||||
|
shunt6_set_name="passwall_${sid}_shunt6"
|
||||||
|
gen_nftset $shunt_set_name ipv4_addr "2d" 0
|
||||||
|
gen_nftset $shunt6_set_name ipv6_addr "2d" 0
|
||||||
|
}
|
||||||
|
}
|
||||||
[ -n "${dns_redirect_port}" ] && dns_redirect=${dns_redirect_port}
|
[ -n "${dns_redirect_port}" ] && dns_redirect=${dns_redirect_port}
|
||||||
else
|
else
|
||||||
[ -n "${DIRECT_DNSMASQ_PORT}" ] && dns_redirect=${DIRECT_DNSMASQ_PORT}
|
[ -n "${DIRECT_DNSMASQ_PORT}" ] && dns_redirect=${DIRECT_DNSMASQ_PORT}
|
||||||
@ -379,48 +413,49 @@ load_acl() {
|
|||||||
nft "add rule $NFTABLE_NAME PSW_DNS ip protocol tcp ${_ipt_source} tcp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\""
|
nft "add rule $NFTABLE_NAME PSW_DNS ip protocol tcp ${_ipt_source} tcp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_DNS meta l4proto udp ${_ipt_source} udp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\""
|
nft "add rule $NFTABLE_NAME PSW_DNS meta l4proto udp ${_ipt_source} udp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_DNS meta l4proto tcp ${_ipt_source} tcp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\""
|
nft "add rule $NFTABLE_NAME PSW_DNS meta l4proto tcp ${_ipt_source} tcp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\""
|
||||||
|
[ -z "$(get_cache_var "ACL_${sid}_tcp_default")" ] && echolog " - ${msg}使用与全局配置不相同节点,已将DNS强制重定向到专用 DNS 服务器。"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$tcp_port" -o -n "$udp_port" ] && {
|
[ -n "$tcp_port" -o -n "$udp_port" ] && {
|
||||||
[ "${use_direct_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ${_ipt_source} ip daddr @$NFTSET_WHITELIST counter return comment \"$remarks\""
|
[ "${use_direct_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ${_ipt_source} ip daddr @$NFTSET_WHITE counter return comment \"$remarks\""
|
||||||
[ "${use_direct_list}" = "1" ] && [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ${_ipt_source} ip daddr @$NFTSET_WHITELIST counter return comment \"$remarks\""
|
[ "${use_direct_list}" = "1" ] && [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ${_ipt_source} ip daddr @$NFTSET_WHITE counter return comment \"$remarks\""
|
||||||
[ "${use_block_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ${_ipt_source} ip daddr @$NFTSET_BLOCKLIST counter drop comment \"$remarks\""
|
[ "${use_block_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ${_ipt_source} ip daddr @$NFTSET_BLOCK counter drop comment \"$remarks\""
|
||||||
[ "${use_block_list}" = "1" ] && [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ${_ipt_source} ip daddr @$NFTSET_BLOCKLIST counter drop comment \"$remarks\""
|
[ "${use_block_list}" = "1" ] && [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ${_ipt_source} ip daddr @$NFTSET_BLOCK counter drop comment \"$remarks\""
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${use_direct_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ${_ipt_source} ip6 daddr @$NFTSET_WHITELIST6 counter return comment \"$remarks\""
|
[ "${use_direct_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ${_ipt_source} ip6 daddr @$NFTSET_WHITE6 counter return comment \"$remarks\""
|
||||||
[ "${use_block_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ${_ipt_source} ip6 daddr @$NFTSET_BLOCKLIST6 counter drop comment \"$remarks\""
|
[ "${use_block_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ${_ipt_source} ip6 daddr @$NFTSET_BLOCK6 counter drop comment \"$remarks\""
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$tcp_proxy_drop_ports" != "disable" ] && {
|
[ "$tcp_proxy_drop_ports" != "disable" ] && {
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$NFTSET_BLACKLIST6 counter drop comment \"$remarks\"" 2>/dev/null
|
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$black6_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$NFTSET_GFW6 counter drop comment \"$remarks\"" 2>/dev/null
|
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$gfw6_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null
|
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$NFTSET_SHUNTLIST6 counter drop comment \"$remarks\"" 2>/dev/null
|
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip6 daddr @$shunt6_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") counter drop comment \"$remarks\"" 2>/dev/null
|
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
}
|
}
|
||||||
nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr $FAKE_IP counter drop comment \"$remarks\""
|
nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr $FAKE_IP counter drop comment \"$remarks\""
|
||||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$NFTSET_BLACKLIST counter drop comment \"$remarks\""
|
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$black_set_name counter drop comment \"$remarks\""
|
||||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$NFTSET_GFW counter drop comment \"$remarks\""
|
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$gfw_set_name counter drop comment \"$remarks\""
|
||||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\""
|
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\""
|
||||||
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$NFTSET_SHUNTLIST counter drop comment \"$remarks\""
|
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") ip daddr @$shunt_set_name counter drop comment \"$remarks\""
|
||||||
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") counter drop comment \"$remarks\""
|
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp ${_ipt_source} $(factor $tcp_proxy_drop_ports "tcp dport") counter drop comment \"$remarks\""
|
||||||
echolog " - ${msg}屏蔽代理 TCP 端口[${tcp_proxy_drop_ports}]"
|
echolog " - ${msg}屏蔽代理 TCP 端口[${tcp_proxy_drop_ports}]"
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$udp_proxy_drop_ports" != "disable" ] && {
|
[ "$udp_proxy_drop_ports" != "disable" ] && {
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$NFTSET_BLACKLIST6 counter drop comment \"$remarks\"" 2>/dev/null
|
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$black6_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$NFTSET_GFW6 counter drop comment \"$remarks\"" 2>/dev/null
|
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$gfw6_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null
|
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$NFTSET_SHUNTLIST6 counter drop comment \"$remarks\"" 2>/dev/null
|
[ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip6 daddr @$shunt6_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") counter drop comment \"$remarks\"" 2>/dev/null
|
[ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
}
|
}
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr $FAKE_IP counter drop comment \"$remarks\"" 2>/dev/null
|
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr $FAKE_IP counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$NFTSET_BLACKLIST counter drop comment \"$remarks\"" 2>/dev/null
|
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$black_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$NFTSET_GFW counter drop comment \"$remarks\"" 2>/dev/null
|
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$gfw_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null
|
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "counter drop") comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$NFTSET_SHUNTLIST counter drop comment \"$remarks\"" 2>/dev/null
|
[ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") ip daddr @$shunt_set_name counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") counter drop comment \"$remarks\"" 2>/dev/null
|
[ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_proxy_drop_ports "udp dport") counter drop comment \"$remarks\"" 2>/dev/null
|
||||||
echolog " - ${msg}屏蔽代理 UDP 端口[${udp_proxy_drop_ports}]"
|
echolog " - ${msg}屏蔽代理 UDP 端口[${udp_proxy_drop_ports}]"
|
||||||
}
|
}
|
||||||
@ -440,39 +475,39 @@ load_acl() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
[ "$accept_icmp" = "1" ] && {
|
[ "$accept_icmp" = "1" ] && {
|
||||||
[ "${use_direct_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$NFTSET_WHITELIST counter return comment \"$remarks\""
|
[ "${use_direct_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$NFTSET_WHITE counter return comment \"$remarks\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr $FAKE_IP $(REDIRECT) comment \"$remarks\""
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr $FAKE_IP $(REDIRECT) comment \"$remarks\""
|
||||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$NFTSET_BLACKLIST $(REDIRECT) comment \"$remarks\""
|
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$black_set_name $(REDIRECT) comment \"$remarks\""
|
||||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$NFTSET_GFW $(REDIRECT) comment \"$remarks\""
|
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$gfw_set_name $(REDIRECT) comment \"$remarks\""
|
||||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list}) comment \"$remarks\""
|
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list}) comment \"$remarks\""
|
||||||
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$NFTSET_SHUNTLIST $(REDIRECT) comment \"$remarks\""
|
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} ip daddr @$shunt_set_name $(REDIRECT) comment \"$remarks\""
|
||||||
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} $(REDIRECT) comment \"$remarks\""
|
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} $(REDIRECT) comment \"$remarks\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} return comment \"$remarks\""
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ${_ipt_source} return comment \"$remarks\""
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && {
|
[ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${use_direct_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$NFTSET_WHITELIST6 counter return comment \"$remarks\"" 2>/dev/null
|
[ "${use_direct_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$NFTSET_WHITE6 counter return comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$NFTSET_BLACKLIST6 $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$black6_set_name $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$NFTSET_GFW6 $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$gfw6_set_name $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list}) comment \"$remarks\"" 2>/dev/null
|
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list}) comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$NFTSET_SHUNTLIST6 $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} ip6 daddr @$shunt6_set_name $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} $(REDIRECT) comment \"$remarks\"" 2>/dev/null
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} return comment \"$remarks\"" 2>/dev/null
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ${_ipt_source} return comment \"$remarks\"" 2>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} ip daddr $FAKE_IP ${nft_j} comment \"$remarks\""
|
nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} ip daddr $FAKE_IP ${nft_j} comment \"$remarks\""
|
||||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$NFTSET_BLACKLIST ${nft_j} comment \"$remarks\" "
|
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$black_set_name ${nft_j} comment \"$remarks\" "
|
||||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$NFTSET_GFW ${nft_j} comment \"$remarks\" "
|
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$gfw_set_name ${nft_j} comment \"$remarks\" "
|
||||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "${nft_j}") comment \"$remarks\" "
|
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "${nft_j}") comment \"$remarks\" "
|
||||||
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$NFTSET_SHUNTLIST ${nft_j} comment \"$remarks\""
|
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip daddr @$shunt_set_name ${nft_j} comment \"$remarks\""
|
||||||
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ${nft_j} comment \"$remarks\""
|
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ${nft_j} comment \"$remarks\""
|
||||||
[ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY4) comment \"$remarks\""
|
[ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY4) comment \"$remarks\""
|
||||||
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$NFTSET_BLACKLIST6 counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$black6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$NFTSET_GFW6 counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$gfw6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter jump PSW_RULE") comment \"$remarks\" "
|
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter jump PSW_RULE") comment \"$remarks\" "
|
||||||
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$NFTSET_SHUNTLIST6 counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
[ "${use_shunt_tcp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") ip6 daddr @$shunt6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
[ "${tcp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(factor $tcp_redir_ports "tcp dport") counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY) comment \"$remarks\"" 2>/dev/null
|
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp ${_ipt_source} $(REDIRECT $tcp_port TPROXY) comment \"$remarks\"" 2>/dev/null
|
||||||
}
|
}
|
||||||
@ -491,18 +526,18 @@ load_acl() {
|
|||||||
msg2="${msg2}(TPROXY:${udp_port})"
|
msg2="${msg2}(TPROXY:${udp_port})"
|
||||||
|
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} ip daddr $FAKE_IP counter jump PSW_RULE comment \"$remarks\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} ip daddr $FAKE_IP counter jump PSW_RULE comment \"$remarks\""
|
||||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$NFTSET_BLACKLIST counter jump PSW_RULE comment \"$remarks\""
|
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$black_set_name counter jump PSW_RULE comment \"$remarks\""
|
||||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$NFTSET_GFW counter jump PSW_RULE comment \"$remarks\""
|
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$gfw_set_name counter jump PSW_RULE comment \"$remarks\""
|
||||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "counter jump PSW_RULE") comment \"$remarks\""
|
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${chn_list} "counter jump PSW_RULE") comment \"$remarks\""
|
||||||
[ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$NFTSET_SHUNTLIST counter jump PSW_RULE comment \"$remarks\""
|
[ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip daddr @$shunt_set_name counter jump PSW_RULE comment \"$remarks\""
|
||||||
[ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") counter jump PSW_RULE comment \"$remarks\""
|
[ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") counter jump PSW_RULE comment \"$remarks\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(REDIRECT $udp_port TPROXY4) comment \"$remarks\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ${_ipt_source} $(REDIRECT $udp_port TPROXY4) comment \"$remarks\""
|
||||||
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
|
||||||
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$NFTSET_BLACKLIST6 counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
[ "${use_proxy_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$black6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$NFTSET_GFW6 counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
[ "${use_gfw_list}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$gfw6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter jump PSW_RULE") comment \"$remarks\"" 2>/dev/null
|
[ "${chn_list}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${chn_list} "counter jump PSW_RULE") comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$NFTSET_SHUNTLIST6 counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
[ "${use_shunt_udp}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") ip6 daddr @$shunt6_set_name counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||||
[ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
[ "${udp_proxy_mode}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(factor $udp_redir_ports "udp dport") counter jump PSW_RULE comment \"$remarks\"" 2>/dev/null
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(REDIRECT $udp_port TPROXY) comment \"$remarks\"" 2>/dev/null
|
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp ${_ipt_source} $(REDIRECT $udp_port TPROXY) comment \"$remarks\"" 2>/dev/null
|
||||||
}
|
}
|
||||||
@ -564,46 +599,46 @@ load_acl() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "${TCP_PROXY_MODE}" -o -n "${UDP_PROXY_MODE}" ] && {
|
[ -n "${TCP_PROXY_MODE}" -o -n "${UDP_PROXY_MODE}" ] && {
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_WHITELIST counter return comment \"默认\""
|
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_WHITE counter return comment \"默认\""
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_WHITELIST counter return comment \"默认\""
|
[ "${USE_DIRECT_LIST}" = "1" ] && [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_WHITE counter return comment \"默认\""
|
||||||
[ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_BLOCKLIST counter drop comment \"默认\""
|
[ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_BLOCK counter drop comment \"默认\""
|
||||||
[ "${USE_BLOCK_LIST}" = "1" ] && [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_BLOCKLIST counter drop comment \"默认\""
|
[ "${USE_BLOCK_LIST}" = "1" ] && [ -z "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_BLOCK counter drop comment \"默认\""
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_WHITELIST6 counter return comment \"默认\""
|
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_WHITE6 counter return comment \"默认\""
|
||||||
[ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_BLOCKLIST6 counter drop comment \"默认\""
|
[ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_BLOCK6 counter drop comment \"默认\""
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$TCP_PROXY_DROP_PORTS" != "disable" ] && {
|
[ "$TCP_PROXY_DROP_PORTS" != "disable" ] && {
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_BLACKLIST6 counter drop comment \"默认\""
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_BLACK6 counter drop comment \"默认\""
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_GFW6 counter drop comment \"默认\""
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_GFW6 counter drop comment \"默认\""
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\""
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\""
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_SHUNTLIST6 counter drop comment \"默认\""
|
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip6 daddr @$NFTSET_SHUNT6 counter drop comment \"默认\""
|
||||||
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop comment \"默认\""
|
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop comment \"默认\""
|
||||||
}
|
}
|
||||||
|
|
||||||
nft "add $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr $FAKE_IP counter drop comment \"默认\""
|
nft "add $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr $FAKE_IP counter drop comment \"默认\""
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_BLACKLIST counter drop comment \"默认\""
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_BLACK counter drop comment \"默认\""
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_GFW counter drop comment \"默认\""
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_GFW counter drop comment \"默认\""
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\""
|
[ "${CHN_LIST}" != "0" ] && nft "add $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\""
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_SHUNTLIST counter drop comment \"默认\""
|
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") ip daddr @$NFTSET_SHUNT counter drop comment \"默认\""
|
||||||
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop comment \"默认\""
|
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add $NFTABLE_NAME $nft_prerouting_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop comment \"默认\""
|
||||||
echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]"
|
echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]"
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$UDP_PROXY_DROP_PORTS" != "disable" ] && {
|
[ "$UDP_PROXY_DROP_PORTS" != "disable" ] && {
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_BLACKLIST6 counter drop comment \"默认\""
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_BLACK6 counter drop comment \"默认\""
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_GFW6 counter drop comment \"默认\""
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_GFW6 counter drop comment \"默认\""
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\""
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\""
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_SHUNTLIST6 counter drop comment \"默认\""
|
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip6 daddr @$NFTSET_SHUNT6 counter drop comment \"默认\""
|
||||||
[ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop comment \"默认\""
|
[ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop comment \"默认\""
|
||||||
}
|
}
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr $FAKE_IP counter drop comment \"默认\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr $FAKE_IP counter drop comment \"默认\""
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_BLACKLIST counter drop comment \"默认\""
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_BLACK counter drop comment \"默认\""
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_GFW counter drop comment \"默认\""
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_GFW counter drop comment \"默认\""
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\""
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "counter drop") comment \"默认\""
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_SHUNTLIST counter drop comment \"默认\""
|
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") ip daddr @$NFTSET_SHUNT counter drop comment \"默认\""
|
||||||
[ "${UDP_PROXY_MODE}" != "disable" ] && nft "add $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop comment \"默认\""
|
[ "${UDP_PROXY_MODE}" != "disable" ] && nft "add $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop comment \"默认\""
|
||||||
echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]"
|
echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]"
|
||||||
}
|
}
|
||||||
@ -624,40 +659,40 @@ load_acl() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
[ "$accept_icmp" = "1" ] && {
|
[ "$accept_icmp" = "1" ] && {
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip daddr @$NFTSET_WHITELIST counter return comment \"默认\""
|
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip daddr @$NFTSET_WHITE counter return comment \"默认\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr $FAKE_IP $(REDIRECT) comment \"默认\""
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr $FAKE_IP $(REDIRECT) comment \"默认\""
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_BLACKLIST $(REDIRECT) comment \"默认\""
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_BLACK $(REDIRECT) comment \"默认\""
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_GFW $(REDIRECT) comment \"默认\""
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_GFW $(REDIRECT) comment \"默认\""
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST}) comment \"默认\""
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST}) comment \"默认\""
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_SHUNTLIST $(REDIRECT) comment \"默认\""
|
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp ip daddr @$NFTSET_SHUNT $(REDIRECT) comment \"默认\""
|
||||||
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp $(REDIRECT) comment \"默认\""
|
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp $(REDIRECT) comment \"默认\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp return comment \"默认\""
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip protocol icmp return comment \"默认\""
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && {
|
[ "$accept_icmpv6" = "1" ] && [ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip6 daddr @$NFTSET_WHITELIST6 counter return comment \"默认\""
|
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip6 daddr @$NFTSET_WHITE6 counter return comment \"默认\""
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_BLACKLIST6 $(REDIRECT) comment \"默认\""
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_BLACK6 $(REDIRECT) comment \"默认\""
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_GFW6 $(REDIRECT) comment \"默认\""
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_GFW6 $(REDIRECT) comment \"默认\""
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST}) comment \"默认\""
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST}) comment \"默认\""
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_SHUNTLIST6 $(REDIRECT) comment \"默认\""
|
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 ip6 daddr @$NFTSET_SHUNT6 $(REDIRECT) comment \"默认\""
|
||||||
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 $(REDIRECT) comment \"默认\""
|
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 $(REDIRECT) comment \"默认\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 return comment \"默认\""
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT meta l4proto icmpv6 return comment \"默认\""
|
||||||
}
|
}
|
||||||
|
|
||||||
nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr $FAKE_IP ${nft_j} comment \"默认\""
|
nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr $FAKE_IP ${nft_j} comment \"默认\""
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_BLACKLIST ${nft_j} comment \"默认\""
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_BLACK ${nft_j} comment \"默认\""
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_GFW ${nft_j} comment \"默认\""
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_GFW ${nft_j} comment \"默认\""
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "${nft_j}") comment \"默认\""
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "${nft_j}") comment \"默认\""
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_SHUNTLIST ${nft_j} comment \"默认\""
|
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip daddr @$NFTSET_SHUNT ${nft_j} comment \"默认\""
|
||||||
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j} comment \"默认\""
|
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j} comment \"默认\""
|
||||||
[ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(REDIRECT $TCP_REDIR_PORT TPROXY4) comment \"默认\""
|
[ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(REDIRECT $TCP_REDIR_PORT TPROXY4) comment \"默认\""
|
||||||
nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp counter return comment \"默认\""
|
nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp counter return comment \"默认\""
|
||||||
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_BLACKLIST6 counter jump PSW_RULE comment \"默认\""
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_BLACK6 counter jump PSW_RULE comment \"默认\""
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_GFW6 counter jump PSW_RULE comment \"默认\""
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_GFW6 counter jump PSW_RULE comment \"默认\""
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\""
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\""
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_SHUNTLIST6 counter jump PSW_RULE comment \"默认\""
|
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") ip6 daddr @$NFTSET_SHUNT6 counter jump PSW_RULE comment \"默认\""
|
||||||
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE comment \"默认\""
|
[ "${TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE comment \"默认\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(REDIRECT $TCP_REDIR_PORT TPROXY) comment \"默认\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp $(REDIRECT $TCP_REDIR_PORT TPROXY) comment \"默认\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp counter return comment \"默认\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp counter return comment \"默认\""
|
||||||
@ -673,19 +708,19 @@ load_acl() {
|
|||||||
msg2="${msg}使用 UDP 节点[$(config_n_get $UDP_NODE remarks)](TPROXY:${UDP_REDIR_PORT})"
|
msg2="${msg}使用 UDP 节点[$(config_n_get $UDP_NODE remarks)](TPROXY:${UDP_REDIR_PORT})"
|
||||||
|
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ip daddr $FAKE_IP counter jump PSW_RULE comment \"默认\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp ip daddr $FAKE_IP counter jump PSW_RULE comment \"默认\""
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_BLACKLIST counter jump PSW_RULE comment \"默认\""
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_BLACK counter jump PSW_RULE comment \"默认\""
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_GFW counter jump PSW_RULE comment \"默认\""
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_GFW counter jump PSW_RULE comment \"默认\""
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\""
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\""
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_SHUNTLIST counter jump PSW_RULE comment \"默认\""
|
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") ip daddr @$NFTSET_SHUNT counter jump PSW_RULE comment \"默认\""
|
||||||
[ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE comment \"默认\""
|
[ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE comment \"默认\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(REDIRECT $UDP_REDIR_PORT TPROXY4) comment \"默认\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp $(REDIRECT $UDP_REDIR_PORT TPROXY4) comment \"默认\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp counter return comment \"默认\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp counter return comment \"默认\""
|
||||||
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_BLACKLIST6 counter jump PSW_RULE comment \"默认\""
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_BLACK6 counter jump PSW_RULE comment \"默认\""
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_GFW6 counter jump PSW_RULE comment \"默认\""
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_GFW6 counter jump PSW_RULE comment \"默认\""
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\""
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE") comment \"默认\""
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_SHUNTLIST6 counter jump PSW_RULE comment \"默认\""
|
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") ip6 daddr @$NFTSET_SHUNT6 counter jump PSW_RULE comment \"默认\""
|
||||||
[ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE comment \"默认\""
|
[ "${UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE comment \"默认\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(REDIRECT $UDP_REDIR_PORT TPROXY) comment \"默认\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp $(REDIRECT $UDP_REDIR_PORT TPROXY) comment \"默认\""
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp counter return comment \"默认\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp counter return comment \"默认\""
|
||||||
@ -700,25 +735,25 @@ load_acl() {
|
|||||||
filter_haproxy() {
|
filter_haproxy() {
|
||||||
for item in ${haproxy_items}; do
|
for item in ${haproxy_items}; do
|
||||||
local ip=$(get_host_ip ipv4 $(echo $item | awk -F ":" '{print $1}') 1)
|
local ip=$(get_host_ip ipv4 $(echo $item | awk -F ":" '{print $1}') 1)
|
||||||
insert_nftset $NFTSET_VPSLIST "-1" $ip
|
insert_nftset $NFTSET_VPS "-1" $ip
|
||||||
done
|
done
|
||||||
echolog " - [$?]加入负载均衡的节点到nftset[$NFTSET_VPSLIST]直连完成"
|
echolog " - [$?]加入负载均衡的节点到nftset[$NFTSET_VPS]直连完成"
|
||||||
}
|
}
|
||||||
|
|
||||||
filter_vps_addr() {
|
filter_vps_addr() {
|
||||||
for server_host in $@; do
|
for server_host in $@; do
|
||||||
local vps_ip4=$(get_host_ip "ipv4" ${server_host})
|
local vps_ip4=$(get_host_ip "ipv4" ${server_host})
|
||||||
local vps_ip6=$(get_host_ip "ipv6" ${server_host})
|
local vps_ip6=$(get_host_ip "ipv6" ${server_host})
|
||||||
[ -n "$vps_ip4" ] && insert_nftset $NFTSET_VPSLIST "-1" $vps_ip4
|
[ -n "$vps_ip4" ] && insert_nftset $NFTSET_VPS "-1" $vps_ip4
|
||||||
[ -n "$vps_ip6" ] && insert_nftset $NFTSET_VPSLIST6 "-1" $vps_ip6
|
[ -n "$vps_ip6" ] && insert_nftset $NFTSET_VPS6 "-1" $vps_ip6
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
filter_vpsip() {
|
filter_vpsip() {
|
||||||
insert_nftset $NFTSET_VPSLIST "-1" $(uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -v "^127\.0\.0\.1$" | sed -e "/^$/d")
|
insert_nftset $NFTSET_VPS "-1" $(uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" | grep -v "^127\.0\.0\.1$" | sed -e "/^$/d")
|
||||||
echolog " - [$?]加入所有IPv4节点到nftset[$NFTSET_VPSLIST]直连完成"
|
echolog " - [$?]加入所有IPv4节点到nftset[$NFTSET_VPS]直连完成"
|
||||||
insert_nftset $NFTSET_VPSLIST6 "-1" $(uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "/^$/d")
|
insert_nftset $NFTSET_VPS6 "-1" $(uci show $CONFIG | grep -E "(.address=|.download_address=)" | cut -d "'" -f 2 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}" | sed -e "/^$/d")
|
||||||
echolog " - [$?]加入所有IPv6节点到nftset[$NFTSET_VPSLIST6]直连完成"
|
echolog " - [$?]加入所有IPv6节点到nftset[$NFTSET_VPS6]直连完成"
|
||||||
}
|
}
|
||||||
|
|
||||||
filter_server_port() {
|
filter_server_port() {
|
||||||
@ -766,35 +801,35 @@ filter_direct_node_list() {
|
|||||||
add_firewall_rule() {
|
add_firewall_rule() {
|
||||||
echolog "开始加载防火墙规则..."
|
echolog "开始加载防火墙规则..."
|
||||||
gen_nft_tables
|
gen_nft_tables
|
||||||
gen_nftset $NFTSET_VPSLIST ipv4_addr 0 0
|
gen_nftset $NFTSET_VPS ipv4_addr 0 0
|
||||||
gen_nftset $NFTSET_GFW ipv4_addr "2d" 0
|
gen_nftset $NFTSET_GFW ipv4_addr "2d" 0
|
||||||
gen_nftset $NFTSET_LOCALLIST ipv4_addr 0 "-1"
|
gen_nftset $NFTSET_LOCAL ipv4_addr 0 "-1"
|
||||||
gen_nftset $NFTSET_LANLIST ipv4_addr 0 "-1" $(gen_lanlist)
|
gen_nftset $NFTSET_LAN ipv4_addr 0 "-1" $(gen_lanlist)
|
||||||
if [ -f $RULES_PATH/chnroute.nft ] && [ -s $RULES_PATH/chnroute.nft ] && [ $(awk 'END{print NR}' $RULES_PATH/chnroute.nft) -ge 8 ]; then
|
if [ -f $RULES_PATH/chnroute.nft ] && [ -s $RULES_PATH/chnroute.nft ] && [ $(awk 'END{print NR}' $RULES_PATH/chnroute.nft) -ge 8 ]; then
|
||||||
#echolog "使用缓存加载chnroute..."
|
#echolog "使用缓存加载chnroute..."
|
||||||
nft -f $RULES_PATH/chnroute.nft
|
nft -f $RULES_PATH/chnroute.nft
|
||||||
else
|
else
|
||||||
gen_nftset $NFTSET_CHN ipv4_addr "2d" 0 $(cat $RULES_PATH/chnroute | tr -s '\n' | grep -v "^#")
|
gen_nftset $NFTSET_CHN ipv4_addr "2d" 0 $(cat $RULES_PATH/chnroute | tr -s '\n' | grep -v "^#")
|
||||||
fi
|
fi
|
||||||
gen_nftset $NFTSET_BLACKLIST ipv4_addr "2d" 0
|
gen_nftset $NFTSET_BLACK ipv4_addr "2d" 0
|
||||||
gen_nftset $NFTSET_WHITELIST ipv4_addr "2d" 0
|
gen_nftset $NFTSET_WHITE ipv4_addr "2d" 0
|
||||||
gen_nftset $NFTSET_BLOCKLIST ipv4_addr "2d" 0
|
gen_nftset $NFTSET_BLOCK ipv4_addr "2d" 0
|
||||||
gen_nftset $NFTSET_SHUNTLIST ipv4_addr "2d" 0
|
gen_nftset $NFTSET_SHUNT ipv4_addr "2d" 0
|
||||||
|
|
||||||
gen_nftset $NFTSET_VPSLIST6 ipv6_addr 0 0
|
gen_nftset $NFTSET_VPS6 ipv6_addr 0 0
|
||||||
gen_nftset $NFTSET_GFW6 ipv6_addr "2d" 0
|
gen_nftset $NFTSET_GFW6 ipv6_addr "2d" 0
|
||||||
gen_nftset $NFTSET_LOCALLIST6 ipv6_addr 0 "-1"
|
gen_nftset $NFTSET_LOCAL6 ipv6_addr 0 "-1"
|
||||||
gen_nftset $NFTSET_LANLIST6 ipv6_addr 0 "-1" $(gen_lanlist_6)
|
gen_nftset $NFTSET_LAN6 ipv6_addr 0 "-1" $(gen_lanlist_6)
|
||||||
if [ -f $RULES_PATH/chnroute6.nft ] && [ -s $RULES_PATH/chnroute6.nft ] && [ $(awk 'END{print NR}' $RULES_PATH/chnroute6.nft) -ge 8 ]; then
|
if [ -f $RULES_PATH/chnroute6.nft ] && [ -s $RULES_PATH/chnroute6.nft ] && [ $(awk 'END{print NR}' $RULES_PATH/chnroute6.nft) -ge 8 ]; then
|
||||||
#echolog "使用缓存加载chnroute6..."
|
#echolog "使用缓存加载chnroute6..."
|
||||||
nft -f $RULES_PATH/chnroute6.nft
|
nft -f $RULES_PATH/chnroute6.nft
|
||||||
else
|
else
|
||||||
gen_nftset $NFTSET_CHN6 ipv6_addr "2d" 0 $(cat $RULES_PATH/chnroute6 | tr -s '\n' | grep -v "^#")
|
gen_nftset $NFTSET_CHN6 ipv6_addr "2d" 0 $(cat $RULES_PATH/chnroute6 | tr -s '\n' | grep -v "^#")
|
||||||
fi
|
fi
|
||||||
gen_nftset $NFTSET_BLACKLIST6 ipv6_addr "2d" 0
|
gen_nftset $NFTSET_BLACK6 ipv6_addr "2d" 0
|
||||||
gen_nftset $NFTSET_WHITELIST6 ipv6_addr "2d" 0
|
gen_nftset $NFTSET_WHITE6 ipv6_addr "2d" 0
|
||||||
gen_nftset $NFTSET_BLOCKLIST6 ipv6_addr "2d" 0
|
gen_nftset $NFTSET_BLOCK6 ipv6_addr "2d" 0
|
||||||
gen_nftset $NFTSET_SHUNTLIST6 ipv6_addr "2d" 0
|
gen_nftset $NFTSET_SHUNT6 ipv6_addr "2d" 0
|
||||||
|
|
||||||
#导入规则列表、分流规则中的IP列表
|
#导入规则列表、分流规则中的IP列表
|
||||||
local USE_SHUNT_NODE=0
|
local USE_SHUNT_NODE=0
|
||||||
@ -824,13 +859,13 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
#直连列表
|
#直连列表
|
||||||
[ "$USE_DIRECT_LIST_ALL" = "1" ] && {
|
[ "$USE_DIRECT_LIST_ALL" = "1" ] && {
|
||||||
insert_nftset $NFTSET_WHITELIST "0" $(cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
insert_nftset $NFTSET_WHITE "0" $(cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
||||||
insert_nftset $NFTSET_WHITELIST6 "0" $(cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
insert_nftset $NFTSET_WHITE6 "0" $(cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
||||||
[ "$USE_GEOVIEW" = "1" ] && {
|
[ "$USE_GEOVIEW" = "1" ] && {
|
||||||
local GEOIP_CODE=$(cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
local GEOIP_CODE=$(cat $RULES_PATH/direct_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
||||||
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
||||||
insert_nftset $NFTSET_WHITELIST "0" $(get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
insert_nftset $NFTSET_WHITE "0" $(get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
||||||
insert_nftset $NFTSET_WHITELIST6 "0" $(get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
insert_nftset $NFTSET_WHITE6 "0" $(get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
||||||
echolog " - [$?]解析并加入[直连列表] GeoIP 到 NFTSET 完成"
|
echolog " - [$?]解析并加入[直连列表] GeoIP 到 NFTSET 完成"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -838,13 +873,13 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
#代理列表
|
#代理列表
|
||||||
[ "$USE_PROXY_LIST_ALL" = "1" ] && {
|
[ "$USE_PROXY_LIST_ALL" = "1" ] && {
|
||||||
insert_nftset $NFTSET_BLACKLIST "0" $(cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
insert_nftset $NFTSET_BLACK "0" $(cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
||||||
insert_nftset $NFTSET_BLACKLIST6 "0" $(cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
insert_nftset $NFTSET_BLACK6 "0" $(cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
||||||
[ "$USE_GEOVIEW" = "1" ] && {
|
[ "$USE_GEOVIEW" = "1" ] && {
|
||||||
local GEOIP_CODE=$(cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
local GEOIP_CODE=$(cat $RULES_PATH/proxy_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
||||||
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
||||||
insert_nftset $NFTSET_BLACKLIST "0" $(get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
insert_nftset $NFTSET_BLACK "0" $(get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
||||||
insert_nftset $NFTSET_BLACKLIST6 "0" $(get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
insert_nftset $NFTSET_BLACK6 "0" $(get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
||||||
echolog " - [$?]解析并加入[代理列表] GeoIP 到 NFTSET 完成"
|
echolog " - [$?]解析并加入[代理列表] GeoIP 到 NFTSET 完成"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -852,13 +887,13 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
#屏蔽列表
|
#屏蔽列表
|
||||||
[ "$USE_PROXY_LIST_ALL" = "1" ] && {
|
[ "$USE_PROXY_LIST_ALL" = "1" ] && {
|
||||||
insert_nftset $NFTSET_BLOCKLIST "0" $(cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
insert_nftset $NFTSET_BLOCK "0" $(cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
||||||
insert_nftset $NFTSET_BLOCKLIST6 "0" $(cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
insert_nftset $NFTSET_BLOCK6 "0" $(cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
||||||
[ "$USE_GEOVIEW" = "1" ] && {
|
[ "$USE_GEOVIEW" = "1" ] && {
|
||||||
local GEOIP_CODE=$(cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
local GEOIP_CODE=$(cat $RULES_PATH/block_ip | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
||||||
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
||||||
insert_nftset $NFTSET_BLOCKLIST "0" $(get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
insert_nftset $NFTSET_BLOCK "0" $(get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
||||||
insert_nftset $NFTSET_BLOCKLIST6 "0" $(get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
insert_nftset $NFTSET_BLOCK6 "0" $(get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
||||||
echolog " - [$?]解析并加入[屏蔽列表] GeoIP 到 NFTSET 完成"
|
echolog " - [$?]解析并加入[屏蔽列表] GeoIP 到 NFTSET 完成"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -869,22 +904,22 @@ add_firewall_rule() {
|
|||||||
local GEOIP_CODE=""
|
local GEOIP_CODE=""
|
||||||
local shunt_ids=$(uci show $CONFIG | grep "=shunt_rules" | awk -F '.' '{print $2}' | awk -F '=' '{print $1}')
|
local shunt_ids=$(uci show $CONFIG | grep "=shunt_rules" | awk -F '.' '{print $2}' | awk -F '=' '{print $1}')
|
||||||
for shunt_id in $shunt_ids; do
|
for shunt_id in $shunt_ids; do
|
||||||
insert_nftset $NFTSET_SHUNTLIST "0" $(config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
insert_nftset $NFTSET_SHUNT "0" $(config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
||||||
insert_nftset $NFTSET_SHUNTLIST6 "0" $(config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
insert_nftset $NFTSET_SHUNT6 "0" $(config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -v "^#" | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
||||||
[ "$USE_GEOVIEW" = "1" ] && {
|
[ "$USE_GEOVIEW" = "1" ] && {
|
||||||
local geoip_code=$(config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
local geoip_code=$(config_n_get $shunt_id ip_list | tr -s "\r\n" "\n" | sed -e "/^$/d" | grep -E "^geoip:" | grep -v "^geoip:private" | sed -E 's/^geoip:(.*)/\1/' | sed ':a;N;$!ba;s/\n/,/g')
|
||||||
[ -n "$geoip_code" ] && GEOIP_CODE="${GEOIP_CODE:+$GEOIP_CODE,}$geoip_code"
|
[ -n "$geoip_code" ] && GEOIP_CODE="${GEOIP_CODE:+$GEOIP_CODE,}$geoip_code"
|
||||||
}
|
}
|
||||||
done
|
done
|
||||||
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
if [ -n "$GEOIP_CODE" ] && type geoview &> /dev/null; then
|
||||||
insert_nftset $NFTSET_SHUNTLIST "0" $(get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
insert_nftset $NFTSET_SHUNT "0" $(get_geoip $GEOIP_CODE ipv4 | grep -E "(\.((2(5[0-5]|[0-4][0-9]))|[0-1]?[0-9]{1,2})){3}")
|
||||||
insert_nftset $NFTSET_SHUNTLIST6 "0" $(get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
insert_nftset $NFTSET_SHUNT6 "0" $(get_geoip $GEOIP_CODE ipv6 | grep -E "([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4}")
|
||||||
echolog " - [$?]解析并加入[分流节点] GeoIP 到 NFTSET 完成"
|
echolog " - [$?]解析并加入[分流节点] GeoIP 到 NFTSET 完成"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
insert_nftset $NFTSET_LOCALLIST "-1" $(ip address show | grep -w "inet" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/ /\n/g")
|
insert_nftset $NFTSET_LOCAL "-1" $(ip address show | grep -w "inet" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/ /\n/g")
|
||||||
insert_nftset $NFTSET_LOCALLIST6 "-1" $(ip address show | grep -w "inet6" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/ /\n/g")
|
insert_nftset $NFTSET_LOCAL6 "-1" $(ip address show | grep -w "inet6" | awk '{print $2}' | awk -F '/' '{print $1}' | sed -e "s/ /\n/g")
|
||||||
|
|
||||||
# 忽略特殊IP段
|
# 忽略特殊IP段
|
||||||
local lan_ifname lan_ip
|
local lan_ifname lan_ip
|
||||||
@ -895,14 +930,14 @@ add_firewall_rule() {
|
|||||||
#echolog "本机IPv4网段互访直连:${lan_ip}"
|
#echolog "本机IPv4网段互访直连:${lan_ip}"
|
||||||
#echolog "本机IPv6网段互访直连:${lan_ip6}"
|
#echolog "本机IPv6网段互访直连:${lan_ip6}"
|
||||||
|
|
||||||
[ -n "$lan_ip" ] && insert_nftset $NFTSET_LANLIST "-1" $(echo $lan_ip | sed -e "s/ /\n/g")
|
[ -n "$lan_ip" ] && insert_nftset $NFTSET_LAN "-1" $(echo $lan_ip | sed -e "s/ /\n/g")
|
||||||
[ -n "$lan_ip6" ] && insert_nftset $NFTSET_LANLIST6 "-1" $(echo $lan_ip6 | sed -e "s/ /\n/g")
|
[ -n "$lan_ip6" ] && insert_nftset $NFTSET_LAN6 "-1" $(echo $lan_ip6 | sed -e "s/ /\n/g")
|
||||||
}
|
}
|
||||||
|
|
||||||
[ -n "$ISP_DNS" ] && {
|
[ -n "$ISP_DNS" ] && {
|
||||||
#echolog "处理 ISP DNS 例外..."
|
#echolog "处理 ISP DNS 例外..."
|
||||||
for ispip in $ISP_DNS; do
|
for ispip in $ISP_DNS; do
|
||||||
insert_nftset $NFTSET_WHITELIST 0 $ispip
|
insert_nftset $NFTSET_WHITE 0 $ispip
|
||||||
echolog " - [$?]追加ISP IPv4 DNS到白名单:${ispip}"
|
echolog " - [$?]追加ISP IPv4 DNS到白名单:${ispip}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@ -910,7 +945,7 @@ add_firewall_rule() {
|
|||||||
[ -n "$ISP_DNS6" ] && {
|
[ -n "$ISP_DNS6" ] && {
|
||||||
#echolog "处理 ISP IPv6 DNS 例外..."
|
#echolog "处理 ISP IPv6 DNS 例外..."
|
||||||
for ispip6 in $ISP_DNS6; do
|
for ispip6 in $ISP_DNS6; do
|
||||||
insert_nftset $NFTSET_WHITELIST6 0 $ispip6
|
insert_nftset $NFTSET_WHITE6 0 $ispip6
|
||||||
echolog " - [$?]追加ISP IPv6 DNS到白名单:${ispip6}"
|
echolog " - [$?]追加ISP IPv6 DNS到白名单:${ispip6}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@ -944,8 +979,8 @@ add_firewall_rule() {
|
|||||||
nft "flush chain $NFTABLE_NAME PSW_DNS"
|
nft "flush chain $NFTABLE_NAME PSW_DNS"
|
||||||
if [ $(config_t_get global dns_redirect "1") = "0" ]; then
|
if [ $(config_t_get global dns_redirect "1") = "0" ]; then
|
||||||
#Only hijack when dest address is local IP
|
#Only hijack when dest address is local IP
|
||||||
nft "insert rule $NFTABLE_NAME dstnat ip daddr @${NFTSET_LOCALLIST} jump PSW_DNS"
|
nft "insert rule $NFTABLE_NAME dstnat ip daddr @${NFTSET_LOCAL} jump PSW_DNS"
|
||||||
nft "insert rule $NFTABLE_NAME dstnat ip6 daddr @${NFTSET_LOCALLIST6} jump PSW_DNS"
|
nft "insert rule $NFTABLE_NAME dstnat ip6 daddr @${NFTSET_LOCAL6} jump PSW_DNS"
|
||||||
else
|
else
|
||||||
nft "insert rule $NFTABLE_NAME dstnat jump PSW_DNS"
|
nft "insert rule $NFTABLE_NAME dstnat jump PSW_DNS"
|
||||||
fi
|
fi
|
||||||
@ -962,17 +997,17 @@ add_firewall_rule() {
|
|||||||
#ipv4 tproxy mode and udp
|
#ipv4 tproxy mode and udp
|
||||||
nft "add chain $NFTABLE_NAME PSW_MANGLE"
|
nft "add chain $NFTABLE_NAME PSW_MANGLE"
|
||||||
nft "flush chain $NFTABLE_NAME PSW_MANGLE"
|
nft "flush chain $NFTABLE_NAME PSW_MANGLE"
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_LANLIST counter return"
|
nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_LAN counter return"
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_VPSLIST counter return"
|
nft "add rule $NFTABLE_NAME PSW_MANGLE ip daddr @$NFTSET_VPS counter return"
|
||||||
|
|
||||||
nft "add chain $NFTABLE_NAME PSW_OUTPUT_MANGLE"
|
nft "add chain $NFTABLE_NAME PSW_OUTPUT_MANGLE"
|
||||||
nft "flush chain $NFTABLE_NAME PSW_OUTPUT_MANGLE"
|
nft "flush chain $NFTABLE_NAME PSW_OUTPUT_MANGLE"
|
||||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_LANLIST counter return"
|
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_LAN counter return"
|
||||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_VPSLIST counter return"
|
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_VPS counter return"
|
||||||
|
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_WHITELIST counter return"
|
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_WHITE counter return"
|
||||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE meta mark 0xff counter return"
|
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE meta mark 0xff counter return"
|
||||||
[ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_BLOCKLIST counter drop"
|
[ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip daddr @$NFTSET_BLOCK counter drop"
|
||||||
|
|
||||||
# jump chains
|
# jump chains
|
||||||
nft "add rule $NFTABLE_NAME mangle_prerouting ip protocol udp counter jump PSW_MANGLE"
|
nft "add rule $NFTABLE_NAME mangle_prerouting ip protocol udp counter jump PSW_MANGLE"
|
||||||
@ -983,29 +1018,29 @@ add_firewall_rule() {
|
|||||||
[ -z "${is_tproxy}" ] && {
|
[ -z "${is_tproxy}" ] && {
|
||||||
nft "add chain $NFTABLE_NAME PSW_NAT"
|
nft "add chain $NFTABLE_NAME PSW_NAT"
|
||||||
nft "flush chain $NFTABLE_NAME PSW_NAT"
|
nft "flush chain $NFTABLE_NAME PSW_NAT"
|
||||||
nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_LANLIST counter return"
|
nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_LAN counter return"
|
||||||
nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_VPSLIST counter return"
|
nft "add rule $NFTABLE_NAME PSW_NAT ip daddr @$NFTSET_VPS counter return"
|
||||||
nft "add rule $NFTABLE_NAME dstnat ip protocol tcp counter jump PSW_NAT"
|
nft "add rule $NFTABLE_NAME dstnat ip protocol tcp counter jump PSW_NAT"
|
||||||
|
|
||||||
nft "add chain $NFTABLE_NAME PSW_OUTPUT_NAT"
|
nft "add chain $NFTABLE_NAME PSW_OUTPUT_NAT"
|
||||||
nft "flush chain $NFTABLE_NAME PSW_OUTPUT_NAT"
|
nft "flush chain $NFTABLE_NAME PSW_OUTPUT_NAT"
|
||||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT ip daddr @$NFTSET_LANLIST counter return"
|
nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT ip daddr @$NFTSET_LAN counter return"
|
||||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT ip daddr @$NFTSET_VPSLIST counter return"
|
nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT ip daddr @$NFTSET_VPS counter return"
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT ip daddr @$NFTSET_WHITELIST counter return"
|
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT ip daddr @$NFTSET_WHITE counter return"
|
||||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT meta mark 0xff counter return"
|
nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT meta mark 0xff counter return"
|
||||||
[ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT ip daddr @$NFTSET_BLOCKLIST counter drop"
|
[ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_NAT ip daddr @$NFTSET_BLOCK counter drop"
|
||||||
}
|
}
|
||||||
|
|
||||||
#icmp ipv6-icmp redirect
|
#icmp ipv6-icmp redirect
|
||||||
if [ "$accept_icmp" = "1" ]; then
|
if [ "$accept_icmp" = "1" ]; then
|
||||||
nft "add chain $NFTABLE_NAME PSW_ICMP_REDIRECT"
|
nft "add chain $NFTABLE_NAME PSW_ICMP_REDIRECT"
|
||||||
nft "flush chain $NFTABLE_NAME PSW_ICMP_REDIRECT"
|
nft "flush chain $NFTABLE_NAME PSW_ICMP_REDIRECT"
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip daddr @$NFTSET_LANLIST counter return"
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip daddr @$NFTSET_LAN counter return"
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip daddr @$NFTSET_VPSLIST counter return"
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip daddr @$NFTSET_VPS counter return"
|
||||||
|
|
||||||
[ "$accept_icmpv6" = "1" ] && {
|
[ "$accept_icmpv6" = "1" ] && {
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip6 daddr @$NFTSET_LANLIST6 counter return"
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip6 daddr @$NFTSET_LAN6 counter return"
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip6 daddr @$NFTSET_VPSLIST6 counter return"
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT ip6 daddr @$NFTSET_VPS6 counter return"
|
||||||
}
|
}
|
||||||
|
|
||||||
nft "add rule $NFTABLE_NAME dstnat meta l4proto {icmp,icmpv6} counter jump PSW_ICMP_REDIRECT"
|
nft "add rule $NFTABLE_NAME dstnat meta l4proto {icmp,icmpv6} counter jump PSW_ICMP_REDIRECT"
|
||||||
@ -1026,16 +1061,16 @@ add_firewall_rule() {
|
|||||||
#ipv6 tproxy mode and udp
|
#ipv6 tproxy mode and udp
|
||||||
nft "add chain $NFTABLE_NAME PSW_MANGLE_V6"
|
nft "add chain $NFTABLE_NAME PSW_MANGLE_V6"
|
||||||
nft "flush chain $NFTABLE_NAME PSW_MANGLE_V6"
|
nft "flush chain $NFTABLE_NAME PSW_MANGLE_V6"
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_LANLIST6 counter return"
|
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_LAN6 counter return"
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_VPSLIST6 counter return"
|
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 ip6 daddr @$NFTSET_VPS6 counter return"
|
||||||
|
|
||||||
nft "add chain $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6"
|
nft "add chain $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6"
|
||||||
nft "flush chain $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6"
|
nft "flush chain $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6"
|
||||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_LANLIST6 counter return"
|
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_LAN6 counter return"
|
||||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_VPSLIST6 counter return"
|
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_VPS6 counter return"
|
||||||
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_WHITELIST6 counter return"
|
[ "${USE_DIRECT_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_WHITE6 counter return"
|
||||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta mark 0xff counter return"
|
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta mark 0xff counter return"
|
||||||
[ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_BLOCKLIST6 counter drop"
|
[ "${USE_BLOCK_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 ip6 daddr @$NFTSET_BLOCK6 counter drop"
|
||||||
|
|
||||||
[ -n "$IPT_APPEND_DNS" ] && {
|
[ -n "$IPT_APPEND_DNS" ] && {
|
||||||
local local_dns dns_address dns_port
|
local local_dns dns_address dns_port
|
||||||
@ -1106,20 +1141,20 @@ add_firewall_rule() {
|
|||||||
[ -n "${LOCALHOST_TCP_PROXY_MODE}" -o -n "${LOCALHOST_UDP_PROXY_MODE}" ] && {
|
[ -n "${LOCALHOST_TCP_PROXY_MODE}" -o -n "${LOCALHOST_UDP_PROXY_MODE}" ] && {
|
||||||
[ "$TCP_PROXY_DROP_PORTS" != "disable" ] && {
|
[ "$TCP_PROXY_DROP_PORTS" != "disable" ] && {
|
||||||
nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr $FAKE_IP $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr $FAKE_IP $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_BLACKLIST $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
[ "${USE_PROXY_LIST}" = "1" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_BLACK $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_GFW $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
[ "${USE_GFW_LIST}" = "1" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_GFW $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
||||||
[ "${CHN_LIST}" != "0" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_CHN $(factor $TCP_PROXY_DROP_PORTS "tcp dport") $(get_jump_ipt ${CHN_LIST} "counter drop")
|
[ "${CHN_LIST}" != "0" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_CHN $(factor $TCP_PROXY_DROP_PORTS "tcp dport") $(get_jump_ipt ${CHN_LIST} "counter drop")
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_SHUNTLIST $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
[ "${USE_SHUNT_TCP}" = "1" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp ip daddr @$NFTSET_SHUNT $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
||||||
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft add rule $NFTABLE_NAME $nft_output_chain ip protocol tcp $(factor $TCP_PROXY_DROP_PORTS "tcp dport") counter drop
|
||||||
echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]"
|
echolog " - ${msg}屏蔽代理 TCP 端口[${TCP_PROXY_DROP_PORTS}]"
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$UDP_PROXY_DROP_PORTS" != "disable" ] && {
|
[ "$UDP_PROXY_DROP_PORTS" != "disable" ] && {
|
||||||
nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr $FAKE_IP $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr $FAKE_IP $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_BLACKLIST $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
[ "${USE_PROXY_LIST}" = "1" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_BLACK $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_GFW $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
[ "${USE_GFW_LIST}" = "1" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_GFW $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
||||||
[ "${CHN_LIST}" != "0" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_CHN $(factor $UDP_PROXY_DROP_PORTS "udp dport") $(get_jump_ipt ${CHN_LIST} "counter drop")
|
[ "${CHN_LIST}" != "0" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_CHN $(factor $UDP_PROXY_DROP_PORTS "udp dport") $(get_jump_ipt ${CHN_LIST} "counter drop")
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_SHUNTLIST $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
[ "${USE_SHUNT_UDP}" = "1" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_SHUNT $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
||||||
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE counter ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && nft add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE counter ip protocol udp $(factor $UDP_PROXY_DROP_PORTS "udp dport") counter drop
|
||||||
echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]"
|
echolog " - ${msg}屏蔽代理 UDP 端口[${UDP_PROXY_DROP_PORTS}]"
|
||||||
}
|
}
|
||||||
@ -1130,7 +1165,7 @@ add_firewall_rule() {
|
|||||||
_proxy_tcp_access() {
|
_proxy_tcp_access() {
|
||||||
[ -n "${2}" ] || return 0
|
[ -n "${2}" ] || return 0
|
||||||
if echo "${2}" | grep -q -v ':'; then
|
if echo "${2}" | grep -q -v ':'; then
|
||||||
nft "get element $NFTABLE_NAME $NFTSET_LANLIST {${2}}" &>/dev/null
|
nft "get element $NFTABLE_NAME $NFTSET_LAN {${2}}" &>/dev/null
|
||||||
[ $? -eq 0 ] && {
|
[ $? -eq 0 ] && {
|
||||||
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 TCP 代理转发对该服务器 TCP/${3} 端口的访问"
|
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 TCP 代理转发对该服务器 TCP/${3} 端口的访问"
|
||||||
return 0
|
return 0
|
||||||
@ -1143,7 +1178,7 @@ add_firewall_rule() {
|
|||||||
fi
|
fi
|
||||||
echolog " - [$?]将上游 DNS 服务器 ${2}:${3} 加入到路由器自身代理的 TCP 转发链"
|
echolog " - [$?]将上游 DNS 服务器 ${2}:${3} 加入到路由器自身代理的 TCP 转发链"
|
||||||
else
|
else
|
||||||
nft "get element $NFTABLE_NAME $NFTSET_LANLIST6 {${2}}" &>/dev/null
|
nft "get element $NFTABLE_NAME $NFTSET_LAN6 {${2}}" &>/dev/null
|
||||||
[ $? -eq 0 ] && {
|
[ $? -eq 0 ] && {
|
||||||
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 TCP 代理转发对该服务器 TCP/${3} 端口的访问"
|
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 TCP 代理转发对该服务器 TCP/${3} 端口的访问"
|
||||||
return 0
|
return 0
|
||||||
@ -1157,19 +1192,19 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
[ "$accept_icmp" = "1" ] && {
|
[ "$accept_icmp" = "1" ] && {
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr $FAKE_IP counter redirect"
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr $FAKE_IP counter redirect"
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_BLACKLIST counter redirect"
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_BLACK counter redirect"
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_GFW counter redirect"
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_GFW counter redirect"
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST})"
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_CHN $(get_jump_ipt ${CHN_LIST})"
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_SHUNTLIST counter redirect"
|
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp ip daddr @$NFTSET_SHUNT counter redirect"
|
||||||
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp counter redirect"
|
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp counter redirect"
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp counter return"
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo ip protocol icmp counter return"
|
||||||
}
|
}
|
||||||
|
|
||||||
[ "$accept_icmpv6" = "1" ] && {
|
[ "$accept_icmpv6" = "1" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_BLACKLIST6 counter redirect"
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_BLACK6 counter redirect"
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_GFW6 counter redirect"
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_GFW6 counter redirect"
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST})"
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_CHN6 $(get_jump_ipt ${CHN_LIST})"
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_SHUNTLIST6 counter redirect"
|
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 ip6 daddr @$NFTSET_SHUNT6 counter redirect"
|
||||||
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter redirect"
|
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && [ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter redirect"
|
||||||
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter return"
|
nft "add rule $NFTABLE_NAME PSW_ICMP_REDIRECT oif lo meta l4proto icmpv6 counter return"
|
||||||
}
|
}
|
||||||
@ -1184,10 +1219,10 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && {
|
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && {
|
||||||
nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr $FAKE_IP ${nft_j}"
|
nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr $FAKE_IP ${nft_j}"
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_BLACKLIST $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}"
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_BLACK $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}"
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_GFW $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}"
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_GFW $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}"
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_CHN $(factor $TCP_REDIR_PORTS "tcp dport") $(get_jump_ipt ${CHN_LIST} "${nft_j}")"
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_CHN $(factor $TCP_REDIR_PORTS "tcp dport") $(get_jump_ipt ${CHN_LIST} "${nft_j}")"
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_SHUNTLIST $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}"
|
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp ip daddr @$NFTSET_SHUNT $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}"
|
||||||
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}"
|
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME $nft_chain ip protocol tcp $(factor $TCP_REDIR_PORTS "tcp dport") ${nft_j}"
|
||||||
[ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol tcp iif lo $(REDIRECT $TCP_REDIR_PORT TPROXY4) comment \"本机\""
|
[ -n "${is_tproxy}" ] && nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol tcp iif lo $(REDIRECT $TCP_REDIR_PORT TPROXY4) comment \"本机\""
|
||||||
}
|
}
|
||||||
@ -1197,10 +1232,10 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && {
|
||||||
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && {
|
[ -n "${LOCALHOST_TCP_PROXY_MODE}" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_BLACKLIST6 $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE"
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_BLACK6 $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE"
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_GFW6 $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE"
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_GFW6 $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE"
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_CHN6 $(factor $TCP_REDIR_PORTS "tcp dport") $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE")"
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_CHN6 $(factor $TCP_REDIR_PORTS "tcp dport") $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE")"
|
||||||
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_SHUNTLIST6 $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE"
|
[ "${USE_SHUNT_TCP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp ip6 daddr @$NFTSET_SHUNT6 $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE"
|
||||||
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE"
|
[ "${LOCALHOST_TCP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto tcp $(factor $TCP_REDIR_PORTS "tcp dport") counter jump PSW_RULE"
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp iif lo $(REDIRECT $TCP_REDIR_PORT TPROXY) comment \"本机\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto tcp iif lo $(REDIRECT $TCP_REDIR_PORT TPROXY) comment \"本机\""
|
||||||
}
|
}
|
||||||
@ -1213,7 +1248,7 @@ add_firewall_rule() {
|
|||||||
_proxy_udp_access() {
|
_proxy_udp_access() {
|
||||||
[ -n "${2}" ] || return 0
|
[ -n "${2}" ] || return 0
|
||||||
if echo "${2}" | grep -q -v ':'; then
|
if echo "${2}" | grep -q -v ':'; then
|
||||||
nft "get element $NFTABLE_NAME $NFTSET_LANLIST {${2}}" &>/dev/null
|
nft "get element $NFTABLE_NAME $NFTSET_LAN {${2}}" &>/dev/null
|
||||||
[ $? == 0 ] && {
|
[ $? == 0 ] && {
|
||||||
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 UDP 代理转发对该服务器 UDP/${3} 端口的访问"
|
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 UDP 代理转发对该服务器 UDP/${3} 端口的访问"
|
||||||
return 0
|
return 0
|
||||||
@ -1222,7 +1257,7 @@ add_firewall_rule() {
|
|||||||
nft "insert rule $NFTABLE_NAME PSW_MANGLE ip protocol udp iif lo ip daddr ${2} $(REDIRECT $UDP_REDIR_PORT TPROXY4) comment \"本机\""
|
nft "insert rule $NFTABLE_NAME PSW_MANGLE ip protocol udp iif lo ip daddr ${2} $(REDIRECT $UDP_REDIR_PORT TPROXY4) comment \"本机\""
|
||||||
echolog " - [$?]将上游 DNS 服务器 ${2}:${3} 加入到路由器自身代理的 UDP 转发链"
|
echolog " - [$?]将上游 DNS 服务器 ${2}:${3} 加入到路由器自身代理的 UDP 转发链"
|
||||||
else
|
else
|
||||||
nft "get element $NFTABLE_NAME $NFTSET_LANLIST6 {${2}}" &>/dev/null
|
nft "get element $NFTABLE_NAME $NFTSET_LAN6 {${2}}" &>/dev/null
|
||||||
[ $? == 0 ] && {
|
[ $? == 0 ] && {
|
||||||
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 UDP 代理转发对该服务器 UDP/${3} 端口的访问"
|
echolog " - 上游 DNS 服务器 ${2} 已在直接访问的列表中,不强制向 UDP 代理转发对该服务器 UDP/${3} 端口的访问"
|
||||||
return 0
|
return 0
|
||||||
@ -1235,10 +1270,10 @@ add_firewall_rule() {
|
|||||||
[ "$use_udp_node_resolve_dns" == 1 ] && hosts_foreach REMOTE_DNS _proxy_udp_access 53
|
[ "$use_udp_node_resolve_dns" == 1 ] && hosts_foreach REMOTE_DNS _proxy_udp_access 53
|
||||||
[ -n "${LOCALHOST_UDP_PROXY_MODE}" ] && {
|
[ -n "${LOCALHOST_UDP_PROXY_MODE}" ] && {
|
||||||
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr $FAKE_IP counter jump PSW_RULE"
|
nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr $FAKE_IP counter jump PSW_RULE"
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_BLACKLIST $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_BLACK $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_GFW $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_GFW $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_CHN $(factor $UDP_REDIR_PORTS "udp dport") $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE")"
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_CHN $(factor $UDP_REDIR_PORTS "udp dport") $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE")"
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_SHUNTLIST $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp ip daddr @$NFTSET_SHUNT $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||||
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE ip protocol udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp iif lo $(REDIRECT $UDP_REDIR_PORT TPROXY4) comment \"本机\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE ip protocol udp iif lo $(REDIRECT $UDP_REDIR_PORT TPROXY4) comment \"本机\""
|
||||||
}
|
}
|
||||||
@ -1247,10 +1282,10 @@ add_firewall_rule() {
|
|||||||
|
|
||||||
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
|
[ "$PROXY_IPV6" == "1" ] && [ "$PROXY_IPV6_UDP" == "1" ] && {
|
||||||
[ -n "${LOCALHOST_UDP_PROXY_MODE}" ] && {
|
[ -n "${LOCALHOST_UDP_PROXY_MODE}" ] && {
|
||||||
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_BLACKLIST6 $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
[ "${USE_PROXY_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_BLACK6 $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||||
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_GFW6 $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
[ "${USE_GFW_LIST}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_GFW6 $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||||
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_CHN6 $(factor $UDP_REDIR_PORTS "udp dport") $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE")"
|
[ "${CHN_LIST}" != "0" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_CHN6 $(factor $UDP_REDIR_PORTS "udp dport") $(get_jump_ipt ${CHN_LIST} "counter jump PSW_RULE")"
|
||||||
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_SHUNTLIST6 $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
[ "${USE_SHUNT_UDP}" = "1" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp ip6 daddr @$NFTSET_SHUNT6 $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||||
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
[ "${LOCALHOST_UDP_PROXY_MODE}" != "disable" ] && nft "add rule $NFTABLE_NAME PSW_OUTPUT_MANGLE_V6 meta l4proto udp $(factor $UDP_REDIR_PORTS "udp dport") counter jump PSW_RULE"
|
||||||
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp iif lo $(REDIRECT $UDP_REDIR_PORT TPROXY) comment \"本机\""
|
nft "add rule $NFTABLE_NAME PSW_MANGLE_V6 meta l4proto udp iif lo $(REDIRECT $UDP_REDIR_PORT TPROXY) comment \"本机\""
|
||||||
}
|
}
|
||||||
@ -1265,8 +1300,6 @@ add_firewall_rule() {
|
|||||||
# 加载ACLS
|
# 加载ACLS
|
||||||
load_acl
|
load_acl
|
||||||
|
|
||||||
filter_direct_node_list
|
|
||||||
|
|
||||||
[ -d "${TMP_IFACE_PATH}" ] && {
|
[ -d "${TMP_IFACE_PATH}" ] && {
|
||||||
for iface in $(ls ${TMP_IFACE_PATH}); do
|
for iface in $(ls ${TMP_IFACE_PATH}); do
|
||||||
nft "insert rule $NFTABLE_NAME $nft_output_chain oif $iface counter return"
|
nft "insert rule $NFTABLE_NAME $nft_output_chain oif $iface counter return"
|
||||||
@ -1274,6 +1307,8 @@ add_firewall_rule() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
filter_direct_node_list > /dev/null 2>&1 &
|
||||||
|
|
||||||
echolog "防火墙规则加载完成!"
|
echolog "防火墙规则加载完成!"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1298,25 +1333,25 @@ del_firewall_rule() {
|
|||||||
ip -6 rule del fwmark 1 table 100 2>/dev/null
|
ip -6 rule del fwmark 1 table 100 2>/dev/null
|
||||||
ip -6 route del local ::/0 dev lo table 100 2>/dev/null
|
ip -6 route del local ::/0 dev lo table 100 2>/dev/null
|
||||||
|
|
||||||
destroy_nftset $NFTSET_LOCALLIST
|
destroy_nftset $NFTSET_LOCAL
|
||||||
destroy_nftset $NFTSET_LANLIST
|
destroy_nftset $NFTSET_LAN
|
||||||
destroy_nftset $NFTSET_VPSLIST
|
destroy_nftset $NFTSET_VPS
|
||||||
destroy_nftset $NFTSET_SHUNTLIST
|
destroy_nftset $NFTSET_SHUNT
|
||||||
#destroy_nftset $NFTSET_GFW
|
#destroy_nftset $NFTSET_GFW
|
||||||
#destroy_nftset $NFTSET_CHN
|
#destroy_nftset $NFTSET_CHN
|
||||||
#destroy_nftset $NFTSET_BLACKLIST
|
#destroy_nftset $NFTSET_BLACK
|
||||||
destroy_nftset $NFTSET_BLOCKLIST
|
destroy_nftset $NFTSET_BLOCK
|
||||||
destroy_nftset $NFTSET_WHITELIST
|
destroy_nftset $NFTSET_WHITE
|
||||||
|
|
||||||
destroy_nftset $NFTSET_LOCALLIST6
|
destroy_nftset $NFTSET_LOCAL6
|
||||||
destroy_nftset $NFTSET_LANLIST6
|
destroy_nftset $NFTSET_LAN6
|
||||||
destroy_nftset $NFTSET_VPSLIST6
|
destroy_nftset $NFTSET_VPS6
|
||||||
destroy_nftset $NFTSET_SHUNTLIST6
|
destroy_nftset $NFTSET_SHUNT6
|
||||||
#destroy_nftset $NFTSET_GFW6
|
#destroy_nftset $NFTSET_GFW6
|
||||||
#destroy_nftset $NFTSET_CHN6
|
#destroy_nftset $NFTSET_CHN6
|
||||||
#destroy_nftset $NFTSET_BLACKLIST6
|
#destroy_nftset $NFTSET_BLACK6
|
||||||
destroy_nftset $NFTSET_BLOCKLIST6
|
destroy_nftset $NFTSET_BLOCK6
|
||||||
destroy_nftset $NFTSET_WHITELIST6
|
destroy_nftset $NFTSET_WHITE6
|
||||||
|
|
||||||
$DIR/app.sh echolog "删除nftables防火墙规则完成。"
|
$DIR/app.sh echolog "删除nftables防火墙规则完成。"
|
||||||
}
|
}
|
||||||
@ -1336,7 +1371,7 @@ flush_table() {
|
|||||||
flush_nftset_reload() {
|
flush_nftset_reload() {
|
||||||
del_firewall_rule
|
del_firewall_rule
|
||||||
flush_table
|
flush_table
|
||||||
rm -rf /tmp/singbox_passwall*
|
rm -rf /tmp/etc/passwall_tmp/singbox*
|
||||||
rm -rf /tmp/etc/passwall_tmp/smartdns*
|
rm -rf /tmp/etc/passwall_tmp/smartdns*
|
||||||
rm -rf /tmp/etc/passwall_tmp/dnsmasq*
|
rm -rf /tmp/etc/passwall_tmp/dnsmasq*
|
||||||
/etc/init.d/passwall reload
|
/etc/init.d/passwall reload
|
||||||
|
@ -466,7 +466,12 @@ local function processData(szType, content, add_mode, add_from)
|
|||||||
elseif result.type == "Xray" and info.net == "tcp" then
|
elseif result.type == "Xray" and info.net == "tcp" then
|
||||||
info.net = "raw"
|
info.net = "raw"
|
||||||
end
|
end
|
||||||
|
if info.net == 'h2' or info.net == 'http' then
|
||||||
|
info.net = "http"
|
||||||
|
result.transport = (result.type == "Xray") and "xhttp" or "http"
|
||||||
|
else
|
||||||
result.transport = info.net
|
result.transport = info.net
|
||||||
|
end
|
||||||
if info.net == 'ws' then
|
if info.net == 'ws' then
|
||||||
result.ws_host = info.host
|
result.ws_host = info.host
|
||||||
result.ws_path = info.path
|
result.ws_path = info.path
|
||||||
@ -486,9 +491,15 @@ local function processData(szType, content, add_mode, add_from)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if info.net == 'h2' then
|
if info.net == "http" then
|
||||||
result.h2_host = info.host
|
if result.type == "Xray" then
|
||||||
result.h2_path = info.path
|
result.xhttp_mode = "stream-one"
|
||||||
|
result.xhttp_host = info.host
|
||||||
|
result.xhttp_path = info.path
|
||||||
|
else
|
||||||
|
result.http_host = info.host
|
||||||
|
result.http_path = info.path
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if info.net == 'raw' or info.net == 'tcp' then
|
if info.net == 'raw' or info.net == 'tcp' then
|
||||||
if info.type and info.type ~= "http" then
|
if info.type and info.type ~= "http" then
|
||||||
@ -668,7 +679,12 @@ local function processData(szType, content, add_mode, add_from)
|
|||||||
elseif result.type == "Xray" and params.type == "tcp" then
|
elseif result.type == "Xray" and params.type == "tcp" then
|
||||||
params.type = "raw"
|
params.type = "raw"
|
||||||
end
|
end
|
||||||
|
if params.type == "h2" or params.type == "http" then
|
||||||
|
params.type = "http"
|
||||||
|
result.transport = (result.type == "Xray") and "xhttp" or "http"
|
||||||
|
else
|
||||||
result.transport = params.type
|
result.transport = params.type
|
||||||
|
end
|
||||||
if result.type ~= "SS-Rust" and result.type ~= "SS" then
|
if result.type ~= "SS-Rust" and result.type ~= "SS" then
|
||||||
if params.type == 'ws' then
|
if params.type == 'ws' then
|
||||||
result.ws_host = params.host
|
result.ws_host = params.host
|
||||||
@ -689,15 +705,16 @@ local function processData(szType, content, add_mode, add_from)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if params.type == 'h2' or params.type == 'http' then
|
if params.type == "http" then
|
||||||
if result.type == "sing-box" then
|
if result.type == "sing-box" then
|
||||||
result.transport = "http"
|
result.transport = "http"
|
||||||
result.http_host = params.host
|
result.http_host = params.host
|
||||||
result.http_path = params.path
|
result.http_path = params.path
|
||||||
elseif result.type == "xray" then
|
elseif result.type == "Xray" then
|
||||||
result.transport = "h2"
|
result.transport = "xhttp"
|
||||||
result.h2_host = params.host
|
result.xhttp_mode = "stream-one"
|
||||||
result.h2_path = params.path
|
result.xhttp_host = params.host
|
||||||
|
result.xhttp_path = params.path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if params.type == 'raw' or params.type == 'tcp' then
|
if params.type == 'raw' or params.type == 'tcp' then
|
||||||
@ -815,7 +832,12 @@ local function processData(szType, content, add_mode, add_from)
|
|||||||
elseif result.type == "Xray" and params.type == "tcp" then
|
elseif result.type == "Xray" and params.type == "tcp" then
|
||||||
params.type = "raw"
|
params.type = "raw"
|
||||||
end
|
end
|
||||||
|
if params.type == "h2" or params.type == "http" then
|
||||||
|
params.type = "http"
|
||||||
|
result.transport = (result.type == "Xray") and "xhttp" or "http"
|
||||||
|
else
|
||||||
result.transport = params.type
|
result.transport = params.type
|
||||||
|
end
|
||||||
if params.type == 'ws' then
|
if params.type == 'ws' then
|
||||||
result.ws_host = params.host
|
result.ws_host = params.host
|
||||||
result.ws_path = params.path
|
result.ws_path = params.path
|
||||||
@ -835,15 +857,16 @@ local function processData(szType, content, add_mode, add_from)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if params.type == 'h2' or params.type == 'http' then
|
if params.type == "http" then
|
||||||
if result.type == "sing-box" then
|
if result.type == "sing-box" then
|
||||||
result.transport = "http"
|
result.transport = "http"
|
||||||
result.http_host = params.host
|
result.http_host = params.host
|
||||||
result.http_path = params.path
|
result.http_path = params.path
|
||||||
elseif result.type == "xray" then
|
elseif result.type == "Xray" then
|
||||||
result.transport = "h2"
|
result.transport = "xhttp"
|
||||||
result.h2_host = params.host
|
result.xhttp_mode = "stream-one"
|
||||||
result.h2_path = params.path
|
result.xhttp_host = params.host
|
||||||
|
result.xhttp_path = params.path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if params.type == 'raw' or params.type == 'tcp' then
|
if params.type == 'raw' or params.type == 'tcp' then
|
||||||
@ -955,7 +978,12 @@ local function processData(szType, content, add_mode, add_from)
|
|||||||
elseif result.type == "Xray" and params.type == "tcp" then
|
elseif result.type == "Xray" and params.type == "tcp" then
|
||||||
params.type = "raw"
|
params.type = "raw"
|
||||||
end
|
end
|
||||||
|
if params.type == "h2" or params.type == "http" then
|
||||||
|
params.type = "http"
|
||||||
|
result.transport = (result.type == "Xray") and "xhttp" or "http"
|
||||||
|
else
|
||||||
result.transport = params.type
|
result.transport = params.type
|
||||||
|
end
|
||||||
if params.type == 'ws' then
|
if params.type == 'ws' then
|
||||||
result.ws_host = params.host
|
result.ws_host = params.host
|
||||||
result.ws_path = params.path
|
result.ws_path = params.path
|
||||||
@ -975,15 +1003,16 @@ local function processData(szType, content, add_mode, add_from)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if params.type == 'h2' or params.type == 'http' then
|
if params.type == "http" then
|
||||||
if result.type == "sing-box" then
|
if result.type == "sing-box" then
|
||||||
result.transport = "http"
|
result.transport = "http"
|
||||||
result.http_host = params.host
|
result.http_host = params.host
|
||||||
result.http_path = params.path
|
result.http_path = params.path
|
||||||
elseif result.type == "xray" then
|
elseif result.type == "Xray" then
|
||||||
result.transport = "h2"
|
result.transport = "xhttp"
|
||||||
result.h2_host = params.host
|
result.xhttp_mode = "stream-one"
|
||||||
result.h2_path = params.path
|
result.xhttp_host = params.host
|
||||||
|
result.xhttp_path = params.path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if params.type == 'raw' or params.type == 'tcp' then
|
if params.type == 'raw' or params.type == 'tcp' then
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile
|
diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile
|
||||||
index 2b72468..15c6437 100644
|
index b167381..53e8463 100644
|
||||||
--- a/luci-app-passwall/Makefile
|
--- a/luci-app-passwall/Makefile
|
||||||
+++ b/luci-app-passwall/Makefile
|
+++ b/luci-app-passwall/Makefile
|
||||||
@@ -144,7 +144,7 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_Geodata
|
@@ -144,7 +144,7 @@ config PACKAGE_$(PKG_NAME)_INCLUDE_V2ray_Geodata
|
||||||
@ -20,7 +20,7 @@ index 2b72468..15c6437 100644
|
|||||||
|
|
||||||
define Package/$(PKG_NAME)/postrm
|
define Package/$(PKG_NAME)/postrm
|
||||||
diff --git a/luci-app-passwall/luasrc/controller/passwall.lua b/luci-app-passwall/luasrc/controller/passwall.lua
|
diff --git a/luci-app-passwall/luasrc/controller/passwall.lua b/luci-app-passwall/luasrc/controller/passwall.lua
|
||||||
index e7fcbee..4143d44 100644
|
index abf7438..0199815 100644
|
||||||
--- a/luci-app-passwall/luasrc/controller/passwall.lua
|
--- a/luci-app-passwall/luasrc/controller/passwall.lua
|
||||||
+++ b/luci-app-passwall/luasrc/controller/passwall.lua
|
+++ b/luci-app-passwall/luasrc/controller/passwall.lua
|
||||||
@@ -281,7 +281,7 @@ function connect_status()
|
@@ -281,7 +281,7 @@ function connect_status()
|
||||||
@ -33,10 +33,10 @@ index e7fcbee..4143d44 100644
|
|||||||
if code ~= 0 then
|
if code ~= 0 then
|
||||||
local use_time = luci.sys.exec("echo -n '" .. result .. "' | awk -F ':' '{print $2}'")
|
local use_time = luci.sys.exec("echo -n '" .. result .. "' | awk -F ':' '{print $2}'")
|
||||||
diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
|
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 70925af..fbf848c 100644
|
index 7c84b2a..1715ccc 100644
|
||||||
--- a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
|
--- a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
|
||||||
+++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
|
+++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua
|
||||||
@@ -478,6 +478,12 @@ o:value("9.9.9.9", "9.9.9.9 (Quad9)")
|
@@ -491,6 +491,12 @@ o:value("9.9.9.9", "9.9.9.9 (Quad9)")
|
||||||
o:value("149.112.112.112", "149.112.112.112 (Quad9)")
|
o:value("149.112.112.112", "149.112.112.112 (Quad9)")
|
||||||
o:value("208.67.220.220", "208.67.220.220 (OpenDNS)")
|
o:value("208.67.220.220", "208.67.220.220 (OpenDNS)")
|
||||||
o:value("208.67.222.222", "208.67.222.222 (OpenDNS)")
|
o:value("208.67.222.222", "208.67.222.222 (OpenDNS)")
|
||||||
@ -49,7 +49,7 @@ index 70925af..fbf848c 100644
|
|||||||
o:depends({dns_mode = "dns2socks"})
|
o:depends({dns_mode = "dns2socks"})
|
||||||
o:depends({dns_mode = "tcp"})
|
o:depends({dns_mode = "tcp"})
|
||||||
o:depends({dns_mode = "udp"})
|
o:depends({dns_mode = "udp"})
|
||||||
@@ -570,7 +576,7 @@ if api.is_finded("smartdns") then
|
@@ -590,7 +596,7 @@ if api.is_finded("smartdns") then
|
||||||
end
|
end
|
||||||
|
|
||||||
o = s:taboption("DNS", Flag, "dns_redirect", translate("DNS Redirect"), translate("Force special DNS server to need proxy devices."))
|
o = s:taboption("DNS", Flag, "dns_redirect", translate("DNS Redirect"), translate("Force special DNS server to need proxy devices."))
|
||||||
@ -58,26 +58,6 @@ index 70925af..fbf848c 100644
|
|||||||
o.rmempty = false
|
o.rmempty = false
|
||||||
|
|
||||||
if (uci:get(appname, "@global_forwarding[0]", "use_nft") or "0") == "1" then
|
if (uci:get(appname, "@global_forwarding[0]", "use_nft") or "0") == "1" then
|
||||||
diff --git a/luci-app-passwall/luasrc/passwall/api.lua b/luci-app-passwall/luasrc/passwall/api.lua
|
|
||||||
index 8c4e6ef..81089eb 100644
|
|
||||||
--- a/luci-app-passwall/luasrc/passwall/api.lua
|
|
||||||
+++ b/luci-app-passwall/luasrc/passwall/api.lua
|
|
||||||
@@ -219,14 +219,7 @@ end
|
|
||||||
|
|
||||||
function is_install(package)
|
|
||||||
if package and #package > 0 then
|
|
||||||
- local file_path = "/usr/lib/opkg/info"
|
|
||||||
- local file_ext = ".control"
|
|
||||||
- local has = sys.call("[ -d " .. file_path .. " ]")
|
|
||||||
- if has == 0 then
|
|
||||||
- file_path = "/lib/apk/packages"
|
|
||||||
- file_ext = ".list"
|
|
||||||
- end
|
|
||||||
- return sys.call(string.format('[ -s "%s/%s%s" ]', file_path, package, file_ext)) == 0
|
|
||||||
+ return sys.call(string.format('opkg list-installed | grep "%s" > /dev/null 2>&1', package)) == 0
|
|
||||||
end
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
diff --git a/luci-app-passwall/luasrc/view/passwall/global/status.htm b/luci-app-passwall/luasrc/view/passwall/global/status.htm
|
diff --git a/luci-app-passwall/luasrc/view/passwall/global/status.htm b/luci-app-passwall/luasrc/view/passwall/global/status.htm
|
||||||
index e8d76ec..a872950 100644
|
index e8d76ec..a872950 100644
|
||||||
--- a/luci-app-passwall/luasrc/view/passwall/global/status.htm
|
--- a/luci-app-passwall/luasrc/view/passwall/global/status.htm
|
||||||
@ -174,130 +154,6 @@ index 551c824..2a6a814 100644
|
|||||||
|
|
||||||
config global_forwarding
|
config global_forwarding
|
||||||
option tcp_no_redir_ports 'disable'
|
option tcp_no_redir_ports 'disable'
|
||||||
diff --git a/luci-app-passwall/root/usr/share/passwall/app.sh b/luci-app-passwall/root/usr/share/passwall/app.sh
|
|
||||||
index 64b063d..a005f6a 100755
|
|
||||||
--- a/luci-app-passwall/root/usr/share/passwall/app.sh
|
|
||||||
+++ b/luci-app-passwall/root/usr/share/passwall/app.sh
|
|
||||||
@@ -1590,9 +1590,7 @@ start_dns() {
|
|
||||||
[ "$(expr $dnsmasq_version \>= 2.87)" == 0 ] && echolog "Dnsmasq版本低于2.87,有可能无法正常使用!!!"
|
|
||||||
}
|
|
||||||
|
|
||||||
- local DNSMASQ_TUN_DNS=$(get_first_dns TUN_DNS 53 | sed 's/:/#/g')
|
|
||||||
local RUN_NEW_DNSMASQ=1
|
|
||||||
- RUN_NEW_DNSMASQ=${DNS_REDIRECT}
|
|
||||||
if [ "${RUN_NEW_DNSMASQ}" == "0" ]; then
|
|
||||||
#The old logic will be removed in the future.
|
|
||||||
#Run a copy dnsmasq instance, DNS hijack that don't need a proxy devices.
|
|
||||||
@@ -1610,7 +1608,7 @@ start_dns() {
|
|
||||||
#Modify the default dnsmasq service
|
|
||||||
lua $APP_PATH/helper_dnsmasq.lua stretch
|
|
||||||
lua $APP_PATH/helper_dnsmasq.lua add_rule -FLAG "default" -TMP_DNSMASQ_PATH ${GLOBAL_DNSMASQ_CONF_PATH} -DNSMASQ_CONF_FILE ${GLOBAL_DNSMASQ_CONF} \
|
|
||||||
- -DEFAULT_DNS ${DEFAULT_DNS} -LOCAL_DNS ${LOCAL_DNS} -TUN_DNS ${DNSMASQ_TUN_DNS} \
|
|
||||||
+ -DEFAULT_DNS ${DEFAULT_DNS} -LOCAL_DNS ${LOCAL_DNS} -TUN_DNS ${TUN_DNS} \
|
|
||||||
-REMOTE_FAKEDNS ${fakedns:-0} -USE_DEFAULT_DNS "${USE_DEFAULT_DNS:-direct}" -CHINADNS_DNS ${china_ng_listen:-0} \
|
|
||||||
-USE_DIRECT_LIST "${USE_DIRECT_LIST}" -USE_PROXY_LIST "${USE_PROXY_LIST}" -USE_BLOCK_LIST "${USE_BLOCK_LIST}" -USE_GFW_LIST "${USE_GFW_LIST}" -CHN_LIST "${CHN_LIST}" \
|
|
||||||
-TCP_NODE ${TCP_NODE} -DEFAULT_PROXY_MODE ${TCP_PROXY_MODE} -NO_PROXY_IPV6 ${DNSMASQ_FILTER_PROXY_IPV6:-0} -NFTFLAG ${nftflag:-0} \
|
|
||||||
@@ -1622,7 +1620,7 @@ start_dns() {
|
|
||||||
GLOBAL_DNSMASQ_CONF=${GLOBAL_ACL_PATH}/dnsmasq.conf
|
|
||||||
GLOBAL_DNSMASQ_CONF_PATH=${GLOBAL_ACL_PATH}/dnsmasq.d
|
|
||||||
lua $APP_PATH/helper_dnsmasq.lua add_rule -FLAG "default" -TMP_DNSMASQ_PATH ${GLOBAL_DNSMASQ_CONF_PATH} -DNSMASQ_CONF_FILE ${GLOBAL_DNSMASQ_CONF} \
|
|
||||||
- -LISTEN_PORT ${GLOBAL_DNSMASQ_PORT} -DEFAULT_DNS ${DEFAULT_DNS} -LOCAL_DNS ${LOCAL_DNS} -TUN_DNS ${DNSMASQ_TUN_DNS} \
|
|
||||||
+ -LISTEN_PORT ${GLOBAL_DNSMASQ_PORT} -DEFAULT_DNS ${DEFAULT_DNS} -LOCAL_DNS ${LOCAL_DNS} -TUN_DNS ${TUN_DNS} \
|
|
||||||
-REMOTE_FAKEDNS ${fakedns:-0} -USE_DEFAULT_DNS "${USE_DEFAULT_DNS:-direct}" -CHINADNS_DNS ${china_ng_listen:-0} \
|
|
||||||
-USE_DIRECT_LIST "${USE_DIRECT_LIST}" -USE_PROXY_LIST "${USE_PROXY_LIST}" -USE_BLOCK_LIST "${USE_BLOCK_LIST}" -USE_GFW_LIST "${USE_GFW_LIST}" -CHN_LIST "${CHN_LIST}" \
|
|
||||||
-TCP_NODE ${TCP_NODE} -DEFAULT_PROXY_MODE ${TCP_PROXY_MODE} -NO_PROXY_IPV6 ${DNSMASQ_FILTER_PROXY_IPV6:-0} -NFTFLAG ${nftflag:-0} \
|
|
||||||
@@ -1689,7 +1687,8 @@ acl_app() {
|
|
||||||
socks_port=11100
|
|
||||||
redir_port=11200
|
|
||||||
dns_port=11300
|
|
||||||
- dnsmasq_port=${GLOBAL_DNSMASQ_PORT:-11400}
|
|
||||||
+ dnsmasq_port=11400
|
|
||||||
+ [ -n "${GLOBAL_DNSMASQ_PORT}" ] && dnsmasq_port=$(get_new_port $GLOBAL_DNSMASQ_PORT)
|
|
||||||
chinadns_port=11500
|
|
||||||
for item in $items; do
|
|
||||||
sid=$(uci -q show "${CONFIG}.${item}" | grep "=acl_rule" | awk -F '=' '{print $1}' | awk -F '.' '{print $2}')
|
|
||||||
@@ -1753,6 +1752,7 @@ acl_app() {
|
|
||||||
|
|
||||||
[ -n "$tcp_node" ] && {
|
|
||||||
local GLOBAL_TCP_NODE=$(get_cache_var "ACL_GLOBAL_TCP_node")
|
|
||||||
+ echolog "${GLOBAL_TCP_NODE}"
|
|
||||||
[ -n "${GLOBAL_TCP_NODE}" ] && GLOBAL_TCP_redir_port=$(get_cache_var "ACL_GLOBAL_TCP_redir_port")
|
|
||||||
if [ "$tcp_node" = "default" ]; then
|
|
||||||
if [ -n "${GLOBAL_TCP_NODE}" ]; then
|
|
||||||
@@ -2005,10 +2005,8 @@ start() {
|
|
||||||
|
|
||||||
if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then
|
|
||||||
[ "$(uci -q get dhcp.@dnsmasq[0].dns_redirect)" == "1" ] && {
|
|
||||||
- uci -q set ${CONFIG}.@global[0].dnsmasq_dns_redirect='1'
|
|
||||||
- uci -q commit ${CONFIG}
|
|
||||||
- uci -q set dhcp.@dnsmasq[0].dns_redirect='0'
|
|
||||||
- uci -q commit dhcp
|
|
||||||
+ uci -q set dhcp.@dnsmasq[0].dns_redirect='0' 2>/dev/null
|
|
||||||
+ uci commit dhcp 2>/dev/null
|
|
||||||
/etc/init.d/dnsmasq restart >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
@@ -2050,23 +2048,11 @@ stop() {
|
|
||||||
source $APP_PATH/helper_smartdns.sh del
|
|
||||||
rm -rf $GLOBAL_DNSMASQ_CONF
|
|
||||||
rm -rf $GLOBAL_DNSMASQ_CONF_PATH
|
|
||||||
- [ "1" = "1" ] && {
|
|
||||||
- #restore logic
|
|
||||||
- bak_dnsmasq_dns_redirect=$(config_t_get global dnsmasq_dns_redirect)
|
|
||||||
- [ -n "${bak_dnsmasq_dns_redirect}" ] && {
|
|
||||||
- uci -q set dhcp.@dnsmasq[0].dns_redirect="${bak_dnsmasq_dns_redirect}"
|
|
||||||
- uci -q commit dhcp
|
|
||||||
- uci -q delete ${CONFIG}.@global[0].dnsmasq_dns_redirect
|
|
||||||
- uci -q commit ${CONFIG}
|
|
||||||
- }
|
|
||||||
- if [ -z "$(get_cache_var "ACL_default_dns_port")" ] || [ -n "${bak_dnsmasq_dns_redirect}" ]; then
|
|
||||||
- lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0
|
|
||||||
- fi
|
|
||||||
- bak_bridge_nf_ipt=$(get_cache_var "bak_bridge_nf_ipt")
|
|
||||||
- [ -n "${bak_bridge_nf_ipt}" ] && sysctl -w net.bridge.bridge-nf-call-iptables=${bak_bridge_nf_ipt} >/dev/null 2>&1
|
|
||||||
- bak_bridge_nf_ip6t=$(get_cache_var "bak_bridge_nf_ip6t")
|
|
||||||
- [ -n "${bak_bridge_nf_ip6t}" ] && sysctl -w net.bridge.bridge-nf-call-ip6tables=${bak_bridge_nf_ip6t} >/dev/null 2>&1
|
|
||||||
- }
|
|
||||||
+ [ -z "$(get_cache_var "ACL_default_dns_port")" ] && lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0
|
|
||||||
+ bak_bridge_nf_ipt=$(get_cache_var "bak_bridge_nf_ipt")
|
|
||||||
+ [ -n "${bak_bridge_nf_ipt}" ] && sysctl -w net.bridge.bridge-nf-call-iptables=${bak_bridge_nf_ipt} >/dev/null 2>&1
|
|
||||||
+ bak_bridge_nf_ip6t=$(get_cache_var "bak_bridge_nf_ip6t")
|
|
||||||
+ [ -n "${bak_bridge_nf_ip6t}" ] && sysctl -w net.bridge.bridge-nf-call-ip6tables=${bak_bridge_nf_ip6t} >/dev/null 2>&1
|
|
||||||
rm -rf $TMP_PATH
|
|
||||||
rm -rf /tmp/lock/${CONFIG}_socks_auto_switch*
|
|
||||||
echolog "清空并关闭相关程序和缓存完成。"
|
|
||||||
@@ -2125,7 +2111,6 @@ DNS_CACHE=0
|
|
||||||
REMOTE_DNS=$(config_t_get global remote_dns 1.1.1.1:53 | sed 's/#/:/g' | sed -E 's/\:([^:]+)$/#\1/g')
|
|
||||||
USE_DEFAULT_DNS=$(config_t_get global use_default_dns direct)
|
|
||||||
FILTER_PROXY_IPV6=$(config_t_get global filter_proxy_ipv6 0)
|
|
||||||
-DNS_REDIRECT=$(config_t_get global dns_redirect 1)
|
|
||||||
dns_listen_port=${DNS_PORT}
|
|
||||||
|
|
||||||
REDIRECT_LIST="socks ss ss-rust ssr sing-box xray trojan-plus naiveproxy hysteria2"
|
|
||||||
diff --git a/luci-app-passwall/root/usr/share/passwall/iptables.sh b/luci-app-passwall/root/usr/share/passwall/iptables.sh
|
|
||||||
index b510f2f..bbdb912 100755
|
|
||||||
--- a/luci-app-passwall/root/usr/share/passwall/iptables.sh
|
|
||||||
+++ b/luci-app-passwall/root/usr/share/passwall/iptables.sh
|
|
||||||
@@ -329,7 +329,6 @@ load_acl() {
|
|
||||||
$ip6t_n -A PSW_DNS $(comment "$remarks") -p udp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect} 2>/dev/null
|
|
||||||
$ipt_n -A PSW_DNS $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect}
|
|
||||||
$ip6t_n -A PSW_DNS $(comment "$remarks") -p tcp ${_ipt_source} --dport 53 -j REDIRECT --to-ports ${dns_redirect} 2>/dev/null
|
|
||||||
- [ -z "$(get_cache_var "ACL_${sid}_tcp_default")" ] && echolog " - ${msg}使用与全局配置不相同节点,已将DNS强制重定向到专用 DNS 服务器。"
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -n "$tcp_port" -o -n "$udp_port" ] && {
|
|
||||||
diff --git a/luci-app-passwall/root/usr/share/passwall/nftables.sh b/luci-app-passwall/root/usr/share/passwall/nftables.sh
|
|
||||||
index 1f8126d..94242ea 100755
|
|
||||||
--- a/luci-app-passwall/root/usr/share/passwall/nftables.sh
|
|
||||||
+++ b/luci-app-passwall/root/usr/share/passwall/nftables.sh
|
|
||||||
@@ -379,7 +379,6 @@ load_acl() {
|
|
||||||
nft "add rule $NFTABLE_NAME PSW_DNS ip protocol tcp ${_ipt_source} tcp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\""
|
|
||||||
nft "add rule $NFTABLE_NAME PSW_DNS meta l4proto udp ${_ipt_source} udp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\""
|
|
||||||
nft "add rule $NFTABLE_NAME PSW_DNS meta l4proto tcp ${_ipt_source} tcp dport 53 counter redirect to :${dns_redirect} comment \"$remarks\""
|
|
||||||
- [ -z "$(get_cache_var "ACL_${sid}_tcp_default")" ] && echolog " - ${msg}使用与全局配置不相同节点,已将DNS强制重定向到专用 DNS 服务器。"
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -n "$tcp_port" -o -n "$udp_port" ] && {
|
|
||||||
diff --git a/luci-app-passwall/root/usr/share/passwall/rules/direct_host b/luci-app-passwall/root/usr/share/passwall/rules/direct_host
|
diff --git a/luci-app-passwall/root/usr/share/passwall/rules/direct_host b/luci-app-passwall/root/usr/share/passwall/rules/direct_host
|
||||||
index a3b1464..90bcf58 100644
|
index a3b1464..90bcf58 100644
|
||||||
--- a/luci-app-passwall/root/usr/share/passwall/rules/direct_host
|
--- a/luci-app-passwall/root/usr/share/passwall/rules/direct_host
|
||||||
|
Loading…
Reference in New Issue
Block a user