GFW Blog | 我的科学上网技巧
科学上网技巧分享。来源:https://g2ex.github.io/2016/05/20/Tips-on-Chinternet/尽管也称互联网,但在国内,如若有以下一个或多个需求,你就不得不学习一下科学上网了:访问的网站或服务被(GFW)墙;网络提供商(ISP)劫持了网络流量;需要匿名(隐藏真实 IP)的情况,如渗透测试;躲避网络监控;其他情况。这里分享一下我的科学上网技巧,使用到的工具软件可能有 Shadowsocks、Lantern、Privoxy、Tor。根据不同的目的选择不同的工具。一、绕过 GFW 和 ISP 劫持最简单和不折腾的方法是购买 VPN,次之是购买一台海外 VPS,自己安装 VPN 或 Shadowsocks 服务端。VPN 的优点是可以全局翻墙,Shadowsocks 虽然可以设置全局模式,但是对于不支持代理的本地应用是没有办法的,当然这种情况下可以试试 ProxifierPE 强制所有连接通过代理上网。使用 Shadowsocks 可能遇到的另一个问题是,因为 Shadowsocks 使用的是 SOCKS5 类型的代理,当本地应用只支持 HTTP/HTTPS 类型代理时,就需要自己解决 HTTP 转换为 SOCKS5 的问题。当然,这个问题使用 Privoxy 就能很好地解决。本节主要介绍如何组合使用 Shadowsocks 和 Privoxy,并假设你已经安装并配置好了 Shadowsocks(Linux 中可以安装 shadowsocks-qt5 或 命令行版本的 Shadowsocks)。Shadowsocks 与 Privoxy 组合使用的示意图如下所示:Shadowsocks Privoxy 组合使用示意图假设你已经配置好了 Shadowsocks,接下来配置 Privoxy。Windows 系统中右键点击 Privoxy 托盘图标,依次点击 Edit – Main Configuration 打开配置文件;Linux 系统中 Privoxy 的配置文件位于/etc/privoxy/config。配置文件修改为:123456# 把 HTTP 流量转发到本机 127.0.0.1:1080 的 Shadowsocksforward-socks5 / 127.0.0.1:1080 .# 可选,默认只监听本地连接 127.0.0.1:8118# 可以允许局域网中的连接listen-address 0.0.0.0:8118启动 Shadowsocks 和 Privoxy 后,把本地应用的代理设置为 HTTP/HTTPS 类型的 127.0.0.1:8118,就可以绕过 GFW 和 ISP 了。如果局域网中的其他 PC 或手机也希望使用该电脑上网(假设该电脑 IP 地址为 192.168.1.10),把它们的代理设置为 19.168.1.10:8118 即可。Tips目前,有一个讨巧的的办法替代这两者的组合:使用 Lantern —— 一款开源的安全上网工具。它使用的是 HTTP 类型代理,本地端口为 8787,也就是说,把本地应用的代理设置为 127.0.0.1:8787 就可以使用 HTTP 类型的代理了。而且使用它,也无需自己购买 VPS。Lantern 默认非全局代理,可以在设置中改为全局模式。另一方面,Lantern 只监听本机 127.0.0.1:8787 的连接,如果局域网中的电脑或手机也想通过这台电脑翻墙(假设该电脑 IP 地址为 192.168.1.10),那么也需要配合 Privoxy 使用。这时,Privoxy 的配置应该如下:123# 监听局域网中连接到本地 8118 端口的连接,转发给 8787 端口的 Lanternforward / 127.0.0.1:8787listen-address 127.0.0.1:8118 # 可改为 0.0.0.0:8118 允许局域网的连接二、匿名上网网络中保持匿名的办法是使用 Tor,匿名的意思是隐藏你当前的 IP 地址。Internet 上有很多志愿者运行着 Tor 中继节点,Tor 能保证从出发点的流量至少经过三个不同的中继节点到达目的地址,而且这三个不同的中继不会每次都相同。形象地说,你想把一封匿名信交给小明,在大街上随便找了一陌生人 A 让 A 帮忙转交,A 走了一段路程后随便找了一个陌生人 B 让 B 帮忙转交,B 走了一段路程后随便找了一个陌生人 C 让 C 帮忙转交,最终 C 按照信封上的地址找到了小明并把信交给了他。小明只知道是 C 转交了这封信,至于是谁写的这封信,他就无从得知了。A、B、C 分别对应着 Tor 网络的中继节点,这种投递匿名信的方式就起到了隐藏 IP 地址的效果。如下图所示,使用 Tor 从本机经过三跳访问了 Google。Tor BrowserTor 浏览器为了方便使用 Tor,Tor 开发者把 Tor 集成到了定制版的 Firefox 中,简单设置一下就能正常使用。Tor 浏览器专为大陆等网络环境加入了流量混淆的选项。首次打开浏览器时会弹出 Tor 状态检查,点击设置配置 Tor 网桥,勾选互联网提供商(ISP)是否对 Tor 网络连接进行了封锁或审查中的是,把下一步中的网桥类型选择meek-amazon或meek-azure。这两者在大陆没被完全封锁,因此可以用来做跳板网桥。不过随着网络环境的恶化,Tor 提供的网桥类型都不可用时,就需要使用自己的 Shadowsocks 或 Lantern 代理了。首次打开 Tor 浏览器,在 Tor 设置中勾选互联网提供商(ISP)是否对 Tor 网络连接进行了封锁或审查中的否,在下一步是否需要本地代理访问互联网?中选择是,下一步中设置你的代理:使用 Shadowsocks 则设置为 SOCKS5 类型的 127.0.0.1:1080;使用 Lantern 则设置为 HTTP/HTTPS 类型的 127.0.0.1:8787;如果通过局域网中其他计算机的配置联网,把 127.0.0.1 改为那台计算机的 IP 地址。使用了代理的 Tor 浏览器原理示意图如下(以 Tor + Shadowsocks 组合为例):Tor 浏览器 + Shadowsocks 组合使用示意图Tor Expert BundleTor 浏览器适用于使用浏览器匿名上网的场景,如果打算让本地应用(如其他浏览器、Linux 中的 Terminal 等)也使用 Tor 隐藏 IP 地址,那么就需要自己手动配置 Tor 了。从 Tor 官网下载 操作系统对应的 Expert Bundle,它只包含 Tor 工具,不含浏览器。假设你已经配置好了 Shadowsocks,接下来,为 Tor 配置 Shadowsocks 代理。Windows 系统中,打开 %AppData%/tor 目录(如果不存在则创建该目录),新建 torrc 文件,内容如下:12345678## 通过 SOCKS5 代理SOCKS5Proxy 127.0.0.1:1080## 如果使用 HTTP/HTTPS 代理# HTTPSProxy 127.0.0.1:8118## 如果只允许特定端口的网络连接,如 80 和 443ReachableAddresses *:80,*:443ReachableAddresses reject *:*Linux 系统中,Tor 的配置文件位于 /etc/tor/torrc,配置内容同上。启动 Shadowsocks 和 Tor,因为 Tor 监听的是 SOCKS5 类型的本地 9050 端口,把需要匿名的本地应用代理设置为 SOCKS5 类型,代理地址设置为 127.0.0.1:9050,实现匿名上网。还是老问题,如果本地应用只支持 HTTP/HTTPS 代理类型,那么仍需要使用 Privoxy,修改其配置文件为:12forward-socks5 / 127.0.0.1:9050 .listen-address 127.0.0.1:8118 # 可改为 0.0.0.0:8118 允许局域网的连接这样一来,本地应用的代理设置为 HTTP/HTTPS 类型的 127.0.0.1:8118 就可以实现匿名上网了。Privoxy + Tor + Shadowsocks 组合使用示意图如下所示:Privoxy + Tor + Shadowsocks 组合使用示意图One More Tip使用 Tor 匿名访问网络除了应用于渗透测试,另一个应用场景是编写爬虫变换 IP 地址爬取站点,减小被网站屏蔽的可能性。在 Linux Terminal 中,使用 export 命令设置代理,可以只在当前 Terminal 中生效,12export http_proxy=http://127.0.0.1:8118export https_proxy=https://127.0.0.1:8118三、总结接下来简要归纳上述内容,给出每种组合的配置内容。Privoxy + Shadowsocks 组合 —— 翻墙配置 Privoxy,Linux 系统中位于 /etc/privoxy/config:12forward-socks5 / 127.0.0.1:1080 .listen-address 127.0.0.1:8118 # 可改为 0.0.0.0:8118 允许局域网的连接本地代理需设置为 HTTP/HTTPS 类型的 127.0.0.1:8118。如果不使用 Privoxy,本地代理需设置为 SOCKS5 类型的 127.0.0.1:1080。Privoxy + Tor + Shadowsocks 组合 —— 匿名上网配置 Privoxy,Linux 系统中位于 /etc/privoxy/config:12forward-socks5 / 127.0.0.1:9050 .listen-address 0.0.0.0:8118 # 可改为 0.0.0.0:8118 允许局域网的连接配置 Tor,Windows 系统中位于 %AppData%/tor/torrc,Linux 系统中位于 /etc/tor/torrc:123SOCKS5Proxy 127.0.0.1:1080 # Shadowsocks 代理地址ReachableAddresses *:80,*:443ReachableAddresses reject *:*本地代理需设置为 HTTP/HTTPS 类型的 127.0.0.1:8118。如果不使用 Privoxy,本地代理需设置为 SOCKS5 类型的 127.0.0.1:9050。Privoxy + Tor + Lantern 组合 —— 匿名上网配置 Privoxy,Linux 系统中位于 /etc/privoxy/config:12forward-socks5 / 127.0.0.1:9050 .listen-address 0.0.0.0:8118 # 可改为 0.0.0.0:8118 允许局域网的连接配置 Tor,Windows 系统中位于 %AppData%/tor/torrc,Linux 系统中位于 /etc/tor/torrc:123HTTPSProxy 127.0.0.1:8787 # Lantern 代理地址ReachableAddresses *:80,*:443ReachableAddresses reject *:*本地代理需设置为 HTTP/HTTPS 类型的 127.0.0.1:8118。如果不使用 Privoxy,本地代理需设置为 SOCKS5 类型的 127.0.0.1:9050。翻墙技术博客订阅地址及社交帐号
阅读更多