使用COW让浏览器正确上网

概述

防火长城(英文名称Great Firewall of China,简写为Great Firewall,缩写GFW),也称中国防火墙或中国国家防火墙,指中华人民共和国政府在其管辖因特网内部建立的多套网络审查系统的总称,包括相关行政审查系统。
当使用浏览器访问google、facebook、youtube这些网站时都被GFW拦于门外,但是有些站点又是可以访问的,比如github.com;这就造成一个问题,我怎么知道那些网站是可以访问,哪些不能访问的站点又该怎么办呢?

COW 介绍

COW 是一个简化穿墙的 HTTP 代理服务器。COW 的设计目标是自动化,理想情况下用户无需关心哪些网站无法访问,可直连网站也不会因为使用二级代理而降低访问速度。
简单来说就是国内能访问的就直接访问,不能访问的就走代理访问。

COW优点

  • 自动检测网站是否被墙,仅对被墙网站使用二级代理
  • 自动生成包含直连网站的PAC文件,访问这些网站时可不使用COW

COW缺点

  • 仅支持浏览器使用

架构图

cow架构图

  • 客户端和一台内网服务器建立连接
  • 内网服务器和一台香港服务器建立连接
    当客户端访问国内网站时,就直接走内网服务器代理;当客户端访问国外网站时,就先走内网服务器,然后再通过内网服务器和香港服务器之间的SOCK链接访问。

服务部署步骤

香港服务器(6.6.6.6)

1、下载COW二进制文件

1
$ curl -L git.io/cow | bash

此时会在当前目录下生成一个 cow 二进制文件,和 .cow/ 目录。cow 为启动程序,.cow/ 里面是配置文件。

2、修改配置文件

1
2
3
$ vim .cow/rc
listen = cow://aes-128-cfb:xxx:5555
logFile = /var/log/cow.log

只需要有这两行配置就OK了。listen行的xxx是内网服务器和相关服务器通信的密码,aes-128-cfb是加密方式。详细的可以参考cow配置文件里面的中文解释。

3、启动

1
./cow &

此时会在该服务器上监听5555端口,等待内网服务器去连接。

内网服务器(192.168.1.11)

1、下载COW二进制文件

1
$ curl -L git.io/cow | bash

此时会在当前目录下生成一个 cow 二进制文件,和 .cow/ 目录。cow 为启动程序,.cow/ 里面是配置文件。

2、修改配置文件

1
2
3
4
$ vim .cow/rc
logFile = /var/log/cow.log
listen = http://0.0.0.0:7777
proxy = protocol://aes-128-cfb:xxx@server_ip:5555

这儿也只需要两行配置。xxx和香港的一样密码,server_ip为香港服务器IP,5555是香港COW监听的端口。
listen监听的7777端口是和客户端连接的。

3、启动

1
./cow &

此时会通过xxx密码和香港的5555端口连接,并监听本地的7777端口。

内网服务器和香港服务器的连接情况如下
cow通信

  • 6.6.6.6启动cow暴露自己的5555端口
  • 192.168.1.11启动cow去和6.6.6.6的5555端口建立连接并暴露自己的7777端口,等待客户端连接

客户端使用

cow_client

注意:这里的填的地址是 192.168.1.11:7777/pac
后面多了一个pac,直接访问这个地址会下载一个文件,浏览器就是根据文件里面的内容去选择你访问的网站是走国内访问还是走香港访问。
大功告成。

回顾一下操作步骤
1、6.6.6.6启动cow暴露自己5555端口
2、192.168.1.11启动cow和6.6.6.6的5555建立连接并暴露7777端口
3、客户端配置 internet连接

坚持原创技术分享,您的支持将鼓励我继续创作!