添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
if [ "$en_mode" == "fake-ip" ]; then
  LOG_OUT "limit route to only fake ips with proxy port $proxy_port"
  /etc/mosdns/rule/geoip2ipset.sh /etc/openclash/GeoIP.dat telegram
  if [ -n "$FW4" ]; then
    handle=$(nft -a list chain inet fw4 openclash | grep 'ip protocol tcp counter' | awk '{print $NF}')
    LOG_OUT "deleting nft rule handle $handle"
    nft delete rule inet fw4 openclash handle $handle
    nft add rule inet fw4 openclash ip protocol tcp ip daddr @telegram counter redirect to $proxy_port
    iptables -t nat -D openclash -p tcp -j REDIRECT --to-ports $proxy_port
    iptables -t nat -A openclash -m set --match-set telegram dst -p tcp -j REDIRECT --to-ports $proxy_port
LOG_OUT "restart adguardhome"
/etc/init.d/AdGuardHome restart 

其中 /etc/mosdns/rule/geoip2ipset.sh 这个脚本可以根据 GeoIP 数据库来生成对应的 ipset。内容如下,这个文件放到路由器上后,记得要执行 chmod a+x /etc/mosdns/rule/geoip2ipset.sh 给它赋予可执行权限。

#!/bin/bash
geoipfile="$1"
tag="$2"
tmpdir="/tmp/v2dat"
FW4=$(command -v fw4)
cd $(cd $(dirname $BASH_SOURCE) && pwd)
mkdir -p "$tmpdir"
filename=$(basename -- "$geoipfile")
filename="${filename%.*}"
filename="$tmpdir/${filename}_$tag.txt"
if [ "$tag" == "telegram" ]; then
    wget -4 --timeout 5 -O "$filename" 'https://core.telegram.org/resources/cidr.txt'
    if [ "$?" != "0" ]; then
         /usr/bin/v2dat unpack geoip -o "$tmpdir" -f "$tag" "$geoipfile"
    /usr/bin/v2dat unpack geoip -o "$tmpdir" -f "$tag" "$geoipfile"
if test -f "$filename"; then
    if [ -n "$FW4" ]; then
        nft add set inet fw4 "$tag" { type ipv4_addr\; flags interval\;  auto-merge\; }
        nft add set inet fw4 "${tag}6" { type ipv6_addr\; flags interval\;  auto-merge\; }
        nft flush set inet fw4 "$tag"
        nft flush set inet fw4 "${tag}6"
    ipset create "$tag" hash:net -!
    ipset create "${tag}6" hash:net family inet6 -!
    ipset flush "$tag"
    ipset flush "${tag}6"
    while read p; do
        if ! grep -q ":" <<< "$p"; then
            if [ -n "$FW4" ]; then
                nft add element inet fw4 "$tag" { "$p" }
            ipset add "$tag" "$p"
            if [ -n "$FW4" ]; then
                nft add element inet fw4 "${tag}6" { "$p" }
            ipset add "${tag}6" "$p"
    done <"$filename"
    echo "$filename missing."
rm -rf "$tmpdir"

mosdns

选自定义配置文件,取消 DNS 转发 的勾,然后我就直接贴配置了,注意 Clash DNS 端口要改成你自己在 OpenClash 里的配置,LAN IP-CIDR 也要改成你自己的内网配置,这里 mosdns 监听了 5335 端口。并且要在 GeoData 数据导出 里配置上我们用到的标签: GeoSite: cn, apple-cn, category-games@cn, geolocation-!cn , GeoIP: cn

level: info file: "/tmp/mosdns.log" include: [] plugins: # 国内域名 - tag: geosite_cn type: domain_set args: exps: - "lan" - "local" - "arpa" files: - "/etc/mosdns/rule/whitelist.txt" - "/var/mosdns/geosite_cn.txt" - "/var/mosdns/geosite_apple-cn.txt" - "/var/mosdns/[email protected]" # 国内 IP - tag: geoip_cn type: ip_set args: files: - "/var/mosdns/geoip_cn.txt" # 国外域名 - tag: geosite_no_cn type: domain_set args: files: - "/etc/mosdns/rule/greylist.txt" - "/var/mosdns/geosite_geolocation-!cn.txt" # hosts - tag: hosts type: hosts args: files: - "/etc/mosdns/rule/hosts.txt" # 国内解析 - tag: local_sequence type: sequence args: - exec: forward 127.0.0.1 - matches: - has_resp - resp_ip 192.168.1.0/24 # LAN IPCIDR exec: ttl 1800-0 # 国外解析 - tag: remote_sequence type: sequence args: - matches: - qtype 28 exec: reject 0 - exec: forward 127.127.127.127:7874 - exec: ttl 1800-0 # 有响应终止返回 - tag: has_resp_sequence type: sequence args: - matches: has_resp exec: accept # fallback 用本地服务器 sequence # 返回非国内 ip 则 drop_resp - tag: fallback_local type: sequence args: - exec: $local_sequence - matches: "!resp_ip $geoip_cn" exec: drop_resp # fallback 用远程服务器 sequence - tag: fallback type: fallback args: primary: fallback_local secondary: remote_sequence threshold: 200 always_standby: true # 主要的运行逻辑插件 # sequence 插件中调用的插件 tag 必须在 sequence 前定义, # 否则 sequence 找不到对应插件。 - tag: main_sequence type: sequence args: # hosts - exec: $hosts - exec: jump has_resp_sequence # drop https query type - matches: - qtype 65 exec: reject 3 # handle local ptr - matches: - qtype 12 exec: $local_sequence - exec: jump has_resp_sequence - matches: - qname $geosite_cn exec: $local_sequence - exec: jump has_resp_sequence - matches: - qname $geosite_no_cn exec: $remote_sequence - exec: jump has_resp_sequence - exec: $fallback - tag: udp_server type: udp_server args: entry: main_sequence listen: ":5335"

AdGuardHome

在 luci 页面上,开启端口重定向,选择 重定向53端口到AdGuardHome ,这里注意 AdGuardHome 本身不要监听 53 端口,把 53 端口留给 dnsmasq,AdGuardHome 设置一个其它的端口就可以了。

在 Web 管理页面上, 设置 DNS 设置 中,上游 DNS 服务器内只填写一个 mosdns 的地址 127.0.0.1:5335 #mosdns ,私人反向 DNS 服务器写上 127.0.0.1 #dnsmasq 。DNS 缓存配置里面,缓存大小看你内存大小填写,乐观缓存勾上。

对于不想走代理的设备,可以在 设置 客户端设置 中添加,并且把上游 DNS 服务器设置成 127.0.0.1

© 版权声明
THE END