docker、rocket等需要编译时需要下载的一些网址国内无法访问. 需要找翻墙方法,真心无聊…
猜测大概有这么几种封锁方式:
域名劫持:
原理: 截获到一个查询被封锁域名的IP地址的DNS报文, 构造一个虚假的DNS回应包, 阻止用户获得正确的IP地址。
破解: 在本地设置host,直接配置域名对应的IP地址,这样就不会产生dns报文。
效果: 因为墙会直接封锁IP, 所以需要不断的去找没有墙封锁的IP。
深度包检测DPI:
原理: 通过深度检测报文, 当发现报文命中了封锁条件后, 直接将连接重置。
破解: 使用加密协议。
效果: 被访问的对象需要支持加密访问, 而且它的IP没有被封锁。
IP封锁:
原理: 直接阻止对特定IP的访问。
破解: 使用一个没有被封锁的IP做代理。
效果: OK。
“墙”在封锁的时候是多种手段一起应用,而且功能越来越强大, 上面提到的破解方法如果单一使用很容易失效。
最可靠的方法是在墙上打洞, 只要我们可以访问墙外的一个节点,就可以通过这个节点看到整个墙外的世界。
这个节点可以是你自己搭建的(租赁一台墙外的主机)、免费/收费的sock4/5代理free proxy、VPN服务商的节点。
你自己与节点之间通信毫无疑问必须是加密的才能躲过“深度包检测”。
但是还存在一个问题,如果“墙”的管理员通过某种方式知道被用来翻墙的境外的节点IP,那么他就可以把这个IP封锁。因此节点的选择需要策略:
1. 自建节点,只有自己使用,目标小,不容易被发现。
2. 使用不能封锁的节点, 比如vpn服务商的节点IP, 牵涉面巨大, 不会被轻易封锁。
3. 游击战, 搜集大量的墙外节点,被封锁了,就换一个。
百度上搜免费的web代理,耐心的话会找到。但是现在他们已经越来月不厚道了,各种跳转,就是不干事情,而且只能刷网页。
不要跟我谈收费的…
Windows上用起来更方便一些,一般没什么问题,所有的程序都可以使用,不过貌似敏感的时候VPN服务商也会被屏蔽….
不要跟我谈收费的…
http://www.socks-proxy.net/。Sock代理真心是个好东西,可是免费又稳定的不好找。
不要跟我谈收费的…
可以在国外找台机器,搭建个sock服务器或者使用ssh隧道。现在各大云服务商不都是提供免费体验吗。。。
web在线代理、vpn等就不用说了,直接用就可以了。重点是sock代理怎样用。
在Linux上一些应用程序本身就支持代理, 例如wget:
ENVIRONMENT
Wget supports proxies for both HTTP and FTP retrievals. The standard way to specify proxy location, which
Wget recognizes, is using the following environment variables:
http_proxy
https_proxy
If set, the http_proxy and https_proxy variables should contain the URLs of the proxies for HTTP and
HTTPS connections respectively.
ftp_proxy
This variable should contain the URL of the proxy for FTP connections. It is quite common that
http_proxy and ftp_proxy are set to the same URL.
no_proxy
This variable should contain a comma-separated list of domain extensions proxy should not be used for.
For instance, if the value of no_proxy is .mit.edu, proxy will not be used to retrieve documents from
MIT.
设置环境变量http_proxy和https_proxy, 这些程序的通信数据就可以通过代理地址传输。
假设代理服务器地址192.168.1.1, 端口8080, 用户名easwy, 密码123456:
export http_proxy=http://easwy:[email protected]:8080
export ftp_proxy=http://easwy:[email protected]:8080
如果应用程序本身就不支持代理,在Linux上可以使用tsocks或者csocks
tsocks使用:
install:
apt-get install tsocks
manual:
man 1 tsocks
man 5 tsocks.conf
man 8 tsocks
在/etc/tsocks.conf中配置好代理服务器的地址后,使用tsocks启动目标程序:
tsocks YourProgram
这时候YourProgram的所有网络通信都会通过配置的代理服务器转发。
对于翻墙来说只需要运行下面命令,就在本地设置了一个代理:
ssh -p 节点ssh服务的端口 -C -f -N -g -D 本地的代理端口 root@节点IP