配置 Dnsmasq 来避免山东联通的错误域名劫持广告

这篇讲的是如何配置 Dnsmasq 服务器,来避免 ISP 在域名不存在 (NXDOMAIN) 时返回错误的地址。通用于各个存在此问题的电信、联通运营商。

现在 Ubuntu 或 Arch Linux 等发行版,都默认用 NetworkManager (NM) 来管理网络连接。而现在 NM 已经支持与 Dnsmasq 配合进行 DNS 解析的缓存,而且最新版本 (Ubuntu 12.10 Quantal 以上,或 NM 0.9.6+)中已经可以直接修改 Dnsmasq 的配置文件了。

参考资料: 使用Dnsmasq解决联通的dns劫持 (这篇另外也讲了一些 Dnsmasq 其他的用处,比如防止 DNS 污染、屏蔽特定网站等。我很欣赏这篇文章里屏蔽的那几个网站,哈哈!

1. 首先要确定,你要屏蔽哪些 IP 地址?使用 nslookup 后跟一个不存在的域名,多试几次,可以大概知道一个 IP 地址的范围。例如:

$ nslookup fsjdlfjksljflsjakljls.com
... (省略) ...
Name: fsjdlfjksljflsjakljls.com
Address: 123.129.254.15

当然也可以去网上查询,例如山东联通的 IP 地址范围是:123.129.254.11 ~ 123.129.254.19。(这里吐槽一下,最开始用了9台服务器估计是想负载均衡,结果愚蠢的联通不知道该怎么配置,于是最开始解析到的都是 123.129.254.13,现在又都是15了……)

2. 然后要确定,你是不是在用 Dnsmasq?是的话,应该修改哪个配置文件?注意观察上面 nslookup 的结果,如果有这样一行:

Server: 127.0.0.1

就说明你在使用 Dnsmasq 本地服务器;否则如果是一个公网地址,就说明你没有配置使用它。

之后,再确定你是手动安装的 Dnsmasq,还是 NM 自带的?(关于如何配置 NM 使用 Dnsmasq,Ubuntu 是默认如此的,Arch 等用户请查看相关文档。)

$ ps aux | grep dnsmasq
... /usr/bin/dnsmasq ... --pid-file=/var/run/nm-dns-dnsmasq.pid ... --conf-file=/var/run/nm-dns-dnsmasq.conf ... --conf-dir=/etc/NetworkManager/dnsmasq.d

这里就能看出,是一个由 NM 控制的 Dnsmasq,包含 NM 动态生成的配置文件 /var/run/nm-dns-dnsmasq.conf,以及用户可修改的配置文件夹,也就是我们用到的 /etc/NetworkManager/dnsmasq.d 。如果没有看到类似的字样,说明你的 Dnsmasq 是手动安装的,配置文件通常位于 /etc/dnsmasq.conf。

3. 最后,按照 Dnsmasq 的格式,修改配置文件。如果是 NM 控制的,请在 /etc/NetworkManager/dnsmasq.d 下创建 xiaodu.conf,并填入以下内容;如果是手动安装的,请在 /etc/dnsmasq.conf 中添加以下内容。(其中的 IP 地址每行一个,按自己 ISP 的实际情况修改

bogus-nxdomain=123.129.254.11
bogus-nxdomain=123.129.254.12
bogus-nxdomain=123.129.254.13
bogus-nxdomain=123.129.254.14
bogus-nxdomain=123.129.254.15
bogus-nxdomain=123.129.254.16
bogus-nxdomain=123.129.254.17
bogus-nxdomain=123.129.254.18
bogus-nxdomain=123.129.254.19

写入完成后,保存即可。之后,可以重新启动 NM 或 Dnsmasq,使新配置生效。现在再来查询上面的域名:

$ nslookup fsjdlfjksljflsjakljls.com
... (省略) ...
** server can't find fsjdlfjksljflsjakljls.com: NXDOMAIN

这样就实现了我们上面的目的,防止 ISP 对不存在的域名进行劫持。

使用 uTorrent 的 ipfilter 过滤指定IP段

写这篇主要是有一个来访记录,查的就是如何使uTorrent屏蔽IPv4流量,其实方法很简单,我这里只是把官方教程解释一下。

uTorrent 官方关于 ipfilter 的教程:http://www.utorrent.com/intl/zh_cn/help/faq/misc

1. 首先打开 uTorrent 所在目录,如果不知道在哪,通常在 %appdata%utorrent (按Win+R后输入这个缩写点确定即可)。

2. 这个目录中有一个 ipfilter.dat 文件,如果没有的话创建一个,然后用记事本打开。

3. 按照以下格式输入IP段,每行一条(//后为解释,不需要输入):

x.x.x.x  //过滤单个IPv4地址
x.x.x.x-y.y.y.y  //过滤IPv4段
[a:b:c:d:e:f:g:h]  //过滤单个IPv6地址
[a:b:c:d:e:f:g:h]-[i:j:k:l:m:n:o:p]  //过滤IPv6段
[a:b:c:d::]/nn  //过滤IPv6子网

例如,过滤全部IPv4则输入: 0.0.0.0-255.255.255.255 。过滤全部 IPv6 则输入: [::]/0
注意:仅用ipfilter并不能很好的过滤 IPv4 或 IPv6,有时候还可能产生流量,建议配合防火墙使用。)

4. 保存这个文件。要使设置立即生效,可以在 uTorrent 中的“用户”页面上右键–“载入IP过滤”。

PT下载免流量的方法(需要防火墙支持)

这里介绍的是PT下载时可以免计下载流量的一个方法,需要你的电脑上有软件防火墙支持(Windows自带没试过,推荐Comodo),对IPv4或IPv6的PT通用。

Comodo防火墙(推荐,支持Windows操作系统各种版本):http://personalfirewall.comodo.com

这里介绍时一律以uTorrent为准(对PT协议严格遵守):http://www.utorrent.com

最近图片服务器挂了,修复后再上图。

1. 打开uTorrent,将下载的种子拖进去,不要选“开始下载”,然后点确定。

2. 选中种子,切换到“伺服”(Tracker)页面,会看到数个PT Tracker地址,形如“http://bt.neu6.edu.cn:6969/…”这样的。

3. 使用Ping或Nslookup查询服务器地址。

C:>nslookup bt.neu6.edu.cn
名称:    bt.neu6.edu.cn
Address:  2001:da8:9000::232

4. 打开Comodo防火墙,在防火墙–网络安全规则–全局规则,添加下列规则:行为–拒绝,目的地址–IPv4则输入地址,IPv6建议用/64掩码。其他默认,点击“应用”关闭规则窗口,但是不要点最后的“确定”

5. 在uTorrent中开始下载,然后等数秒,在Tracker第一次刷新完毕后,立刻在Comodo中点击“确定”。之后整个下载过程中再也不要允许访问Tracker,下载完成后,退出uTorrent,最后在Comodo中删除规则。

注意:在不计下载流量期间,上传流量也是不计的。因此一定要退出uTorrent、删除规则后,再重新打开做种。此文的主要目的在于揭示PT协议中存在的问题,而非教大家如何作弊,请勿过分使用。


好了,下面是原理,没有探索心的读者们可以止步去搞下载了。

原理是这样的:PT协议的简单流程为–第一次访问Tracker获取种子和用户,以后每次访问Tracker时,均提交上次的上传、下载量,并刷新更多用户。所以如果你屏蔽了之后的Tracker访问,Tracker会以为你停止了下载,但是其他用户提交的上传下载量都是匿名的(即他们的上传量不会标记是谁下载的),所以你就安全啦……

这个就是利用了PT协议的原理,只有Tracker知道所有用户的身份,而用户间传输是完全匿名的(他们不知道你的Passkey,只能看到你的IP)。如果你更Geek,网上有大神曾经写过利用PT协议的作弊器,可以直接批量向种子里的Tracker发送上传流量,请自行Google(这样有可能会被检测到并封号的,NexusPHP里就有非正常流量检测功能)。

Paypal付款后帐户受限制的人工解封过程

今天在网上用Paypal花1美金买了个东西,上网的时候一直开着某公用代理,付款之后发现被帐户被Paypal限制,交易也被Hold住了。下面是解决方法。

Paypal官网:https://www.paypal.com

邮箱里收到一封邮件,告诉我帐户已经被限制。自己解封的话,首先进入登入帐户,然后点“调解中心”,“启动对账户限制的审查”下面会告诉你帐户被封的情况,以及解封的步骤。我这里要求进行三步:更改帐户密码、更改密码提示问题和验证信用卡。What?!哥没有信用卡啊肿么办……于是下面介绍的是如何通过打Paypal客服电话来进行人工解封

1. 首先,打开Paypal帐户,登陆进去之后,在页面下方有一个“联系我们”。网址在此:https://www.paypal.com/c2/cgi-bin/helpscr?cmd=_help&t=escalateTab

2. 点击进入之后,左边有“给我们打电话”的选项,点击之后稍等就会出现一个六位数字“网络识别码”,以及本地Paypal的客服电话。在我这里看到的是021-28913888(不要直接拨打,先去上述网址获得识别码和正确的电话号码后再打)。

3. 打过去电话,首先按1选普通话服务,然后如果你的电话号码不是账号绑定的号码,就会问你是否有Paypal帐户,然后按1说已经有帐户,然后输入上面得到的六位识别码按井号键(#)结束。

4. 之后Paypal的人工客服会告诉你是肿么限制的,以及跟你确认你的开户姓名和一条帐户信息(我这里是问的出生日期),确定你是帐户持有人之后,就会帮你解封掉帐户,并且发送付款。

更简单更通用的搭建v4-v6隧道的方法

这篇文章介绍gogoNET提供的使用客户端搭建v4-v6隧道方法,比上一篇《在IPv4环境下搭建IPv6隧道的方法》中的HE.NET隧道更简单且更通用。

这个隧道(Freenet6)的网站是:http://gogonet.gogo6.com

1. 第一步是注册一个账号,但是其实不注册也可以啦,其实这是一个社交账号,强迫你注册了才能看到下载页面= =。

2. 如果注册了账号,请直接点击 http://gogonet.gogo6.com/profile/gogoCLIENT 这个网页下载客户端,注意区分32或64位;如果没有注册,请用我提供的地址下载(包含32、64位,是发文时的最新版):点击下载

3. 完整安装客户端,一路点下一步即可,安装完之后启动软件。

4. 直接点击界面上的Connect按钮,待下方提示连接成功即可。可以使用命令 ping ipv6.google.com 测试。

之所以说这个隧道通用,是因为在客户端的高级页面上,可以看到这个隧道原生支持NAT后的用户(使用UDP打洞吧),而且支持反过来的v6-v4隧道,即用IPv6网络传送IPv4数据,比HE.NET强大很多啊。


附录1(看完上面的你就可以上IPv6去了,下面的内容仅供具有探索精神的人阅读):

这样连接的话,连接到的是公用匿名服务器,不需要账号登陆。如果想拥有固定IP、固定三级域名(可以CNAME过去的有木有)等服务,请使用Freenet6的认证服务器。

Freenet6账号(与上面的gogoNET账号不同)注册地址为:http://gogonet.gogo6.com/page/freenet6-account (这是介绍页面,有个“here”链接到注册页面),注册完毕后,请在Connect之前换成认证服务器(服务器地址),然后在下方输入用户名和密码后再连接。

下图是我登陆后连接成功的图片(为了防止被称作“没图你说个JB”):

连接的是montreal服务器,User Domain第一段是注册的用户名。根据官方说明,最好指定一台静态服务器,才能保证获得的地址是静态的,不然就算登陆了最后地址也可能会变。

附录2:英文Wikipedia上有全球各种IPv6隧道的列表,很多都是使用gogoClient客户端的,只需改个服务器或注册个账号,其中包括澳大利亚、中东和台湾等许多服务商的隧道服务器。当然也有其他像HE.NET一样的普通隧道,如果谁能注册上十来个隧道,然后写个路由表,你就成IPv6的神了……- –