最近在家里上网突然发现Apple Store不能更新了。重启路由器发现最开始一会是能下载更新的,但是过了一会就完全不能下载更新了。很是奇怪,今天特意分析了一下这个问题。

  首先,抓包确定Apple Store的下载域名为:iosapps.itunes.apple.com;

  第二步,ping一下下载域名看是否能够ping通,发现连域名都不能解析,确定应该是DNS的问题;

  root@Hiwifi:~# ping -c 5 iosapps.itunes.apple.com
  ping: bad address 'iosapps.itunes.apple.com'

  

  最后,修复DNS的问题,因为已经安装了Shadowsocks加速功能所以直接在ss加速中的高级设置中将下载域名设置上去,再次ping下载域名已经能ping通了:

root@Hiwifi:~# ping -c 5 iosapps.itunes.apple.com
PING iosapps.itunes.apple.com (17.253.83.206): 56 data bytes
64 bytes from 17.253.83.206: seq=0 ttl=48 time=283.340 ms
64 bytes from 17.253.83.206: seq=1 ttl=48 time=281.420 ms
64 bytes from 17.253.83.206: seq=2 ttl=48 time=282.820 ms
64 bytes from 17.253.83.206: seq=3 ttl=48 time=278.840 ms
64 bytes from 17.253.83.206: seq=4 ttl=48 time=282.360 ms

  

  再次尝试下载更新,Done!

  PS:默认是自动获取的DNS,211.148.192.141

 
后续确认使用SS(Shadowsocks)插件的DNS加速是走的SS的流量,虽然问题解决了但是这个方法不通用,而且流量是走的SS的,对于SS速度慢或者SS流量收费的用户成本很高。
 
 观察发现在每次极路由重启后的几分钟内是能正常ping通下载域名的,而且通过ps|grep dns命令看到只有两个dnsmasq的进程,如下:
root@Hiwifi:/tmp/dnsmasq.d# ps | grep dns
 5275 root      1636 S    /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf -u root
 5277 root      1632 S    /usr/sbin/dnsmasq -C /var/etc/dnsmasq.conf -u root
 5364 root      5116 S    /usr/sbin/dns2socks 127.0.0.1 61080 8.8.4.4 127.0.0.1 53535 -d -q
 5871 root      1672 S    grep dns
 
过了几分钟后再查看进程发现多了一个pdnsd的进程,如下,这个进程启动后再ping下载域名就失败了:
20886 root      7320 S    /usr/sbin/pdnsd -c /etc/app_conf/ccapp/conf/pdnsd_ccapp.conf --daemon
 
观察pdnsd服务启动前后的变化发现/tmp/dnsmasq.d文件夹多了一个“ccapp_dnsmasq.conf  ”的文件
root@Hiwifi:/tmp/dnsmasq.d# ls
ccapp_dnsmasq.conf          gw-shadowsocks.dnslist
ccapp_domain_speedup.conf   gw-shadowsocks.usr.dnslist
 
vi查看之,里面确实有一项是下载域名:
server=/iosapps.itunes.apple.com/127.0.0.1#1055
 
确认问题应该是出在这里,应该是这里把解析下载域名的DNS指向了一个特定的DNS,正好那个DNS又不能解析了。确认后通过修改这个文件,删掉下载域名这一行,重启之。
但是重启后发现这个文件又更新了,恢复原样了!因此应该是其他地方还存在该文件的副本,要修改这个真正的副本才能修复这个问题。通过find / -name ccapp命令找到相关的文件:
root@Hiwifi:/tmp/dnsmasq.d# find / -name ccapp
/etc/app_conf/ccapp
/overlay/etc/app_conf/ccapp
/tmp/ccapp
/var/log/ccapp
 
发现有好几个文件夹,应该是其中一个,且一般是带conf字样的,所以切换到“/etc/app_conf/ccapp”目录,发现有个conf文件夹,进去查看,有一个“pdnsd_ccapp.conf”文件,vi查看之,发现和上面的“ccapp_dnsmasq.conf”文件格式并不一样,但是也是一行一行配置的,并且可以看到下载域名存在于这个文件中的一行,先试着备份该文件并删除下载域名对应的行。重启等待pdnsd进程自动启动后再次尝试着ping下载域名,就发现能Ping通了,就此大功告成!
 
PS:可以通过crontab -e查看定时任务,发现每隔一段时间15分钟会去检查一下ccapp的状态,查看对应的sh命令,确实是在这个时候启动的pdnsd进程的!
 
最后更新时间:2016-05-19
  使用如上修改后可以暂时解决问题,但是隔两天后却又开始出现异常,最后从极路由的插件开始排查,发现是“汛网12306加速”这个插件在作祟,卸载后就恢复正常了。这个插件说是只对12306加速,其实加速的域名不止12306这一个,还包括苹果的大部分域名和一些其他的域名,就是这个插件对这些域名使用了不同的DNS导致不能下载的问题!总之,大家请谨慎安装此插件吧!

