Google Cloud
赠送的$300到期了,之前发现连不上AppleStore
还以为是网络问题,隔天才发现是Google Cloud
到期导致的。没有了免费的服务器资源,就得去找一个了。通过对比,发现Vultr
提供的VPS
服务性价比比较高。每个月$3.5,提供1个CPU、512M内存、500GB/月流量。对于个人日常翻墙访问国外服务绰绰有余了。也有一个月$2.5的,但是只有IPv6地址,如果你是在学校这种有IPv6环境的地方,使用这个套餐相对会省一点。这个是我的邀请链接https://www.vultr.com/?ref=7748749,如果这篇文章对你有用,希望您能使用我的邀请链接~
服务器建议选择东京或者新加坡的,这样延迟会小一点。测试了下东京延迟150ms左右,新加坡延迟250ms左右。新建好的服务器也不一定能够访问,可能给你分配的IP地址已经被GFW
封了。可以通过端口检测工具来判断IP地址是否已经被封。在国内端口测试网站和国外端口测试网站分别测试服务器IP对应的22端口是否可以访问,如果国外可以访问国内不行,那么这个分配的IP地址已经被封了。可以更换服务器的物理地址或者隔天再重新创建服务器来获取新的IP地址。(立刻销毁,在同一物理地址上重新创建还是会分配原来的IP地址)
上面说这么多,差不多都是在为Vultr
服务商打广告了。之所以会有这篇文章是因为我在重新搭建自动代理的时候发现需配置的地方还挺多的,还是记录下来,不然以后自己都可能需要重新去查怎么布置。
自动代理解决方案框架图
服务器配置
服务器上所需要的配置相对来说比较少,只需要安装配置V2ray
软件即可。
V2RAY
是一个支持多协议的网络请求转发软件,它可以将一个机器上的网络请求转发到远程服务器上,然后将远程服务器返回的结果转发回请求的机器。
安装V2ray
我的服务器系统是Debian
的(Ubuntu应该也适用),其他系统参考官方文档吧。
sudo su |
配置V2ray
V2ray
的配置文件是位于/etc/v2ray
目录下的config.json
下面的配置支持vmess
的tcp
和kcp
的传入链接。如果你的VPS服务器延迟比较严重,建议使用kcp
协议,有加速的效果。这个网站https://www.uuidgenerator.net/可以在线生成id
。
{ |
V2ray服务启动
sudo systemctl restart v2ray.service |
路由器配置
家里路由器是EdgeRouter PoE 5
,系统是基于debian
的edgeos
。推荐下这个路由器,公司专注于做企业级的产品,产品非常稳定。当然这种路由器只适合爱折腾的人士,需要有相应的知识才能配置使用。
V2ray安装
ssh
登录路由器
# 切换root用户,默认ssh登录账号为ubnt |
这个路由器架构是mips64
,也可以手动下载v2ray
安装包v2ray-linux-mips64
然后使用go.sh
脚本安装
./go.sh -l v2ray-linux-mips64.zip |
uname -a
查看系统架构
V2ray配置
路由器上的V2ray
配置为中转服务器。
下面配置支持一下功能
socks
、http
代理以及基于端口映射的透明代理DNS
代理转发
{ |
自动代理配置
上面的配置只是配置好了网络请求转发,以及socks
和http
代理配置。浏览器已经可以通过设置socks
或http
代理地址(路由器ip地址)来访问网页了。但是要自动为接入家庭网络的所有设备以及应用代理网络请求,还需要一些额外配置
DNS请求代理
国家防火墙
不光会直接封IP地址,同时也会将域名解析为错误的IP地址,所以首先要确保DNS
解析正确。(Chrome
浏览器设置socks
代理后,DNS
也会走代理)
使用Dnsmasq
edgeos
从1.9版本开始支持dnsmasq
作为dns
服务器。ubnt
提供了设置文档EdgeRouter-Using-dnsmasq-for-DHCP-Server
# ssh需在ubnt账号下运行或者直接网页端的cli界面 |
国内域名解析加速
上面dns
配置会将除特定域名以外的dns
请求都通过V2ray
转发。但是国内域名的解析不会被防火墙干扰,因此也走代理的话,会导致国内网络请求变慢。网络上有有专门整理好的国内域名列表,下面脚本会自动配置dnsmasq
,将国内域名解析都指定为114.114.114.114
服务器
|
将脚本放在目录中
/config/scripts/post-config.d
下,这样在路由重启后会自动运行
IP数据包自动转发
dns
走代理解析正确后,剩下就是让IP
数据包自动走代理。同样的也希望国内IP的数据包不走代理,国外IP地址的数据包自动走代理。
下面脚本基于ipset
以及iptables
实现了如下功能:
- 创建中国IP地址集以及noproxy(特定IP地址不走代理)代理集
- 内网数据包直接访问,不走代理
noproxy
集中的IP地址都不走代理- 非中国IP地址都走代理
- 只有目标端口1-1024的数据包才会被代理(避免代理bt数据包,差不多其他基本网络服务的端口在这个范围内)
|
同样为了在路由重启后自动运行改脚本,需要将脚本放在
/config/scripts/post-config.d
目录下
VPN配置
家庭路由自动代理配置完成后,只有当设备连入家里的路由才能自动代理。家里之外的设备怎么办呢?最方便的就是通过VPN
,因为不管手机或者PC都支持VPN。
edgeos
配置VPN
参考官方文档https://help.ubnt.com/hc/en-us/articles/204950294-EdgeRouter-L2TP-IPsec-VPN-Server。建议VPN
就使用L2tp/IPsec
协议,Android
和IOS
系统默认都支持该协议
VPN
配置好后,在外的设备连接VPN
,就能自动代理了。