科学上网

思路

通过自己购买的国外服务器来搭建一个VPN来科学上网。

需要用到V2Ray这个软件。

实现

安装Linux服务端程序

先去下载V2Ray的Linux的客户端(这个网站也是需要翻墙访问的):

https://www.v2ray.com/chapter_00/install.html

注意从里面的github的链接点进去,在github页面上下载zip格式的包;不要直接下载其他格式的包。

我是先手动下载好v2ray-linux-64.zip(我买的国外服务器连不上github.com,无法在服务器上直接下载安装包)。

有时候会遇到文件下载了,但是filezilla连不上服务器,导致文件传不上去的情况,这种情况可以拿到下载文件的链接,直接在服务器上wget把文件下载下来:

1
wget https://github.com/v2ray/v2ray-core/releases/download/v4.20.0/v2ray-linux-64.zip

然后下载好安装脚本:

1
curl -L -s https://install.direct/go.sh -o  go.sh

然后执行安装操作:

1
./go.sh -l v2ray-linux-64.zip

安装完毕,启动服务(启动后记得netstat -tlpn确认下):

1
systemctl start v2ray.service

注意查看下配置文件/etc/v2ray/config.json中的客户端userid,后面在配置windows客户端的时候会用到:

1
2
3
4
5
6
7
8
9
10
11
12
"inbound": {
"port": 2333,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "2e60a803-8f70-4c50-b5d4-4a61fb913786",// 就是这个id
"level": 1,
"alterId": 64
}
]
}

关于配置,这里有个文章讲解得比较好。

安装Windows客户端程序

去github上下一个windows的zip包,解压:

https://github.com/v2ray/v2ray-core/releases

然后下载v2rayN,这是UI控制界面:

https://github.com/2dust/v2rayN/releases

将下载完成后的v2rayN.exe复制到之前打开的V2Ray文件夹目录,通过v2rayN进行界面操作。

然后启动程序,添加服务器信息,注意这里的userid必须和上面服务器上的userid保持一致,否则代理无法使用。

配置好后,客户端会自动启动,现在你就可以科学上网了。

常见问题

防火墙

买的服务器默认会开启防火墙,导致代理端口无法访问。比如我装好代理软件后,从我国内的服务器telnet,发现端口不通:

1
2
3
[root@VM_0_16_centos ~]# telnet 149.28.28.14 23246
Trying 149.28.28.14...
telnet: connect to address 149.28.28.14: No route to host

遇到这种情况,将安装代理软件的服务器的防火墙关掉,或者放开代理端口即可。

我是图方便,直接关闭了防火墙。

服务器为CentOS8,命令和CentOS6有所差别:

1
2
3
4
5
6
# 查询防火墙状态
systemctl status firewalld.service
# 关闭防火墙(重启后会继续开启)
systemctl stop firewalld.service
# 永久关闭防火墙(重启后不会继续开启)
systemctl disable firewalld.service

http://127.0.0.1:10810/pac/?t=1023144504617

注册表权限

我使用同事的代理服务器,之前一直没有问题,但是最近发现连不上了。

我按照网上的教程,所有内容都设置好了,然后发现死活用不起来,统计信息里面显示的连接数和下载量都是0。折腾了半天也没搞定。

后来同事帮忙看了下,发现帮助-日志里面有如下信息:

1
2
3
4
5
6
7
[2019-10-23 13:26:22] [Error] System.Security.SecurityException: 不允许所请求的注册表访问权。
在 System.ThrowHelper.ThrowSecurityException(ExceptionResource resource)
在 Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable)
在 Shadowsocks.Controller.SystemProxy.IEProxyUpdate(Configuration config, Int32 sysProxyMode)
在 Shadowsocks.Controller.SystemProxy.Update(Configuration config, Boolean forceDisable)
失败的程序集的区域是:
MyComputer

进而怀疑是最近安装的什么软件导致的现在SSR客户端需要访问注册表。然后改为以管理员权限启动SSR客户端,就能正常使用了。

排查问题,日志永远是第一位!

政策性封锁

国内连国外服务器非常非常慢,虽然这个我设置成功了,但是因为太慢,基本是不可用的。