极路由访问Apple Store可以浏览但是不能下载的解决方案的更多相关文章

  1. 教你如何在Drcom下使用路由器上校园网(以广东工业大学、极路由1S HC5661A为例)

    免责声明: 在根据本教程进行实际操作时,如因您操作失误导致出现的一切意外,包括但不限于路由器变砖.故障.数据丢失等情况,概不负责: 该技术仅供学习交流,请勿将此技术应用于任何商业行为,所产生的法律责任 ...

  2. OpenWrt-19.07.2 For HC5861(极路由3) /HiWiFi/Gee最新固件,极路由3刷openwrt

    OpenWrt For HiWiFi(HC5861) 自编译精减固件,极路由3自用固件 HC5861-uboot.bin v19.07.2 下载 支持 NTFS 读写 支持 Wi-Fi 5G 驱动 默 ...

  3. 极路由设置共享磁盘密码、跨网访问samba服务

    极路由插上移动硬盘后会自动建立samba服务器,但我们没法去配置哪些盘符需要密码,这样只要在同一个wifi下的电脑都能去访问这些东西了,比较弱智.另外我还想再公司中去读写这个移动硬盘. 设置密码 首先 ...

  4. 极路由2(极贰)ROOT并刷了OpenWrt

    绕过官方的ROOT 查了一下root教程, 如果还需要保留保修, 则需要自己想办法回退版本, 下载搜狐插件到sd卡, 找个linux系统修改sd卡上程序的执行权限, 然后才能开启ssh, 具体的方法可 ...

  5. OpenWrt防火墙配置(极路由)

    说明: 1.极路由使用的是OpenWrt做为操作系统,本身就是一个Linux,包管理使用opkg,只是改了一个界面而已. 2.Linux下的防火墙最终都会归iptables进行管理,OpenWrt的防 ...

  6. 极路由U-boot解锁刷root固件教程,root后可刷华硕、如意云等多种固件,附赠全套刷软

    9008正式版固件将会封堵此漏洞,想root的同学尽快了.安装新工具箱里的root保留,可升级官方最新固件并保留root. 此方法并非本人原创,只是将root的过程和经验做个总结,比较适合菜鸟做参考, ...

  7. 使用极路由进行外网映射,本地电脑做服务器,运行javaWeb项目

    最近在学习javaWeb,一个项目需要android访问服务器,于是使用自己的笔记本电脑作为服务器,需要进行端口映射.使得外网可以访问自己的javaWeb项目或者网站之类的.普通路由请看:http:/ ...

  8. 如何用极路由+OpenWrt+SDR电视棒搭建SDR服务器

    0×00 前言 近期因为有个从异地捕获无线信号的需求,便尝试着用OpenWrt+公网IP搭建了一台SDR服务器.如果有小伙伴嫌SDR硬件天线看起来太乱.或者电脑没有足够的USB接口也可在局域网搭建SD ...

  9. 如何用极路由+OpenWrt+RTL电视棒搭建一台SDR服务器,并隐秘地捕获和传输数据

    0×00 前言 近期因为有个从异地捕获无线信号的需求,便尝试着用OpenWrt+公网IP搭建了一台SDR服务器.如果有小伙伴嫌SDR硬件天线看起来太乱.或者电脑没有足够的USB接口也可在局域网搭建SD ...

随机推荐

  1. jq load()方法用法

    //鼠标划上去默认样式添加 listNow = getUrlParam("page"); $(".header").load("../file/hea ...

  2. C++ map的遍历

    一般使用迭代器遍历比较方便. map<string,int> m; map<string,int>::iterator it; it = m.begin(); while(it ...

  3. Asp.net MVC3表格共用分页功能

    在建立的mvc3项目中,在Razor(CSHTML)视图引擎下,数据会在表格中自动的生成,但分页没有好的控件实现,这里我们开发了设计了一个分页的模板,适合于没有数据提交和有数据提交的分页的分页. 第一 ...

  4. Android在代码中使用布局文件中的一个组件

    使用前必须要把组件与其父组件的关系断开,比如有一个组件的名称为scrollChildLayout,则可以使用下面的代码进行分离 ((ViewGroup)scrollChildLayout.getPar ...

  5. 通过JS检测360浏览器

    如何通过JS检测360浏览器? 尝试了一大堆方法,网上大多数办法都是通过navigator.userAgent来判断,这可能在几年前是行得通的,现在360userAgent输出来跟谷歌除了版本号其余一 ...

  6. networkcomms 相关文章(转载)

    介绍开源的.net通信框架NetworkComms框架之一 首字节验证 介绍开源的.net通信框架NetworkComms框架之二 传递类 介绍开源的.net通信框架NetworkComms框架之三 ...

  7. what is blade and soul Soul Shields

    Soul Shields are sets of 8 fragments which serve as the main source of attributes to a character. Ad ...

  8. Mongodb创建数据库

    基本语法 MongoDB 创建数据库的语法格式如下: use DATABASE_NAME 如果数据库不存在,则创建数据库,否则切换到指定数据库. 实例 以下实例我们创建了数据库 coderschool ...

  9. 关于XE10下Indy发送字符串编码的问题

    在与硬件对接的过程中,之前用D7环境下的UDPServer.Post发送的指令,硬件可正常识别并正常显示, 后来使用到XE10,重新编译之前的源码,发现所有汉字乱码显示了: 后通过对接收数据发现,实际 ...

  10. js2

    1.JS的三种输出方式: alert("");console.log("");document.write(""); 2.流程控制语句: a ...