设为首页 - 加入收藏
广告 1000x90
您的当前位置:主页 > 资源 > 效果代码 > 正文

『软路由踩坑指南』 篇五:OpenWrt旁路由进阶篇

来源:未知 编辑:天选资讯 时间:2023-02-26

  (server)就是在网上为客户端提供服务的电脑。client是发出请求 (request)的一方,而服务器(server)响应它的请求并为其提供服务。

  【域名系统(Domain Name S ystem,缩写:DNS)】是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,是 Internet 上解决网上机器命名的一种系统,能够使人更方便地访问互联网。就像拜访朋友要先知道别人家怎么走一样,Internet 上当一台 主机要访问另外一台主机时,必须首先获知其地址。

  域名解析就像我们初次拜访朋友一样,首先要知道人家的门牌号,然后按照地址去找。在 Internet 上只知道某台机器的域名还是不够的,还要有办法去找到那台机器。寻找这台机器的任务由网上一种被称为域名服务器的设备来完成的,而完成这一任务的过程就称为域名解析。

  可以用 IP 地址标识,并且可以通过 IP 地址被访问,但即使是将 32 位的二进制 IP 地址写成 4 个 0~255 的十位数形式,也依然太长、太难记。因此,人们发明了域名 (Domain Name),域名可将一个 IP 地址关联到一组有意义的字符上去。用户访问一个网站的时候,既可以输入该网站的 IP 地址,也可以输入其域名,对访问而言,两者是等价的。例如:微软公司的 Web 服务器的 IP 地址是 207.46.230.229,其对应的域名是,不管用户在浏览器中输入的是 207.46.230.229 还是,都可以访问其 Web 网站。

  53端口是为(Domain Name Server(DNS域名服务器)服务器所开放的端口,主要用于域名解析,DNS 服务在 NT 系统中使用的最为广泛。通过 DNS 服务器可以实现域名与 IP 地址之间的转换,只要记住域名就可以快速访问网站。

  OpenWrt默认使用的是DNSMASQ来管理DNS默认监管的 53 端口。我们这些上网的设备发出的 DNS 请求都是先到这里,然后再通过 DNS 转发(在常规设置中可以更改)送到网关,最后到运营商等 DNS 服务器进行查询。

  DNSMASQ 是一个轻量级的DNS和DHCP 服务器,大约 200 多 KB,并且完整的包含了 DNS 服务器和 DHCP 服务器功能,非常适合 flash 空间有限的嵌入式系统。DNSMASQ作为OpenWrt默认的DNS 服务器和转发器,接收Client的 DNS 查询请求,并回复 DNS 查询结果。查询的结果可以来自本地缓存和公共 DNS 服务器,如果本地缓存没有记录,DNSMASQ 会将请求转发到公共的 DNS 服务器,并将公共的 DNS 解析的结果回复到请求的设备。

  那SmartDNS 和 DNSMASQ 有什么区别?我们为何又这么折腾呢?

  address,ipset 域名匹配采用高效算法,查询匹配更加快速高效,路由器设备依然高效。

  域名匹配支持忽略特定域名,可单独匹配 IPv4, IPV6,支持多样化定制。

  IPV4,IPV6 双栈 IP 优选机制,在双网情况下,选择最快的网络通讯。

  设置最核心的部分就是DNS转发端口的衔接,而我们要做的就是把DNSMASQ、Adguardhome、SmartDNS三个插件里的DNS服务器功能分成三个层级,实现层层转发。依次是第一级DNSMASQ,第二级Adguardhome,第三级SmartDNS。

  IPv4网关:指向ikuai的网关。保证OpenWrt的上网数据传输到ikuai再传输到外网。

  使用自定义的DNS服务器:首先设置一个自定义的DNS,这里我们先设置一个能用的DNS即可,保证我们在设置过程中可以上网,后面设置好了,可以将DNS改为由OpenWrt代理,即输入OpenWrt的网关改成192.168.50.2。

  楼主的电信网络没有IPv6服务,全部使用的是IPv4的服务,禁用掉IPv6服务。

  lan口高级设置里不勾选IPv6,勾选【开启开机自动运行】和【强制链路】:

  开启【Turbo ACC 加速】,如果前面已经开启了,检查网络内的【Turbo ACC 加速】设置是否正确:

  只开启前三个即可,DNS缓存后面由SmartDNS来管理。如果开启了会产生冲突,冲突了就会不生效,关闭 Turbo ACC 网络加速设置的 DNS 加速。

  打开openwrt的防火墙, SYN-flood 防御、丢弃无效数据包起不起用都可。下面启用 FullCone-NAT、入站数据、出站数据、转发都设置为接受。

  自定义规则里再加入下面一条规则,如果现在使用的网卡是eth1或者eth2,这里同样修改为eth1或者eth2。

  家里的上网设备对外发送一个上网请求数据包,向外发一个包,先发到旁路由openwrt(192.168.50.2),如果不加这条规则,旁路由并没有修改这个包的源地址(192.168.50.XX),这个包由旁路由openwrt转发给ikuai主路由(192.168.50.1)再到外网。外网回应的数据包,到了ikuai主路由(192.168.50.1),主路由一查 NAT表,发现是设备(192.168.50.XX)的,就直接发给设备了,这个数据(包含广告),没有经过openwrt(192.168.50.2)处理。我们加上这条命令后,回程返回的数据包会先回到openwrt进行处理,再返给设备。

  ikuai主路由开 DHCP(未指向openwrt旁路由网关),openwrt旁路由关 DHCP,旁路由只有 LAN 口工作,其他设备需设置静态网关为旁路由,需要设置。

  ikuai主路由开 DHCP(未指向openwrt旁路由网关),openwrt旁路由开 DHCP(强制模式开),旁路由只有 LAN 口工作,其他设备通过强制 DHCP 获取旁路由网关,需要设置。

  ikuai单臂路由情况,openwrt作为拨号路由(有拨号就有 WAN 口),不用设置。

  这样上网设备发出的数据,到达ikuai,ikuai会发送到openwrt进行一番处理,然后在发送到外网。回程的数据,ikuai也会发送到openwrt进行一番处理,然后转发到各个设备。

  安装:在 istore 中输入SmartDNS ,查找软件包安装即可,一般openwrt都带有这个服务,这个就不多说了。

  基本设置→SmartDNS勾选启用→服务器组名称:china→端口默认【6053】→开启TCP服务器→勾选双栈IP优选→勾选域名预加载→勾选缓存过期服务→重定向默认「无」→缓存大小设为:1000000→域名TTL最大值设为:3600→勾选启动→保存&应用。

  【双栈IP优选】:应注意自己的设备是否完全支持IPv6,尤其是网络运营商是否支持

  【重定向】:一定不要选择,后面我们用Adguard Home进行重定向。还有就是一些版本的SmartDNS,没有重定向功能,改成了自动设置 DNSMASQ,如果是这个版本注意不要点自动设置 DNSMASQ 。因为我自己是用的IPV4公网,这里IPV6的两项设置不勾选,如果用IPV6勾选此两项。

  【停用HTTPS地址解析】:如果下面上游路由器添加HTTPS协议的话,停用HTTPS地址解析这一项不要勾选。

  【缓存大小】:可根据需求填入,这里填入的数字是指缓存的条数,楼主写了个十万「100000」,自己可以多写几条。

  【域名TTL】:是指缓存的时间,也就是DNS在本地保留生效的时间,留空则根据上游服务器告知的时间缓存,但是如果低于最小值,则按照最小值在缓存之内防止短时间多次查询,如果时间过长则按照最大值缓存防止失效。域名TTL可根据自己需求需求填入,最小值填入「300」、域名 TTL 最大值填入「3600」。域名TTL最大值如果我们这里填入3600,意思是缓存一个小时。同样如果填入864000,意思就是系统会帮我们缓存十天。

  smartdns 提供了域名缓存机制:对查询的域名,进行缓存,缓存时间符合 DNS TTL 规范。

  ①为提高缓存命中率,适当增大 cache 的记录数、通过 cache-size来设置缓存记录数。内存大的情况下,可适当调大。可以提高 cache 效率,加快访问速度

  ②适当设置最小 TTL 值:通过 rr-ttl-min`将最低 DNS TTL 时间设置为一个合理值,延长缓存时间。建议是超时时间设置在 10~30 分钟,避免服务器域名变化时,查询到失效域名。

  配合上述 ttl 超时时间,smartdns 将在域名 ttl 即将超时使,再次发送查询请求,并缓存查询结果供后续使用。频繁访问的域名将会持续缓存。此功能将在空闲时消耗更多的 CPU。

  ④数量方面:SmartDNS 有测速机制,在配置上游服务器时,建议配置多个上游 DNS 服务器,包含多个不同区域的服务器,但总数建议在 10 个左右。

  ⑤隐私方面:默认情况下,SmartDNS 会将请求发送到所有配置的 DNS 服务器,若上游 DNS 服务器使用 DNS,或记录日志,将会导致隐私泄漏。所以在配置的时候要考虑:

  IOS14 开始,苹果支持了 DNS HTTPS (TYPE65) 记录的解析,此功能用于快速 DNS 查询和解决 HTTPS 链接相关的问题,但当前还是草案,另外会导致广告屏蔽等功能失效,建议通过如下配置关闭 TYPE65 记录查询。

  这里将DNS分别进行分组,当浏览国内网页时使用国内DNS,在访问国外网站时自动使用国外DNS。点新增开始下一步:

  按照以下设置分别将下面的国内DNS插入进去,注意这里我们使用了国内国外分流,国内国外不宜添加过多,添加之前可以在网上测试下DNS的速度,国内国外各添加十条就够了。DNS测试网站

  首先添加电信运营商给的DNS。这样在查询的时候会优先查询。打开ikuai wan口拨号页面,查看供应商给的DNS,可以看到电信供应商给了两个DNS:

  下面进行添加国外DNS,国外DNS协议要添加UDP、TCP和TLS三种协议。

  有的版本的SmartDNS是有从默认服务器组排除这个选项的,如果有这个选项,国外的DNS服务器在添加的时候,勾选就可以了。这样就可以把国内组进行分开,访问国内网站的时候使用国内DNS,使用国外网站的时候,选择国外的DNS服务器。

  启用第二 DNS 服务器,端口默认「5335」,因为很多插件的DNS服务中用的就是5335端口,这里设置后好了之后,直接选用即可。

  启用→开启「TCP 服务器」→本地端口设为5335→服务器组:guowa→勾选跳过测速→勾选跳过address规则→勾选跳过双栈优选→勾选跳过cache→启用——保存&应用

  在SmartDNS 自定义中添加下面两项分组信息,其他的删掉即可,只保留主体部分:

  在服务里打开AdGuard Home,可以看到基本设置、日志、手动设置三个选项。前两个是wed端可视设置,手动设置就是通过命令进行设置。

  首先更新核心版本,现在可以看到红色的状态是未运行和未重定向,如果特殊上网正常的话是可以更新的,点击检查更新,更新核心:

  如果因为网络问题无法更新,那只能手动更新了。打开AdGuardHome,找到点击右下角,作者编译好的最新的版本。

  下载打开压缩包,第一个AdGuardHome就是核心文件,我们只用到这一个就可以了。

  安装完成后,新建连接。输入主机名,openwrt的IP地址,端口号不用该,输入用户名和密码,连接。

  更新完核心之后可以看到,重定向选项,重定向方式有【作为 DNSMASQ 的上游服务器】、【重定向 53 端口到 Adguardhome】、【使用 53 端口替换DNSMASQ 】3种选择,这里先选择无,就是先不重定向,等到后面设置好了,我们再开启。

  关于三种重定向方式的区别。从下面luci-app-adguardhome的作者注释来看,【作为 DNSMASQ 的上游服务器】是最稳定的方式,就采用这个就好了,效果其实都一样,不要折腾,越折腾莫名其妙的问题越多。

  作为 dnsmasq 的上游服务器 (在 AGH 中统计到的 ip 都为 127.0.0.1,代价就是没法统计局域网客户端,都显示 127.0.0.1 了,无法统计客户端及对应调整设置,基本上无影响,但是酸酸乳plus 正常)

  然后勾选【详细日志】、【开机后网络准备好时重启】、【在关机时备份工作目录文件】所有的选项,保存启动AdGuard Home。

  这时可以看到,AdGuard Home已经运行,但是还有一个红色的未重定向,这是正常的。

  也可以直接输入旁路由地址:端口号,楼主旁路由地址是192.168.50.2,可以直接输入192.168.50.2:3000进行配置。会出来个网页。点击开始配置进入下一步:

  网页管理界面——监听接口——所有接口,端口号设置为默认的3000。也可以设置成其他的,这个只要不和现用的其他端口冲突即可。

  DNS 服务器——监听接口——所有接口,端口号设置为5351。(这个可以随便设置一个,同样也是不冲突就行)

  配置AdGuard Home的网页管理界面登录密码,输入常用的账户密码即可。

  点击进入下一步,检查有没有问题,可以把这些内容保存下来,省的以后忘记或者后面设置忘记了。

  为保证 AdGuard Home 可以开始正常工作,您需要在设备上对其进行配置。AdGuard Home DNS 服务器正在监听以下地址:

  常规设置里【使用过滤器和Hosts文件以拦截指定域名】勾选开启,其他选择关闭。不要问为什么,问就是稳定优先,已经够用,开了会出bug,网页崩溃、显示不全、打不开等种种问题。

  再打开【DNS设置】页面,设置AdGuard Home的上游DNS服务器:

  前面我们已经在在SmartDNS设置了国内DNS端口为端口默认【6053】

  127.0.0.1是一个特殊用途的 IPv4 地址,称为localhost或环回地址。所有计算机都使用此地址作为自己的地址,但它不会像真实 IP 地址那样让计算机与其他设备通信。

  。 的任何数据包都不应该离开计算机(主机),发送它 —— 而不是被发送到本地网络或互联网,它只是被自己 环回,并且发送数据包的计算机成为接收者。localhost 只是默认情况下引用 127.0.0.1 的简写,就是当做本地主机的总127.0.0.1来用。

  下面DNS的查询方式有负载均衡、并行请求、最快的IP地址三种,楼主还是建议选择并行请求,上面我们设置过了DNS全部放到了smartdns里面缓存,Adguardhome会向smartdns缓存库里并行查询,smartdnsDNS本身具有返回最快dns的功能,也会向Adguardhome返回最快的DNS。

  负载均衡:一次查询一台服务器。 AdGuard Home 将使用加权随机算法来选择服务器,以便更频繁地使用最快的服务器。具体使用感受是,去视频 app 广告迅速,微博国际版登陆 5 秒广告可以去除,图片加载速度较快。存在的问题是,仪表盘平均处理时间较长,80-120ms 之间。

  并行请求:通过同时查询所有上游服务器,使用并行请求以加速解析。最老的模式,在添加本地 DNS 地址的情况下,去视频 app 广告迅速,微博国际版登陆 5 秒广告可以去除,仪表盘平均处理时间较短,可以保持在 5-8ms 之间。存在问题是,图片加载速度受影响,偶尔会加载慢,存在些许不稳定因素。

  最快的 IP 地址:查询所有 DNS 服务器并返回所有响应中速度最快的 IP 地址。因必须等待全部 DNS 服务器均有所回应,因而会降低 DNS 查询的速度,但同时此举将会改善总体的连接。本模式据说是 Smart DNS 的功能一样。对比上述模式没有区别,和并行模式并无态度啊去吧。存在问题是,仪表盘处理时间超长,1000ms 以上……

  这里都空着即可,采用上游DNS服务器,也就是让SmartDNS来管理这些,如果设置会产生冲突。

  将阻止匹配 DNS 拦截清单的域名,这里添加的清单就是一种在线的TXT 文件,而且是有专人维护的。可能是公司或者是大神来维护。而TXT文件里面就是一条一条网站信息。

  添加黑名单,这里可以从列表中添加,也可以添加自定义名单,列表中是Adguardhome收集和维护的一些名单,可以直接使用。自定义名单是从网上找一些大神为爱发电分享的名单。

  其中列表名单里这一条推荐使用,其他的可以去找一些网络大神分享的名单,搜索Adguardhome规则。

  AdGuard 默认的内置规则里很多选择,规则一定不要搞太多,一两个综合性的规则列表就已足够覆盖大部分情况,如果同时使用,这些规则可能会冲突,出现很多莫名其妙的问题,使用几个自己用的顺手的就可以了。有的规则带有两个或者两个以上的源头,可以留着以后失效之后使用。【】后面就是规则地址,使用前请自行在列表地址前面加上

  有误杀可尝试使用白名单,添加到 Adguardhome 的允许清单(不保证一定能解决问题),下面的地址请自己加上

  也可以添加你的规则列表,在允许清单里加上这个网址,这个网站就可以使用了,相当于给这个网站开了一个特权。

  ADGUARD 过滤语法规则,一行一回车,常用的就是第一二条。手动添加和接触拦截。直接复制,然后将里面的网址替换掉就可以了。

  比如我们要放行值得买网站及其子域名,只要添加一行代码就可以了,用于访问个别网站时候有BUG时快速添加。

  【作为 DNSMASQ 上游服务器】,可以看到前面的重定向变成了5351重定向,这个也就是AdGuard Home的DNS监听端口,如果你设置成8336、8338或者其他,这里显示的就是你设置的端口值。选择【作为 DNSMASQ 的上游服务器】,这样设置之后Adguardhome变成了DNSMASQ的上级DNS服务器。

  我们到DNSMASQ看下目前的状态,在【网络】→【DHCP/DNS】→DNS转发,可以看到,DNS转发内已经自动设置成了127.0.0.1#5351。如果转发路径不对,就强制改成127.0.0.1#5351。

  【/etc/hosts】是记录本地配置的域名和 IP 的映射的文件,是域名解析(如 ping,http 访问)时域名的第一解析方式。DNSMASQ可以选择加载 /etc/hosts到本地缓存,也可以选择不加载。

  同样在在【网络】→【DHCP/DNS】高级设置里面DNSMASQ还是在监听53端口。DNS 查询缓存的大小设置为0。不使用DNSMASQ的DNS缓存。点击保存生效。

  进入配置网页,仪表盘里你会发现已经开始DNS查询和广告拦截了。这里我们看到客户端拦截列表里看到的全部都是127.0.0.1 的数据。我们前面在重定向模式中选择了【作为 DNSMASQ 上游服务器】, DNS 请求第一步经过 DNSMASQ,然后才到Adguardhome,所以Adguardhome接受到的都是53 端口的DNS请求,这时候Adguardhome自是无法区分是哪个客户端发过来的请求,所以才出现了后台拦截的全都是 127.0.0.1 的数据。这里小伙伴不需要纠结,影响不大,稳定第一。

  如果懒得设置也可以使用别人的代码,不过容易出问题,最好的方法就是自己花个十几分钟设置一下。本次设置的代码如下:

  如果直接使用上面的代码可能导致主页登录不上去,可以看到代码里面是有一段加密的密码的,这里就需要我们去改一下密码,然后保存生效。

  在Adguardhome的基础设置页面,翻到最下面,可以看到有一个功能框,选择改变网页登录密码,点添加。

  可以看到网页上出现了一个改变网页登录密码的框,这里输入密码点载入计算模块,点计算即可生成新密码。

  好了今天《OpenWrt 旁路由模式下的SmartDNS+AdGuardHome设置分流与去广告》就完成了。下一篇会继续折腾《个人域名、DDNS动态解析、公网IP:通过ikuai软路由端口映射高速访问内部网络

  ★ 以上就是本期的全部内容了,有疑问或补充~欢迎评论区留言~~感兴趣的朋友,关注一下不迷路

相关推荐:

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

织梦模板大全 dedecms.codesdq 联系QQ:121673232 邮箱:121673232@qq.com

Copyright © 2002-2011 DEDECMS. 织梦科技 版权所有 Power by DedeCms

Top