分类 Network 下的文章

北京联通宽带时不时出现苹果AppStore无法连接的解决方法

这个问题其实好多年了,一旦出现以后短时间以内就很难解决,除非断开家里 WiFi 改用 4G. 今天正好又出现了,借着 ROS 可以远程抓包的功能顺手调试了一下,发现这个问题原来是网宿弱智导致的。

AppStore 在启动和工作中会连接很多域名,其中下面这些(在 iOS 12 beta4 上测试,不保证其他版本)

client-api.itunes.apple.com
init-p01st.push.apple.com
play.itunes.apple.com
apps.mzstatic.com
api-edge.apps.apple.com
init.itunes.apple.com
bag.itunes.apple.com
search.itunes.apple.com

用国内的 DNS 解析会统一 CNAME 到 applewsashark.dtwscache.ourwebcdn.com

这个域名一看就是网宿的。如果去解析这个域名会发现,大多数时候只能解析出来一个 IP 。这个 IP 轮换的速度也挺快,可能几分钟就会换一个。然而出问题的时候解析到的 IP 经常都是不好使的,表现为 443 端口完全连不上,或者连上以后丢包非常严重,根本无法使用。奇怪的是,这些有问题的 IP,从其他地方访问有可能就是好用的,不知道是因为 anycast 到了不同的机器,还是网宿 peer 的带宽不足。

找到了症结就好办了,因为国内各大 DNS 解析出来都是同样的不好使的 IP ,于是直接从 8.8.8.8 解析了一个出来,在路由器上面把刚才一堆域名统统绑定到这个 IP,AppStore 秒开。

最后鄙视一下网宿,这问题这么多年了,居然一直都没有修好,跟大姨妈似的经常出现。

对 firewalld 终于失去信心了

各种坑,比如 iptables 命令执行一旦出错,后面的不会执行,如果内核少个模块,就会导致防火墙完全封死外面进不去的状态。在 openvz 主机上面简直是灾难。

从其他 fw 框架里面随便挑了一个 shorewall 把他替换掉,一下就清净了。

数据安全,从异地备份开始

话说我的 blog 也 down 了有数次了,每次 down 掉以后都好久起不来,其中很大程度上是 blog 的数据没有及时备份出来,用以前的备份开的话,中间的就都丢了,回头合并又是个麻烦事情。

最近有点时间,在北京机器上的 MySQL 配置了一下,让他作为从库从唐山机器的 MySQL 同步下来 blog 的数据,只要网络不是太烂,基本可以做到实时备份了。

当然,从公网上用 MySQL 复制存在各种风险,不过实际能做的事情不多,只能用 iptables 保护,只对同步机器开放 MySQL 端口;关闭除同步账户之外其他所有用户的网络访问权限;同时使用 MySQL 内建的 SSL 功能防止监听;最后复制用的账户要求 SSL 发行者校验,只相信北京机器发过来的 SSL 连接请求。

不过现在异地备份还是太近,不满足 1000km 的基本要求,无法抵抗华北平原地震,要不要再在美国买个便宜空间专门定期上载打包后 gpg 加密的备份数据呢?

郁闷,折腾了这么久,才发现居然是双工的问题

这个机器最早刚拿到机房的时候,发现不知道为啥,启动时候总是协商成 10M 半双工,但是交换机和网卡显然都是 100M 的,于是只好在 rc.local 里面加了一条 mii-tool -F 100baseTx-FD eth0 , 这么一直用了一年多也没有太大问题。后来因为一些原因,这个机器 down 了又有一年多,再起来以后就总觉得这个机器网络慢,在 shell 上面执行比较大输出的操作,都会一卡一卡的,一直没搞明白是为什么。这段时间为了解决访问 blog 慢的问题,对 web 进行了不少优化,gzip, expire 啥的都设了一遍,有一点提升,但是没有特别明显的效果。因为没有太多时间,所以就懒得管了。

今天稍微清闲了一点,就仔细研究了下这个问题,发现从同一内网用 ab 压 17K 的静态文件最好情况下只能到 40 个每秒左右,大文件则是只能到 1.8MB/s,这明显有问题。但是 ping 也看不到什么丢包。

习惯性的看 dmesg 的时候,发现网卡每次启动时候还是会协商成 10M 半双工,这就奇怪了,机器经过这两次倒腾,机箱换了,网卡也换了,网线也换了,交换机上网口也换了,为啥还是 10M 半双工,莫非这个交换机其实只能上半双工?于是 mii-tool 重新调整为 10M 半双工,马上 shell 就不卡了。

但是 10M 半双工虽然 shell 不卡,带宽实在比较不能够接受,于是尝试了一下 100M 半双工,貌似效果很好, HTTP 大文件同一内网能到 8MB/s, ab 那个 17K 的静态文件可以压到 400 个左右,这样看起来就还算凑合了,虽然总的来说不是很高,但对这个破机器,还是可以接受的结果。

最后的结果就是 rc.local 里面改了一行

mii-tool -F 100baseTx-HD eth0

至于为什么不能上百兆全双工,这问题也懒得研究了,先这样用着好了,我要求不高。

另,这机器以前的网卡是 3C905B(3c59x),后来用了几天 8139(8139too), 现在是 DFE-530TX(via_rhine),都不是什么特别好的网卡,不过都协商成 10M 半双工也真是够那个的了。。

在 Fedora 9 下面配置 ISATAP IPV6 tunnel

Fedora 9 终于换成了 2.6.25 kernel,2.6.25 支持 ISATAP 方式的 ipv6 tunnel 接入。于是把自己的机器简单配置了一下支持 IPV6

1: 保证 kernel 支持 ipv6
2: 编辑 /etc/sysconfig/network ,增加下面这行

IPV6_DEFAULTGW=your ipv6 gateway

3: 编辑 /etc/sysconfig/network-scripts/ifcfg-sit1, 内容如下

DEVICE=sit1
ONBOOT=yes
IPV6INIT=yes
IPV6TUNNELIPV4=your isatap tunnel IP
IPV6TUNNELIPV4LOCAL=your local ipv4 ip
IPV6ADDR=your ipv6 address

4: ifup sit1

UPDATE: 我还没有试验过这个在 F9 上重启是否有效,但在 centos 5.1 上面不好用,似乎 ifup-sit 不会创建对应的 sit1 设备,先得手动创建以后才有效。

最近评论

时光机

其他