chaifeng.com Report : Visit Site


  • Server:Apache/2.4.34 (Ubunt...

    The main IP address: 172.104.106.184,Your server -,- ISP:-  TLD:com CountryCode:-

    The description :about me 三分热度://柴锋 凡事总有个三分热度 不用禁用 iptables 来解决 ufw 和 docker 的安全问题 08. august 2018 · write a comment · categories: 技术文章 太长不想读 请直接看 解决 ufw 和 docker 的问题 。 问题 ufw 是 ubuntu 上很流行的一个 iptables 前端,可以非常方便的管理防火墙...

    This report updates in 16-Aug-2018

Created Date:2002-06-14
Changed Date:2018-03-16

Technical data of the chaifeng.com


Geo IP provides you such as latitude, longitude and ISP (Internet Service Provider) etc. informations. Our GeoIP service found where is host chaifeng.com. Currently, hosted in - and its service provider is - .

Latitude: 0
Longitude: 0
Country: - (-)
City: -
Region: -
ISP: -

HTTP Header Analysis


HTTP Header information is a part of HTTP protocol that a user's browser sends to called Apache/2.4.34 (Ubuntu) containing the details of what the browser wants and will accept back from the web server.

Content-Length:41936
Upgrade:h2
Content-Encoding:gzip
Accept-Ranges:bytes
Strict-Transport-Security:max-age=63072000; includeSubdomains; preload
Vary:Accept-Encoding,Cookie
Keep-Alive:timeout=5, max=100
Server:Apache/2.4.34 (Ubuntu)
Last-Modified:Thu, 16 Aug 2018 00:01:24 GMT
Connection:Upgrade, Keep-Alive
Cache-Control:max-age=3, must-revalidate
Date:Thu, 16 Aug 2018 13:40:06 GMT
Content-Type:text/html; charset=UTF-8

DNS

soa:ns-cloud-b1.googledomains.com. cloud-dns-hostmaster.google.com. 125 21600 3600 259200 300
ns:ns-cloud-b1.googledomains.com.
ns-cloud-b2.googledomains.com.
ns-cloud-b3.googledomains.com.
ns-cloud-b4.googledomains.com.
ipv4:IP:172.104.106.184
ASN:63949
OWNER:LINODE-AP Linode, LLC, US
Country:US
ipv6:2400:8902::f03c:91ff:fe70:a64b//63949//LINODE-AP Linode, LLC, US//US
txt:"v=spf1 include:_spf.google.com ~all"
mx:MX preference = 10, mail exchanger = aspmx.l.google.com.
MX preference = 20, mail exchanger = alt1.aspmx.l.google.com.
MX preference = 20, mail exchanger = alt2.aspmx.l.google.com.
MX preference = 30, mail exchanger = aspmx2.googlemail.com.
MX preference = 30, mail exchanger = aspmx3.googlemail.com.
MX preference = 30, mail exchanger = aspmx4.googlemail.com.
MX preference = 30, mail exchanger = aspmx5.googlemail.com.

HtmlToText

about me 三分热度://柴锋 凡事总有个三分热度 不用禁用 iptables 来解决 ufw 和 docker 的安全问题 08. august 2018 · write a comment · categories: 技术文章 太长不想读 请直接看 解决 ufw 和 docker 的问题 。 问题 ufw 是 ubuntu 上很流行的一个 iptables 前端,可以非常方便的管理防火墙的规则。但是当安装了 docker,ufw 无法管理 docker 发布出来的端口了。 具体现象是: 在一个对外提供服务的服务器上启用了 ufw,并且默认阻止所有未被允许的传入连接。 运行了一个 docker 容器,并且使用 -p 选项来把该容器的某个端口发布到服务器的所有 ip 地址上。比如: docker run -d --name httpd -p 0.0.0.0:8080:80 httpd:alpine 将会运行一个 httpd 服务,并且将容器的 80 端口发布到服务器的 8080 端口上。 ufw 将不会阻止所有对 8080 端口访问的请求,用命令 ufw deny 8080 也无法阻止外部访问这个端口。 这个问题其实挺严重的,这意味着本来只是为了在内部提供服务的一个端口被暴露在公共网络上。 在网络上搜索 “ufw docker” 可以发现很多的讨论: https://github.com/moby/moby/issues/4737 https://forums.docker.com/t/running-multiple-docker-containers-with-ufw-and-iptables-false/8953 https://www.techrepublic.com/article/how-to-fix-the-docker-and-ufw-security-flaw/ https://blog.viktorpetersson.com/2014/11/03/the-dangers-of-ufw-docker.html https://askubuntu.com/questions/652556/uncomplicated-firewall-ufw-is-not-blocking-anything-when-using-docker https://chjdev.com/2016/06/08/docker-ufw/ https://askubuntu.com/questions/652556/uncomplicated-firewall-ufw-is-not-blocking-anything-when-using-docker https://my.oschina.net/abcfy2/blog/539485 https://www.v2ex.com/amp/t/466666 https://blog.36web.rocks/2016/07/08/docker-behind-ufw.html … 基本上可以找到的解决办法就是首先禁用 docker 的 iptables 功能,但这也意味着放弃了 docker 的网络管理功能,很典型的现象就是容器将无法访问外部网络。在有的文章中也提到了可以在 ufw 的配置文件中手工添加一条规则,比如 -a postrouting ! -o docker0 -s 172.17.0.0/16 -j masquerade 。但这也只是允许了 172.17.0.0/16 这个网络。如果有了新增的网络,我们也必须手工再为新增的网络添加这样类似的 iptables 规则。 期望的目标 目前网络上的解决方案都非常类似,而且也不优雅,我希望一个新的解决方案可以: 不要禁用 docker 的 iptables,像往常一样由 docker 来管理自己的网络。这样有任何新增的 docker 网络时都无需手工维护 iptables 规则,也避免了在 docker 中禁用 iptables 之后可能带来的副作用。 公共网络不可以访问 docker 发布出来的端口,即使是使用类似 -p 0.0.0.0:8080:80 的选项把端口发布在所有的 ip 地址上。容器之间、内部网络之间都可以正常互相访问,只有公共网络不可以访问。 虽然可以让 docker 把容器的某一个端口映射到服务器的私有 ip 地址上,这样公共网络上将不会访问到这个端口。但是这个服务器可能有多个私有 ip 地址,这些私有 ip 地址可能也会发生变化。 可以很方便的允许公共网络直接访问某个容器的端口,而无需额外的软件和配置。就像是用 ufw allow 8080 这样允许外部访问 8080 端口,然后用 ufw delete allow 8080 就不再允许外部访问。 如何做? 撤销原先的修改 如果已经按照目前网络上搜索到解决方案修改过了,请先修改回来,包括: 启用 docker 的 iptables 功能,删除所有类似 --iptables=false 的修改,包括 /etc/docker/daemon.json 配置文件。 ufw 的默认 forward 规则改回默认的 drop ,而非 accept 。 删除 ufw 配置文件 /etc/ufw/after.rules 中与 docker 网络相关的规则。 如果修改了 docker 相关的配置文件,重启 docker。稍后还要修改 ufw 的配置,可以一并重启。 解决 ufw 和 docker 的问题 目前新的解决方案只需要修改一个 ufw 配置文件即可,docker 的所有配置和选项都保持默认。 修改 ufw 的配置文件 /etc/ufw/after.rules ,在最后添加上如下规则: # begin ufw and docker *filter :ufw-user-forward - [0:0] :docker-user - [0:0] -a docker-user -j return -s 10.0.0.0/8 -a docker-user -j return -s 172.16.0.0/12 -a docker-user -j return -s 192.168.0.0/16 -a docker-user -j ufw-user-forward -a docker-user -j drop -p tcp -m tcp --tcp-flags fin,syn,rst,ack syn -d 192.168.0.0/16 -a docker-user -j drop -p tcp -m tcp --tcp-flags fin,syn,rst,ack syn -d 10.0.0.0/8 -a docker-user -j drop -p tcp -m tcp --tcp-flags fin,syn,rst,ack syn -d 172.16.0.0/12 -a docker-user -j drop -p udp -m udp --dport 0:32767 -d 192.168.0.0/16 -a docker-user -j drop -p udp -m udp --dport 0:32767 -d 10.0.0.0/8 -a docker-user -j drop -p udp -m udp --dport 0:32767 -d 172.16.0.0/12 -a docker-user -j return commit # end ufw and docker 然后重启 ufw, sudo systemctl restart ufw 。现在外部就已经无法访问 docker 发布出来的任何端口了,但是容器内部以及私有网络地址上可以正常互相访问,而且容器也可以正常访问外部的网络。 可能由于某些未知原因,重启 ufw 之后规则也无法生效,请重启服务器。 如果希望允许外部网络访问 docker 容器提供的服务,比如有一个容器的服务端口是 80 。那就可以用以下命令来允许外部网络访问这个服务: ufw route allow proto tcp from any to any port 80 这个命令会允许外部网络访问所有用 docker 发布出来的并且内部服务端口为 80 的所有服务。 请注意,这个端口 80 是容器的端口,而非使用 -p 0.0.0.0:8080:80 选项发布在服务器上的 8080 端口。 如果有多个容器的服务端口为 80,但只希望外部网络访问某个特定的容器。比如该容器的私有地址为 172.17.0.2 ,就用类似下面的命令: ufw route allow proto tcp from any to 172.17.0.2 port 80 如果一个容器的服务是 udp 协议,假如是 dns 服务,可以用下面的命令来允许外部网络访问所有发布出来的 dns 服务: ufw route allow proto udp from any to any port 53 同样的,如果只针对一个特定的容器,比如 ip 地址为 172.17.0.2: ufw route allow proto udp from any to 172.17.0.2 port 53 解释 在新增的这段规则中,下面这段规则是为了让私有网络地址可以互相访问。通常情况下,私有网络是比公共网络更信任的。 -a docker-user -j return -s 10.0.0.0/8 -a docker-user -j return -s 172.16.0.0/12 -a docker-user -j return -s 192.168.0.0/16 下面的规则是为了可以用 ufw 来管理外部网络是否允许访问 docker 容器提供的服务,这样我们就可以在一个地方来管理防火墙的规则了。 -a docker-user -j ufw-user-forward 下面的规则阻止了所有外部网络发起的连接请求,但是允许内部网络访问外部网络。对于 tcp 协议,是阻止了从外部网络主动建立 tcp 连接。对于 udp,是阻止了所有小余端口 32767 的访问。为什么是这个端口的?由于 udp 协议是无状态的,无法像 tcp 那样阻止发起建立连接请求的握手信号。在 gnu/linux 上查看文件 /proc/sys/net/ipv4/ip_local_port_range 可以看到发出 tcp/udp 数据后,本地源端口的范围,默认为 32768 60999 。当从一个运行的容器对外访问一个 udp 协议的服务时,本地端口将会从这个端口范围里面随机选择一个,服务器将会把数据返回到这个随机端口上。所以,我们可以假定所有容器内部的 udp 协议的监听端口都小余 32768,不允许外部网络主动连接小余 32768 的 udp 端口。 -a docker-user -j drop -p tcp -m tcp --tcp-flags fin,syn,rst,ack syn -d 192.168.0.0/16 -a docker-user -j drop -p tcp -m tcp --tcp-flags fin,syn,rst,ack syn -d 10.0.0.0/8 -a docker-user -j drop -p tcp -m tcp --tcp-flags fin,syn,rst,ack syn -d 172.16.0.0/12 -a docker-user -j drop -p udp -m udp --dport 0:32767 -d 192.168.0.0/16 -a docker-user -j drop -p udp -m udp --dport 0:32767 -d 10.0.0.0/8 -a docker-user -j drop -p udp -m udp --dport 0:32767 -d 172.16.0.0/12 -a docker-user -j return 一个典型的 shell 脚本的详细讲解和重构 22. july 2018 · write a comment · categories: 技术文章 一个典型的 shell 脚本的详细讲解和重构 上周无意中看到了一个 shell 脚本,是一个很典型的开发工程师思维的脚本。我将会先分步讲解一下这个看上去很简单的脚本,随后再看如何重构。 脚本的完整代码如下: package="\"$1\"" line=$(java -version 2>&1 | grep $package | grep -iv openjdk | wc -l) #echo $line if [[ $line =~ 0 ]]; then echo '{ "found": false , "not_found": true }' else echo '{ "found": true , "not_found": false }' fi tl;dr 警告:如果太长不想看,就翻到最后看重构结果。 脚本的详细讲解 这段脚本的需求就是判断是否已经安装了特定版本的 oracle jdk。在调用的时候会传入 java 的版本号码,比如: 1.8.0_161 ,这就是 $1 的值。 首先定义了 package 这个变量,为什么在把 $1 赋值给 package 的时候要转义双引号呢?是因为 java -version 这个命令输出的时候,版本号码是有双引号的。所以定义这个 package 的作用是要精准匹配 java 的版本。 # oracle jdk chaifeng@local ~ $ java -version java version "1.8.0_161" java(tm) se runtime environment (build 1.8.0_161-b12) java hotspot(tm) 64-bit server vm (build 25.161-b12, mixed mode) # openjdk chaifeng@local ~ $ java -version openjdk version "1.8.0_144" openjdk runtime environment (zulu 8.23.0.3-macosx) (build 1.8.0_144-b01) openjdk 64-bit server vm (zulu 8.23.0.3-macosx) (build 25.144-b01, mixed mode) 然后就开始执行判断,并把结果赋值给变量 line 。这行脚本看上去做了很多的事情,我们来拆开看一下。 java -version 用来输出版本号,但是输出到了标准错误上。而默认情况下,标准错误是无法通过管道传递给下一个命令的。所以需要 2>&1 来把标准错误的内容重定向到标准输出,这样才可以把 java 的版本号码传递给 grep 命令,否则 grep 是无论如何都无法获取到 java -version 的输出的。 第一个 grep 命令用来过滤 java -version 输出中包含版本号的所有行,并且这个版本号是用双引号包含起来的。正常情况下将会得到 java -version 命令输出的第一行。 然后再把结果传递给 grep -iv openjdk 命令。 grep 的 -i 选项是匹配时忽略大小写。 -v 选项是排除,也就是反向匹配,将会输出不匹配的所有行。如果系统中正在使用的是 openjdk,前一个 grep 命令只是判断是否是指定版本的 jdk,包括 oracle jdk 和 openjdk。这个 grep 命令将排除 openjdk 的输出,所以如果当前系统中使用的是 openjdk,这个命令执行之后可能会得到空的结果。 最后再用 wc -l 命令来得到结果的行数。如果是特定版本的 oracle jdk,那结果就是一行。如果不是特定版本的 oracle jdk,或者是 openjdk,就会输出空的结果,所以行数将会是 0 。 line 这个变量就会保存最后结果的行数,如果是 0 行显然就是系统中没有使用特定版本的 oracle jdk。所以这里用了 [[ $line =~ 0 ]] 来判断变量 line 是否为 0 。 为什么最后会根据 line 是否为 0 来输出一个 json 的字符串呢?是因为这个脚本将在 ansible playbook 中调用。相关的 ansible 代码如下: - name: copy scripts to server copy: src="../files/check-java-version.sh" dest="{{ java_download_path }}/" mode="a+x" - name: check if specific version of oracle jdk is installed? shell: lc_all="en_us.utf-8" {{ java_download_path }}/check-java-version.sh "{{ jdk_version }}" register: jdk_info changed_when: false failed_when: jdk_info.rc > 0 #- debug: var=jdk_info - include: install.yml when: (jdk_info.stdout|from_json).not_found 这里有3个 task。第一个 task 是把脚本复制到服务器上,并设置了执行权限。第二个 task 是执行这个脚本,并且传入了 java 的版本,最后把 task 的执行结果保存到 ansible 变量 jdk_info 中。 jdk_info 的 stdout 就将是 shell 脚本最后输出的那个 json 字符串,比如: { "found": false , "not_found": true } 。第三个 task 是把第二个 task 的执行结果转换为 json 对象,并判断这个对象中的 not_found 的值是否为 true 来决定是否加载 install.yml 这个文件。 开始重构 所有相关的代码都分析完了,我们来看看如何重构,以及里面有哪些需要注意的问题。 之前也给几位朋友看过这个脚本,大部分人觉得问题主要在最后的 if 那里,尤其是输出 json 字符串的时候有互为相反的 found 和 not_found 两个值。 先说典型问题,首先就是在 bash 脚本中,如果不是特别需要,所有的变量一定要加上双引号!有没有双引号在 bash 中是不一样的,不仅仅是双引号里面变量会被替换,而单引号不替换这个区别。 其次 if 的条件判断用了 =~ 这个操作符,这是 bash 中的正则匹配的判断。判断语句 [[ $line =~ 0 ]] 的含义是判断变量 line 这个字符串里面是否包含字符 0 。所以当 line 的值为 10 , 201 都

URL analysis for chaifeng.com


https://chaifeng.com/2014%e5%b9%b43%e6%9c%889%e6%97%a5-qclub-%e5%a4%aa%e5%8e%9f%e7%ab%99%e6%b4%bb%e5%8a%a8%e5%9b%9e%e9%a1%be/qq%e5%9b%be%e7%89%8720140312123641/
https://chaifeng.com/2013/03/
https://chaifeng.com/china-hotel-network/#comment-147929
https://chaifeng.com/2011/06/
https://chaifeng.com/2009/02/
https://chaifeng.com/2008/08/
https://chaifeng.com/2006/05/
https://chaifeng.com/wp-content/uploads/2013/04/20130430201827.png
https://chaifeng.com/about/
https://chaifeng.com/2017/05/
https://chaifeng.com/2006/11/
https://chaifeng.com/2014%e5%b9%b43%e6%9c%889%e6%97%a5-qclub-%e5%a4%aa%e5%8e%9f%e7%ab%99%e6%b4%bb%e5%8a%a8%e5%9b%9e%e9%a1%be/qq%e5%9b%be%e7%89%8720140312123457/
https://chaifeng.com/2014%e5%b9%b43%e6%9c%889%e6%97%a5-qclub-%e5%a4%aa%e5%8e%9f%e7%ab%99%e6%b4%bb%e5%8a%a8%e5%9b%9e%e9%a1%be/2014-03-09-15-07-11/
https://chaifeng.com/wp-content/uploads/2013/04/20130430204216.png
https://chaifeng.com/category/uncategorized/

Whois Information


Whois is a protocol that is access to registering information. You can reach when the website was registered, when it will be expire, what is contact details of the site with the following informations. In a nutshell, it includes these informations;

Domain Name: CHAIFENG.COM
Registry Domain ID: 87536246_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.google.com
Registrar URL: http://domains.google.com
Updated Date: 2018-03-16T02:33:12Z
Creation Date: 2002-06-14T11:03:03Z
Registry Expiry Date: 2026-06-14T11:03:03Z
Registrar: Google Inc.
Registrar IANA ID: 895
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: +1.8772376466
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Name Server: NS-CLOUD-B1.GOOGLEDOMAINS.COM
Name Server: NS-CLOUD-B2.GOOGLEDOMAINS.COM
Name Server: NS-CLOUD-B3.GOOGLEDOMAINS.COM
Name Server: NS-CLOUD-B4.GOOGLEDOMAINS.COM
DNSSEC: signedDelegation
DNSSEC DS Data: 10805 8 2 9F0F57E1ED9CD146E3E719DDF634BFA359D06C472C47CB03909939BB63749520
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database: 2018-08-16T13:39:51Z <<<

For more information on Whois status codes, please visit https://icann.org/epp

NOTICE: The expiration date displayed in this record is the date the
registrar's sponsorship of the domain name registration in the registry is
currently set to expire. This date does not necessarily reflect the expiration
date of the domain name registrant's agreement with the sponsoring
registrar. Users may consult the sponsoring registrar's Whois database to
view the registrar's reported date of expiration for this registration.

TERMS OF USE: You are not authorized to access or query our Whois
database through the use of electronic processes that are high-volume and
automated except as reasonably necessary to register domain names or
modify existing registrations; the Data in VeriSign Global Registry
Services' ("VeriSign") Whois database is provided by VeriSign for
information purposes only, and to assist persons in obtaining information
about or related to a domain name registration record. VeriSign does not
guarantee its accuracy. By submitting a Whois query, you agree to abide
by the following terms of use: You agree that you may use this Data only
for lawful purposes and that under no circumstances will you use this Data
to: (1) allow, enable, or otherwise support the transmission of mass
unsolicited, commercial advertising or solicitations via e-mail, telephone,
or facsimile; or (2) enable high volume, automated, electronic processes
that apply to VeriSign (or its computer systems). The compilation,
repackaging, dissemination or other use of this Data is expressly
prohibited without the prior written consent of VeriSign. You agree not to
use electronic processes that are automated and high-volume to access or
query the Whois database except as reasonably necessary to register
domain names or modify existing registrations. VeriSign reserves the right
to restrict your access to the Whois database in its sole discretion to ensure
operational stability. VeriSign may restrict or terminate your access to the
Whois database for failure to abide by these terms of use. VeriSign
reserves the right to modify these terms at any time.

The Registry database contains ONLY .COM, .NET, .EDU domains and
Registrars.

  REGISTRAR Google Inc.

SERVERS

  SERVER com.whois-servers.net

  ARGS domain =chaifeng.com

  PORT 43

  TYPE domain

DOMAIN

  NAME chaifeng.com

  CHANGED 2018-03-16

  CREATED 2002-06-14

STATUS
clientTransferProhibited https://icann.org/epp#clientTransferProhibited

NSERVER

  NS-CLOUD-B1.GOOGLEDOMAINS.COM 216.239.32.107

  NS-CLOUD-B2.GOOGLEDOMAINS.COM 216.239.34.107

  NS-CLOUD-B3.GOOGLEDOMAINS.COM 216.239.36.107

  NS-CLOUD-B4.GOOGLEDOMAINS.COM 216.239.38.107

  REGISTERED yes

Go to top

Mistakes


The following list shows you to spelling mistakes possible of the internet users for the website searched .

  • www.uchaifeng.com
  • www.7chaifeng.com
  • www.hchaifeng.com
  • www.kchaifeng.com
  • www.jchaifeng.com
  • www.ichaifeng.com
  • www.8chaifeng.com
  • www.ychaifeng.com
  • www.chaifengebc.com
  • www.chaifengebc.com
  • www.chaifeng3bc.com
  • www.chaifengwbc.com
  • www.chaifengsbc.com
  • www.chaifeng#bc.com
  • www.chaifengdbc.com
  • www.chaifengfbc.com
  • www.chaifeng&bc.com
  • www.chaifengrbc.com
  • www.urlw4ebc.com
  • www.chaifeng4bc.com
  • www.chaifengc.com
  • www.chaifengbc.com
  • www.chaifengvc.com
  • www.chaifengvbc.com
  • www.chaifengvc.com
  • www.chaifeng c.com
  • www.chaifeng bc.com
  • www.chaifeng c.com
  • www.chaifenggc.com
  • www.chaifenggbc.com
  • www.chaifenggc.com
  • www.chaifengjc.com
  • www.chaifengjbc.com
  • www.chaifengjc.com
  • www.chaifengnc.com
  • www.chaifengnbc.com
  • www.chaifengnc.com
  • www.chaifenghc.com
  • www.chaifenghbc.com
  • www.chaifenghc.com
  • www.chaifeng.com
  • www.chaifengc.com
  • www.chaifengx.com
  • www.chaifengxc.com
  • www.chaifengx.com
  • www.chaifengf.com
  • www.chaifengfc.com
  • www.chaifengf.com
  • www.chaifengv.com
  • www.chaifengvc.com
  • www.chaifengv.com
  • www.chaifengd.com
  • www.chaifengdc.com
  • www.chaifengd.com
  • www.chaifengcb.com
  • www.chaifengcom
  • www.chaifeng..com
  • www.chaifeng/com
  • www.chaifeng/.com
  • www.chaifeng./com
  • www.chaifengncom
  • www.chaifengn.com
  • www.chaifeng.ncom
  • www.chaifeng;com
  • www.chaifeng;.com
  • www.chaifeng.;com
  • www.chaifenglcom
  • www.chaifengl.com
  • www.chaifeng.lcom
  • www.chaifeng com
  • www.chaifeng .com
  • www.chaifeng. com
  • www.chaifeng,com
  • www.chaifeng,.com
  • www.chaifeng.,com
  • www.chaifengmcom
  • www.chaifengm.com
  • www.chaifeng.mcom
  • www.chaifeng.ccom
  • www.chaifeng.om
  • www.chaifeng.ccom
  • www.chaifeng.xom
  • www.chaifeng.xcom
  • www.chaifeng.cxom
  • www.chaifeng.fom
  • www.chaifeng.fcom
  • www.chaifeng.cfom
  • www.chaifeng.vom
  • www.chaifeng.vcom
  • www.chaifeng.cvom
  • www.chaifeng.dom
  • www.chaifeng.dcom
  • www.chaifeng.cdom
  • www.chaifengc.om
  • www.chaifeng.cm
  • www.chaifeng.coom
  • www.chaifeng.cpm
  • www.chaifeng.cpom
  • www.chaifeng.copm
  • www.chaifeng.cim
  • www.chaifeng.ciom
  • www.chaifeng.coim
  • www.chaifeng.ckm
  • www.chaifeng.ckom
  • www.chaifeng.cokm
  • www.chaifeng.clm
  • www.chaifeng.clom
  • www.chaifeng.colm
  • www.chaifeng.c0m
  • www.chaifeng.c0om
  • www.chaifeng.co0m
  • www.chaifeng.c:m
  • www.chaifeng.c:om
  • www.chaifeng.co:m
  • www.chaifeng.c9m
  • www.chaifeng.c9om
  • www.chaifeng.co9m
  • www.chaifeng.ocm
  • www.chaifeng.co
  • chaifeng.comm
  • www.chaifeng.con
  • www.chaifeng.conm
  • chaifeng.comn
  • www.chaifeng.col
  • www.chaifeng.colm
  • chaifeng.coml
  • www.chaifeng.co
  • www.chaifeng.co m
  • chaifeng.com
  • www.chaifeng.cok
  • www.chaifeng.cokm
  • chaifeng.comk
  • www.chaifeng.co,
  • www.chaifeng.co,m
  • chaifeng.com,
  • www.chaifeng.coj
  • www.chaifeng.cojm
  • chaifeng.comj
  • www.chaifeng.cmo
Show All Mistakes Hide All Mistakes