站点图标 谷姐靓号网

教程:旁路由DNS上网代理—-新玩法,只需主路由改DNS就行。-nat.ee

Rate this post

# 前话
# 传统意义上来说,使用旁路由上网代理,需要修改主路由的网关为旁路由IP,
# 又或者需要上网代理的设备修改网络的静态IP地址里的网关为旁路由IP,
# 并且不管你有没有上网代理,那么你的网络数据都要走一遍到旁路由处理,
# 此教程实现的是,只把需要上网代理的域名走旁路由处理,而且不用修改网关,
# 只需要修改主路由的DNS为旁路由的IP就行,真正做到旁路由挂了,也不影响主路由网络.
# 因为主路由下可设置两个DNS,当第一个主DNS失败,会使用备用DNS查询.

# 适合 Debian / Ubuntu / Armbian / DietPi
# 不建议用Openwrt当旁路由系统,有局限性,换成完整的Linux体验吧,可玩更多.
# 操作安装以下程序前,请先关闭旁路由系统的防火墙,
# 并且确保 [53/80/443] 端口未被占用.
# 在主路由上给你的旁路由绑定静态IP
# 示例: 主路由IP: 192.168.1.1 旁路由器IP: 192.168.1.11

# ----------教程1安装配置AdGuardHome----------

# 项目网址 https://github.com/AdguardTeam/AdGuardHome

# 安装AdGuardHome

    # 安装所需依赖
    apt-get update
    apt-get install curl sudo -y
    # 一键下载安装
    curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

    # AdGuardHome 操作指令:
    # 启动
    sudo /opt/AdGuardHome/AdGuardHome -s start
    # 停止
    sudo /opt/AdGuardHome/AdGuardHome -s stop
    # 重启
    sudo /opt/AdGuardHome/AdGuardHome -s restart
    # 状态
    sudo /opt/AdGuardHome/AdGuardHome -s status
    # 安装
    sudo /opt/AdGuardHome/AdGuardHome -s install
    # 卸载
    sudo /opt/AdGuardHome/AdGuardHome -s uninstall

# 安装成功后,浏览器打开 http://IP:3000
# 首次安装配置
# 网页管理界面 > 监听接口-选择[所有接口] > 端口-填[3000]# DNS服务器 > 监听接口-选择[所有接口] > 端口-填[53]

# 配置文件 /opt/AdGuardHome/AdGuardHome.yaml

# 优化设置
# 设置 > DNS 设置 > 上游 DNS 服务器-填多个国内公共DNS
# 设置 > DNS 设置 > 上游 DNS 服务器 > 选择-并行请求
# 设置 > DNS 设置 > 上游 DNS 服务器 > Bootstrap DNS 服务器 > 添加国内公共DNS
# 设置 > DNS 设置 > DNS 服务配置 > 速度限制-填[0]# 设置 > DNS 设置 > DNS 服务配置 > 选择-禁用 IPv6 地址的解析
# 设置 > DNS 设置 > DNS缓存配置 > 缓存大小-填[16777216] > 覆盖最小TTL值-填[300] > 覆盖最大TTL值-填[1800] > 选择-乐观缓存
# 设置 > DNS 设置 > 访问设置 > 允许的客户端-留空

# 安装 resolvconf 配置旁路由 本地DNS
apt-get install resolvconf -y

# 编辑 /etc/resolvconf/resolv.conf.d/head 文件
# 添加

    nameserver 127.0.0.1
    nameserver 192.168.1.1

# 127.0.0.1 为旁路由本地IP,而 192.168.1.1 为主路由IP
# 优先使用 127.0.0.1 ,如果查询失败就用 192.168.1.1

# 在你的主路由DHCP里,修改DNS设置
# 第一条填旁路由的IP,让旁路由的AdGuardHome优先接管DNS.
# 第二条填主路由的IP,让主路由备用接管DNS.

# ----------分割线----------

# ----------教程2安装配置V2raya----------

# 官网 https://v2raya.org/

    # 安装所需依赖
    apt-get update
    apt-get install nftables wget curl sudo -y

    # 安装 V2Ray 内核
    # 一键下载安装-二选一
    bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
    # 一键下载安装-二选一
    curl -Ls https://mirrors.v2raya.org/go.sh | sudo bash
    # 安装后可以关掉服务,因为 v2rayA 不依赖于该 systemd 服务.
    sudo systemctl disable v2ray --now

    # 安装 v2rayA
    # 添加公钥
    wget -qO - https://apt.v2raya.org/key/public-key.asc | sudo tee /etc/apt/trusted.gpg.d/v2raya.asc
    # 添加 V2RayA 软件源
    echo "deb https://apt.v2raya.org/ v2raya main" | sudo tee /etc/apt/sources.list.d/v2raya.list
    sudo apt update
    sudo apt install v2raya
    # 启动 v2rayA
    sudo systemctl start v2raya.service
    # 设置开机自动启动
    sudo systemctl enable v2raya.service

