潘多拉(PandoraBox | OpenWRT)固件 DNS 防污染解析,自动搭桥上网

小助手读文章 00:00 / 00:00

温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。

一、本文背景

国内 DNS 解析返回的数据有一些是被污染的(错误的 IP 地址),这在日常开发工作中影响较大,所以需要进行一定的处理使之返回正确的 IP。国内网络素有大局域网美誉,但是很多开发网站都在局域网外,所以还需要一个能够自动搭桥上网的功能。

二、开始之前

本文方法主要通过一台已安装潘多拉固件(即 PandoraBox,OpenWRT 也可)的路由器来实现,要实现自动搭桥上网(下文简称 FS)则需要一台能够正常上网的外网设备。

三、方法步骤

1、分析

DNS 防污染解析大致流程如下:

客户端访问请求
    └─  DNS 请求
         └─ 转发给路由器 ChinaDNS
               └─ 根据国内路由表判断是否为国内网站
                     ├─ 国内网站交给国内上游服务器处理 — 直接访问
                     └─ 国外网站交给的 FS 的 UDP 转发处理
                          └─ FS UDP 转发目的地为国外的 DNS 服务器 — FS 访问

下面我们将直接通过路由器的网页管理界面来实现。

2、安装

路径:系统 - 软件包

开始之前先更新一遍软件源,以更新软件清单。

I、ChinaDNS

过滤器搜索 ChinaDNS,然后在可用软件包里找到 luci-i18n-chinadns-zh-cn 点安装,由于软件管理工具opkg依赖性特点,会自动一起安装 ChinaDNSluci-app-chinadns 等软件包:

搜索软件包 chinadns.png

如果不想通过网页界面进行,在命令行中直接 opkg install 这三个软件包也可,下同。

II、Shadowsocks

即上文的 FS。在过滤器搜索 shadowsocks,然后在可用软件包里找到 luci-app-shadowsocks 点安装,同样的,会自动一起安装 shadowsocks-libev-configshadowsocks-libev-ss-localshadowsocks-libev-ss-redirshadowsocks-libev-ss-rulesshadowsocks-libev-ss-tunnel 等软件包:

搜索软件包 shadowsocks.png

3、配置

根据第 1 步分析,为实现这种效果,根据依赖性在配置上我们应该倒过来进行。

I、Shadowsocks

路径:服务 - 影梭

先在服务器管理添加服务器 FS,然后点保存:

Shadowsocks - 服务器.png

回到一般配置,配置两个地方,透明代理端口转发,(主)服务器下拉选择刚保存的服务器 FS端口转发 的本地端口记下来后面要用到:

Shadowsocks - 一般配置.png

其他配置根据需要配置,保持默认也可,点 保存&应用

II、ChinaDNS

路径:服务 - ChinaDNS

全部打勾,然后保存&应用即可,其中:

  • 本地端口是下一步 DHCP 要用到的,记下来;
  • 国内路由表是上一步影梭访问控制要用到的,记下来;
  • 上游服务器需要填写两个 DNS 服务器地址,第一个写国内 DNS 服务器地址,第二个写转发给 Shadowsocks 的UDP 转发地址,端口号即是上一步记下的 端口转发 的本地端口的值(UDP),两个地址间用半角逗号分隔:

ChinaDNS 配置.png

回到影梭访问控制中,默认策略是国内的直连(即刚记下的国内路由表),国外的一律通过上面的透明代理

Shadowsocks - 访问控制.png

修改后记得保存&应用

III、DHCP

路径:网络 - DHCP/DNS - 一般设置

下拉找到 DNS 转发,将其设置为第 II 步 ChinaDNS 记下的本地端口

DHCP 配置.png

然后切换到 HOSTS 和解析文件,将 忽略解析文件忽略 /etc/hosts 勾上,避免 DHCP 失效:

DHCP-HOSTS.png

最后保存&应用

4、验证

I、DNS 解析

[root@PDR:~]#dig google.com @127.0.0.1 +short
172.217.24.78
[root@PDR:~]#dig www.google.com @127.0.0.1 +short
172.217.161.132
[root@PDR:~]#host 172.217.24.78
78.24.217.172.in-addr.arpa domain name pointer sin10s06-in-f78.1e100.net.
78.24.217.172.in-addr.arpa domain name pointer hkg07s33-in-f14.1e100.net.
78.24.217.172.in-addr.arpa domain name pointer sin10s06-in-f14.1e100.net.
[root@PDR:~]#host 172.217.161.132
132.161.217.172.in-addr.arpa domain name pointer hkg12s17-in-f4.1e100.net.

可以看到 DNS 解析返回了无污染的正确 IP。

II、自动搭桥

[root@PDR:~]#curl http://members.3322.org/dyndns/getip
*.*.*.*(宽带外网 IP)
[root@PDR:~]#curl http://ifconfig.me/ip
*.*.*.*(FS IP)
[root@PDR:~]#curl -I https://www.google.com/
HTTP/1.1 200 OK
Date: Sat, 15 Feb 2020 14:00:59 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2020-02-15-14; expires=Mon, 16-Mar-2020 14:00:59 GMT; path=/; domain=.google.com; Secure
Set-Cookie: NID=; expires=Sun, 16-Aug-2020 14:00:59 GMT; path=/; domain=.google.com; HttpOnly
Transfer-Encoding: chunked
Alt-Svc: quic=":443"; ma=2592000; v="46,43",h3-Q050=":443"; ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000
Accept-Ranges: none
Vary: Accept-Encoding
[root@PDR:~]#curl -I https://www.baidu.com/
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Connection: keep-alive
Content-Length: 277
Content-Type: text/html
Date: Sat, 15 Feb 2020 14:01:12 GMT
Etag: "575e1f65-115"
Last-Modified: Mon, 13 Jun 2016 02:50:13 GMT
Pragma: no-cache
Server: bfe/1.0.8.18

可以看到访问已经按照我们的设置,实现了国内直连,国外自动透明代理。


参考文章:

1、《潘多拉固件安装shadowsocks实现自动翻墙


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 Googleshadowsocks代理dnsopenwrtpandorabox固件潘多拉污染chinadns 的文章

 本文最后更新于 2020/02/17 09:00:00,可能因经年累月而与现状有所差异

 引用转载请注明: VirCloud's Blog > 经验 > 潘多拉(PandoraBox | OpenWRT)固件 DNS 防污染解析,自动搭桥上网