系统
- Ubuntu 15.10 Wily
- 桌面环境:GNOME Shell 3.16.4
- VPN:Astrill v2.9.3
问题
我住在中国。没有 VPN,我无法访问许多网站,包括 Google、Facebook 等。因此,我购买了 Astrill VPN 并将其安装在我的电脑上。
VPN 运行完美,至少在我的浏览器上如此。我可以通过 Firefox 和 Chromium 访问 Facebook、Google 和其他美国网站。但是,终端命令行似乎不知道我使用的是 VPN,并且可以访问中国被屏蔽的网站。
例如,我可以robots.txt
通过网络浏览器访问 Google 的文件google.com/robots.txt
。但是,当我尝试通过命令行输入以下内容下载文件时:
wget https://www.google.com/robots.txt
它只是卡在那里。我还尝试在urllib2.urlopen()
URL 上编写一个简单的 Python 脚本,我尝试在每个被阻止的 URL 上都给出了一个:
urlopen error [Errno 110] Connection timed out>
这让我相信终端命令行根本无法识别我已打开 VPN,并且我是wget
从中国的实际 IP 地址发出请求。
我一直以为 VPN 是全系统应用的代理,所以我以为终端命令行会认为我已经不在中国了。结果我可能错了,信息被误导了。
我们能做什么?
编辑:
我安装了一些可以查找 IP 地址地理位置的应用程序:
sudo apt-get install geoip-bin geoip-database
。
我通过运行让命令行识别了我的 IP 地址hostname -I
。
因此我尝试通过运行以下命令查找我的地理位置:geoiplookup $(hostname -I)
输出?GeoIP Country Edition: IP Address not found
我尝试在浏览器的某些网络应用中输入相同的 IP 地址,但正如预期的那样,没有成功。
答案1
嗯,我发现了问题所在。
事实证明,我使用的 Astrill VPN 配置为开放网络。这意味着 VPN 仅通过 Web 浏览器等进行隧道传输。
然后我将配置更改为OpenVPN, 意思是“它具有先进的分割路由/分割隧道功能,并且可以隧道传输您计算机上的所有应用程序。”所有应用程序(即 Web 浏览器)以及其他所有应用程序(包括终端命令行)。现在,我的所有命令行请求都是通过 VPN 隧道发出的,我非常开心。
我猜 OpenVPN 配置就是“系统范围的代理”,我一直以为所有 VPN 的配置都是这样。之前使用 OpenWeb 解释了为什么我只能从网络上访问中国被屏蔽的网站。
如果你想了解更多关于 VPN 协议之间的区别 -Astrill 是这样说的,但我不知道这是否适用于所有 VPN。不过,我认为他们的解释只会略有不同。