# 安装成功后,浏览器打开 http://IP:2017
# 在第一次进入页面时,你需要创建一个管理员账号,请妥善保管你的用户名密码,如果遗忘,使用sudo v2raya --reset-password命令重置.

设置 > 透明代理/系统代理 > 选择-启用: 分流规则与规则端口所选模式一致 > 开启IP转发
设置 > 透明代理/系统代理实现方式 > 选择-tproxy
设置 > 规则端口的分流模式 > 选择-RoutingA > 配置 > 清空并添加以下内容:
# ----------以下V2raya配置内容,请把里面内容替换你自己的----------

    # 默认全局代理
    default: proxy

    # 目的IP规则
    # 梯子IP 直连
    ip(xxx.xxx.xxx.xxx) -> direct

    # 路由器IP 直连
    ip(192.168.1.1/24) -> direct

    # 国内IP和本地IP 直连
    ip(geoip:private,geoip:cn) -> direct
    # 国内域名 直连
    domain(geosite:cn) -> direct

    # 目的端口规则
    # Adguard Home DNS 直连
    port(53) -> direct

# ----------以上V2raya配置内容,请把里面内容替换你自己的----------
设置 > 自动更新订阅 > 选择-每隔一段时间更新订阅(单位:小时) > 填[12]设置 > 解析订阅链接/更新时优先使用 > 选择-跟随规则端口

# 永久开启路由转发
# 修改 /etc/sysctl.conf 文件
# 添加

    net.ipv4.ip_forward = 1

# 让其即刻生效
sysctl -p

# 记得把你的梯子添加好,然后运行.
# 在本地ssh 测下能否正常翻.例如:
curl -L www.google.com

# ----------分割线----------

热议
来自 2#楼 nat.ee

# 配置文件 /etc/sniproxy.conf
# 修改清空添加以下内容
# ----------以下SniProxy配置内容,请把里面内容替换你自己的----------

    user daemon

    # PID 文件,需要放在用户可写的目录下.
    pidfile /var/run/sniproxy.pid

    # 如没有指定,则从 /etc/resolv.conf 加载.
    resolver {
    # 指定公共DNS服务器
    nameserver 127.0.0.1
    mode ipv4_only
    }

    # 监听 80 端口
    listener 0.0.0.0:80 {
    # 协议 HTTP
    proto http
    access_log {
    filename /var/log/sniproxy/http_access.log
    priority notice
    }
    }

    # 监听 443 端口
    listener 0.0.0.0:443 {
    # 协议 HTTPS
    proto tls
    access_log {
    filename /var/log/sniproxy/https_access.log
    priority notice
    }
    }

    # 如果没有指定表,则定义默认的"默认"表.
    table {
    # 匹配有效的 Perl 兼容正则表达式
    # 匹配任何主机名
    .* *
    }

# ----------以上SniProxy配置内容,请把里面内容替换你自己的----------
# systemctl restart sniproxy 重启生效

# 接下来,测试下能否成功了.
# 添加 AdGuardHome 重写列表
# 在 AdGuardHome里
# 过滤器 > 自定义过滤规则 > 添加如下:
# ----------以下AdGuardHome重写内容,请把里面内容替换你自己的----------

    ||google.com^$client=~127.0.0.1,dnsrewrite=旁路由IP
    ||google.com.*^$client=~127.0.0.1,dnsrewrite=旁路由IP
    ||gstatic.com^$client=~127.0.0.1,dnsrewrite=旁路由IP
    ||googleusercontent.com^$client=~127.0.0.1,dnsrewrite=旁路由IP
    ||有图比.com^$client=~127.0.0.1,dnsrewrite=旁路由IP
    ||googlevideo.com^$client=~127.0.0.1,dnsrewrite=旁路由IP
    ||googleapis.com^$client=~127.0.0.1,dnsrewrite=旁路由IP
    ||ytimg.com^$client=~127.0.0.1,dnsrewrite=旁路由IP
    ||ggpht.com^$client=~127.0.0.1,dnsrewrite=旁路由IP

# ----------以上AdGuardHome重写内容,请把里面内容替换你自己的----------

# 特别注意:这个旁路由IP,是你主路由给旁路由分配的IP,而不是127.0.0.1
# 例如在主路由上给旁路由绑定静态IP为:192.168.1.11,那就在规则上替换为这个.

# 然后在电脑或者手机打开你的浏览器访问www.google.com 或 www.有图比.com 测试能否访问了.

# 我尽量说得明白给你看,你自己慢慢绕着理解,单独拿出来说
# ||google.com^$client=~127.0.0.1,dnsrewrite=旁路由IP
# 匹配google.com域名以及子域名,并排除IP为 ~127.0.0.1 的客户端,然后重写A记录到旁路由IP
# 由于AdGuardHome在旁路由上运行,并且旁路由默认设置使用的DNS也是为 127.0.0.1 ,所以旁路由的本地IP是127.0.0.1
# 而 dnsrewrite 的也是旁路由IP,不过这个不是本地的127.0.0.1 IP,而是主路由给旁路由分配的IP,例如:192.168.1.11
# 由于我们要给局域网的设备把需要上网代理的域名都重写到旁路由IP,让自带v2raya上网代理的旁路由sniproxy处理返回,
# 所以大家都在同一主路由下并分配了IP,大家要互相访问,那就要用到主路由给的IP了,所以 dnsrewrite 是这样理解.
# 这个规则就是匹配需要上网代理的域名,并把旁路由设备自身排除在规则外,然后把域名重写A记录IP到旁路由,如果旁路由都应用这个规则就死循环了.

# 上面的那些演示规则,我只测试google和有图比的,更多的请参考:
# 国内被墙的域名 高墙List https://raw.githubusercontent.com/高墙list/高墙list/master/高墙list.txt 自己下载回用base64解码分析
# 然后参考这里的 https://github.com/AdguardTeam/AdGuardHome/wiki/Hosts-Blocklists Adblock编写规则语法
# 写成你自己的规则文件,放在直链下,或者旁路由上安装个http,放在上面.
# 在AdGuardHome > 过滤器 > DNS 黑名单 > 添加黑名单,添加上规则的直链就行.

此教程由荣耀(nat.ee)原创编写,转载请保留.

来自 3#楼 nat.ee 昨天17:56

相信各位都了解过 奈飞DNS解锁吧,我这个原理是相同的,利用了sniproxy,不过是在本地使用。
别忘了,给你的规则添加上这些解锁网站的,
看这里https://raw.githubusercontent.com/ab77/netflix-proxy/master/proxy-domains.txt

推荐楼 hcyme 昨天17:59

只相信vlan

4楼 crazynet 昨天17:57

先回帖,回头研究一下

5楼 blacklife 昨天17:57

有些服务用的不止80 443 就挂壁了

6楼 Rece 昨天17:58

感谢大佬分享

8楼 nat.ee 昨天18:04

有些服务用的不止80 443 就挂壁了

可以在sniproxy里指定的

9楼 亲爱的瘦腿先生 昨天18:07

很6阿但是好复杂看着,
下个月准备买台ax6000做ap n1做旁路由了 k2p留着连智能设备

10楼 pubkey 昨天18:10

cy

12楼 cnlhx 昨天18:26

ros加条监控规则,故障自动切换网关就行了,两条脚本的事

主路由还是换ros好,内存占用极低,稳定,功能还强,好多其他系统需要设置半天的事情,ros一条脚本就行了

13楼 捕风 昨天19:20

很棒,先码,有空来折腾下玩玩

14楼 google-chrome 昨天21:36

ros加条监控规则,故障自动切换网关就行了,两条脚本的事

主路由还是换ros好,内存占用极低,稳定,功能还 ...

故障自动切换网关,是更新 DHCP OPTION ? 无感切换还是得用 VRRP 之类的路由协议吧。
一直觉得 VRRP 配置有点麻烦没来得及折腾。

15楼 似毛非毛 昨天22:04

mark一下。感觉用的到

16楼 ALPP 昨天22:28

看不懂,放弃,选择openwrt+openclash

17楼 cnlhx 昨天22:29

故障自动切换网关,是更新 DHCP OPTION ? 无感切换还是得用 VRRP 之类的路由协议吧。
一直觉得 VRRP 配 ...

用ros的netwatch功能,定时ping旁路由,一分钟之内ping不通就调用脚本关掉dns拦截,恢复主路由dns
修复旁路由后,会自动切换回旁路由dns,旁路由坏了不影响上网

楼主说的分流也可以靠ros的mangle标记+路由表完成,国内外彻底分离,可以直接开google vqn

还可以配合mosdns把国内和国外的dns解析分别对接adguard home加速dns解析和过滤广告

18楼 zynzcl 昨天22:32

不错,是个思路。收藏。

19楼 nkym 昨天23:15

好,我用nftables+v2ray作旁路由,debian11。很nice。反正不用动主路由,需要上网的终端改一下网关就行。这才是真正的旁路由挂了毫无影响啊

20楼 google-chrome 9小时前

用ros的netwatch功能,定时ping旁路由,一分钟之内ping不通就调用脚本关掉dns拦截,恢复主路由dns
修复旁 ...

DNS我知道可以通过劫持很简单就做到无感切换。
你说的网关无感切换是用的什么方案?

22楼 天蝎戴维哥 2小时前

有点复杂啊,感觉以后会用上

23楼 yousihai 1小时前

dns方案只能支持http和https,别的都是没办**常支持的。另外对于某些不使用dns的应用,如tg等也是无效的。更不用说udp了

24楼 newb 1小时前

MARK一下,谢谢大佬

25楼 羊村你喜哥 半小时前

我收藏了,等于我会了

26楼 Hetzner 半小时前

这种只能DNS代理,如果程序内置HTTPDNS的话,直接就走直连了,除非把主路由上面再把旁路网关以外的国外IP导向旁路网关。

申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。

退出移动版