『机场+VPN』——一种或许比单纯直连VPN更加安全稳定的翻墙方式(4月8日更新)
(2023年4月8日更新)
OpenVPN协议以及一些VPN的客户端支持使用前置代理连接VPN服务器。而机场,不管是SS、SSR还是什么V2ray协议,最终的本质上都是代理。因此,从理论上来说,我们可以使用机场连接OpenVPN来翻墙。这种『机场+VPN』的方式(也可以叫『VPN over proxy』、『前置代理』),具有以下优点:
①比直连VPN、机场更加安全一点
②可能比直连VPN更加稳定
③在特殊时期能够大大增强你的抗风险能力
④能够让你享受更多VPN的线路
简单来说,就是机场和VPN各自发挥自己最大的优点——机场用来翻墙,VPN用来保证隐私。
同时,也具有以下缺点:
①同时要买机场和VPN,会花更多的钱(还好,一般的机场不会太贵,节假日期间打折入手更加便宜)
②速度更慢,延迟更高,推荐在VPN无法直连的情况下尝试
③对个人技术水平有一定要求
为了能够用上『机场+VPN』,我们需要先购买并配置好至少一个机场。对于机场的选择,最好选择稳定且支持UDP协议的,比如云翼网络、TAG、RelayCloud等。也可以选择支持V2ray的,比如WgetCloud、Hutao Cloud。
然后再选择一个VPN。最好选择大厂,建议ExpressVPN、PureVPN之类的。如果能够保证直连最好。
下面,我以云翼机场+ExpressVPN为例子,实现『机场+VPN』。
目录
一、配置机场 四、获取机场中转服务器的IP地址 七、一些其他问题
二、配置VPN 五、配置OpenVPN使得在连接VPN时不干扰机场连接
三、给OpenVPN设置代理 六、结尾
一、配置机场
虽然云翼机场有提供专门的客户端,但我是自己花了一些时间写了个配置文件,然后导入到Clash for Windows中。大致过程如下:
①在Github上下载并安装Clash for Windows(https://github.com/Fndroid/clash_for_windows_pkg/releases)。注意,这个Clash for Windows,说是for Windows,实际上支持Windows、MacOS和Linux三个系统。
②获取机场的配置文件,并导入到Clash for Windows中。
③在Profiles栏选中导入后的配置,然后在Proxies栏选择Global(全局)并任意选择一个可以连上的线路。
④在General栏获取代理端口,也就是看Port项的值,记下端口为7890。顺带你也可以打开Allow LAN,允许局域网内其他设备使用代理。
现在,机场就已经配置好了。
二、配置VPN
VPN的手配方法,特别是ExpressVPN的OpenVPN,论坛上有一堆,官方也有教程,这里就不再重复。
三、给OpenVPN设置代理
OpenVPN的代理设置方法,有两种:
①对于OpenVPN GUI(Windows系统)、OpenVPN for Android(Android系统)之类的OpenVPN客户端,均可以在设置中方便地设置代理。由于OpenVPN UDP只能使用Socks5协议的代理,所以在设置代理时务必选择协议为Socks5。对于OpenVPN TCP,则HTTP、Socks5两者均可。
②对于Tunnelblick(MacOS)之类的OpenVPN客户端,不支持在设置中快捷设置代理,此时就需要手动修改OpenVPN配置文件。在VPN的配置文件中写入下面的内容:
socks-proxy 127.0.0.1 7890
#127.0.0.1指本机,这需要你的OpenVPN客户端和机场客户端均在同一台设备上。如果不在同一个设备上,请打开机场客户端的Allow LAN,即允许局域网内的其他设备使用代理,然后填写机场客户端所在设备的局域网IP地址即可。7890即上文获取到的socks5代理端口。
#如果需要http代理,则是:
http-proxy 127.0.0.1 7890
#Clash for Windows的Socks5代理端口默认和HTTP的代理端口合并在一起,所以都是7890。如果你的机场客户端没有这种混合起来的功能,需要注意一下HTTP代理端口的设置。
#这些『#』开头的行都是注释,你可以删掉它们。
设置完成后,现在你可以尝试连接VPN。ExpressVPN的OpenVPN手配只支持UDP,所以如果选择的机场线路支持UDP,且能正常使用,或者你使用的是V2ray协议,那么你大概率会连接成功。
但如果你是在同一台设备上连接,那么在连接成功后,你可能无法上网,而且上传带宽似乎被跑满。这是怎么一回事?(V2ray协议的机场线路似乎不会出现这种问题)
因为机场的流量走OpenVPN,OpenVPN的流量又走机场,两者互相纠缠,形成环路,自然无法上网。这时候就需要设置OpenVPN的路由,让OpenVPN放过机场的流量。
四、获取机场中转服务器的IP地址
OpenVPN的路由仅支持IP地址,所以我们需要获取到机场流量到底发向了哪里,然后将那里的IP地址排除在OpenVPN之外。Android很简单,MacOS、Windows和Linux找到这个地址的方法差不多。
在MacOS和Linux上:
打开你的浏览器,设置浏览器的代理为机场(具体方法自己查),然后打开一些不常用的网页。这一步的主要目的是方便我们找到我们想要的那个IP。
此时再打开系统的终端(Android可以安装MT管理器,里面就有带一个终端),输入并运行以下命令:
netstat -an
这条命令的大致意思是『获取所有网络连接的信息』
然后,终端就会冒出来一大堆信息:
Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp4 0 0 192.168.0.100.60253 223.119.xxx.xxx.80 LAST_ACK tcp4 0 0 192.168.0.100.60250 36.156.xxx.xxx.xxxxx ESTABLISHED
tcp4 0 0 127.0.0.1.7890 127.0.0.1.60249 ESTABLISHED tcp4 0 0 127.0.0.1.60249 127.0.0.1.7890 ESTABLISHED tcp4 0 0 192.168.0.100.60248 36.156.xxx.xxx.xxxxx ESTABLISHED
tcp4 0 0 127.0.0.1.7890 127.0.0.1.60247 ESTABLISHED tcp4 0 0 127.0.0.1.60247 127.0.0.1.7890 ESTABLISHED tcp4 0 0 192.168.0.100.60246 36.156.xxx.xxx.xxxxx ESTABLISHED
tcp4 0 0 127.0.0.1.7890 127.0.0.1.60245 ESTABLISHED tcp4 0 0 127.0.0.1.60245 127.0.0.1.7890 ESTABLISHED tcp4 0 0 192.168.0.100.60243 36.156.xxx.xxx.xxxxx ESTABLISHED
tcp4 0 0 127.0.0.1.7890 127.0.0.1.60242 ESTABLISHED tcp4 0 0 127.0.0.1.60242 127.0.0.1.7890 ESTABLISHED tcp4 0 0 192.168.0.100.60241 36.156.xxx.xxx.xxxxx ESTABLISHED
tcp4 0 0 127.0.0.1.7890 127.0.0.1.60240 ESTABLISHED tcp4 0 0 127.0.0.1.60240 127.0.0.1.7890 ESTABLISHED tcp4 0 0 192.168.0.100.60239 36.156.xxx.xxx.xxxxx ESTABLISHED
tcp4 0 0 127.0.0.1.7890 127.0.0.1.60238 ESTABLISHED tcp4 0 0 127.0.0.1.60238 127.0.0.1.7890 ESTABLISHED tcp4 0 0 192.168.0.100.60237 36.156.xxx.xxx.xxxxx ESTABLISHED
tcp4 0 0 127.0.0.1.7890 127.0.0.1.60236 ESTABLISHED tcp4 0 0 127.0.0.1.60236 127.0.0.1.7890 ESTABLISHED tcp4 0 0 192.168.0.100.60235 36.156.xxx.xxx.xxxxx ESTABLISHED
tcp4 0 0 127.0.0.1.7890 127.0.0.1.60232 ESTABLISHED tcp4 0 0 127.0.0.1.60232 127.0.0.1.7890 ESTABLISHED tcp4 0 0 127.0.0.1.7890 127.0.0.1.60231 ESTABLISHED tcp4 0 0 127.0.0.1.60231 127.0.0.1.7890 ESTABLISHED tcp4 0 0 127.0.0.1.7890 127.0.0.1.60230 ESTABLISHED tcp4 0 0 127.0.0.1.60230 127.0.0.1.7890 ESTABLISHED tcp4 0 0 192.168.0.100.60229 36.156.xxx.xxx.xxxxx ESTABLISHED
tcp4 0 0 127.0.0.1.7890 127.0.0.1.60228 ESTABLISHED tcp4 0 0 127.0.0.1.60228 127.0.0.1.7890 ESTABLISHED tcp4 0 0 192.168.0.100.60227 36.156.xxx.xxx.xxxxx ESTABLISHED
...............
其中,有一个IP经常出现,就是:36.156.xxx.xxx.xxxxx。其中,36.156.xxx.xxx是IP地址,后面的.xxxxx是端口。这个IP往往伴随着127.0.0.1:7890,也就是机场代理地址出现,这说明这个IP很有可能就是机场的国内中转服务器IP。
这里有个小技巧。机场客户端在与机场国内中转服务器通信时,由于中转服务器是不分线路的,因此为了区分你连的是哪个线路,就需要一个线路使用一个特定的端口。因此,在寻找机场国内中转服务器IP时,可以先打开机场的配置文件,找到你此时连的线路相对应的端口,比如在下面这个线路的端口就是12345。
name: '香港 01'
type: ssr
server: hk.airportforward.top
port: 12345
protocol: auth_aes128_sha1
udp: true
然后,在查看netstat -an指令返回结果时,留意端口为12345的公网IP。如果发现,那基本上就是机场的IP了。
在Windows上:
如果你的电脑上装了火绒,那可以通过火绒的网络工具查看进程clash-win64.exe的网络连接,找到里面的外网IP,这个可能就是机场的国内中转服务器IP(注意,此方法不一定有效)。
如果没有火绒,也可以通过命令行,使用netstat -an即可,具体流程见上面的Mac OS。
在Android上:
如果你使用的是OpenVPN for Android,可以在配置中将机场的客户端排除在VPN连接之外,也就是将机场APP设置为不使用VPN连接,就可以了。
五、配置OpenVPN使得在连接VPN时不干扰机场连接
打开OpenVPN的配置文件,在配置文件中加入以下内容:
route 36.156.xxx.xxx 255.255.255.255 net_gateway
上面这个设置的意思是:对于36.156.xxx.xxx这个IP,设置其路由为本地网络的网关。用人话来说,就是直连这个IP,不通过OpenVPN的流量。
255.255.255.255为子网掩码,由于我们这边仅需要针对单个IP,所以全部为255。如果要对于一个网段,比如192.168.x.x,则是这样的:
route 192.168.0.0 255.255.0.0 net_gateway
然后再试试连接VPN。连接成功后,应该就可以正常上网了。
机场的国内中转服务器一般不止一个,所以IP会变。IP改变后,需要手动再将新的IP设置路由哦!
对了,通过这种方式,也可以让你在连接VPN时直连一些其他的服务,比如百度:
route www.baidu.com 255.255.255.255 net_gateway
在OpenVPN连接时,www.baidu.com会被解析为IP地址,具体解析成什么可以在日志中查看:
2023-xx-xx xx:xx:xx.xxxxxx /sbin/route add -net 182.61.200.7 192.168.0.1 255.255.255.255
add net 182.61.200.7: gateway 192.168.0.1
2023-xx-xx xx:xx:xx.xxxxxx /sbin/route add -net 182.61.200.6 192.168.0.1 255.255.255.255
add net 182.61.200.6: gateway 192.168.0.1
可以看到,在这边www.baidu.com被解析为182.61.200.7和182.61.200.6。这并不意味着我们在浏览器访问www.baidu.com一定是直连的,而是在访问182.61.200.7和182.61.200.6这两个IP时是直连的。为何?OpenVPN连接后,DNS服务器被换成VPN厂商提供的服务器,对于像百度这样子服务器一堆的网站,解析结果一般会改变,所以www.baidu.com解析的结果也就改变了:
[xxx@xxxxxx ~ % host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com is an alias for www.wshifen.com.
www.wshifen.com has address 104.193.88.123
www.wshifen.com has address 104.193.88.77
如果我们手动将这两个IP地址添加路由,设定为直连,或在计算机的hosts文件内将www.baidu.com的解析设置为182.61.200.7或182.61.200.6,此时访问www.baidu.com才算真正的直接连接。
六、结尾
上文的教程其实非常简略,以后有时间可以再扩充一下。
另外,机场+VPN可以保证稳定性,相信大家都可以理解。那么为何还更安全呢?
让我们来看一篇故事:
一个数据包的故事
这是一个数据包:『包』,它将在『机场+VPN』的情况下前往google.com。
————计算机内————
『包』被浏览器制造出来,随后被进行TLS加密,然后发往OpenVPN客户端。
OpenVPN客户端将『包』再次加密,然后发往机场客户端。
机场客户端将『包』进行第三次加密,然后发往国内中转服务器。
————国内————
『包』被发送到机场的国内中转服务器,进行第四次加密,然后被发送到对应的机场服务器。
————GFW————
『包』经过GFW,GFW对包进行了检测,看起来似乎没有任何问题。
————国外————
『包』来到了机场服务器,此时机场服务器将『包』进行第一次解密和第二次解密,然后检查了『包』的目标地址。确认目标地址合法后,修改了『包』的来源地址,然后发往VPN服务器。(机场看到的目标地址是VPN服务器的地址,而不是Google服务器的地址)
『包』来到了VPN服务器,此时VPN服务器将『包』进行第三次解密,并再次修改了『包』的来源地址,然后发往Google服务器。
『包』终于被Google服务器接受到,此时Google服务器将『包』进行最后的TLS解密,然后阅读了『包』的内容。随后,它制造了一个新的『包』出来,并将其发往VPN服务器......
这就是一个数据包的故事。
————不华丽的分割线————
这个故事真长,对不对?现在,请回答以下问题:
Q.1谁知道你在翻墙?
A:你自己、浏览器、OpenVPN客户端、机场客户端、机场中转服务器和机场
Q.2谁知道你在访问Google?
A:你自己、浏览器、OpenVPN客户端、VPN服务器、Google服务器
Q.3谁知道这个数据包具体的内容?
A:你自己、浏览器、Google服务器
需要注意,你访问Google是通过HTTPS加密访问。如果是访问未加密的HTTP网站,则OpenVPN客户端、VPN服务器也会知道这个数据包具体的内容。
Q.4谁能够不费吹灰之力(即不通过人肉手段)得到你的隐私信息?
A:你自己、浏览器、VPN服务器(可能)和Google服务器。机场只能知道你在翻墙,但不知道你在访问什么,更不能得到数据包的内容。VPN服务器知道你在访问什么,在HTTP连接下可以得知数据包的内容,但不知道你在翻墙。在此情况下,由于数据包还经过TLS加密,所以VPN服务器也不大可能获取到数据包具体的内容。
Q.5 GFW知道你在翻墙吗?知道你在访问什么吗?
A:完全不知道。
现在,你知道为什么『机场+VPN』比直连机场或VPN更安全了吧?只要VPN是安全的,就算机场暗中想要收集你的数据也收集不了,它最多就只能知道你的注册邮箱和支付信息,别的完全不清楚。GFW也不会知道你在翻墙,因为机场有国内中转服务器,GFW只能知道国内中转服务器和机场在通信,但不知道你在和国内中转服务器通信。
如果你还不放心,在注册机场的时候就使用一些隐私邮箱,如Tutanota。这些邮箱地址是完全独立的,机场就算知道你的邮箱地址也无法通过该地址反查到你的手机号,进而得到你的真实信息。特别是在注册一些可能不安全的机场时。
七、一些其他问题
Q.1 如果OpenVPN使用UDP连接,机场一定要支持UDP吗?
A:不一定。这主要看机场采用的协议。SS、SSR等基于socks5代理开发的翻墙协议,仅仅对数据包进行了加密以及一些混淆,所以如果OpenVPN使用UDP连接到服务器,机场与机场服务器的连接就必须要使用UDP协议,这就要看机场支不支持UDP了。但V2ray不一样,OpenVPN的数据包发到V2ray本地客户端之后,就会被打包成VMess协议的TCP数据包,然后发往下一个V2ray节点,到达最终节点后就会被解包,然后再次以UDP协议发送到OpenVPN服务器。这个过程不需要机场一定支持UDP协议,并且连接稳定性超级好。Trojan协议我还没有用过,不知道具体情况。
Q.2 使用什么机场协议来连接VPN最好?
A:目前来看是V2ray(VMess),但情况可能因人而异。相比于SS,使用V2ray连接OpenVPN有以下优点:
1.(可能)不需要配置路由,数据包不会绕来绕去。目前我还没搞清楚为何会这样。
2.连接稳定性超级好。SS协议+VPN很不稳定,有时候连上还没用一会就断,重新连接又麻烦。V2ray就没这方面问题。
3.不需要机场一定支持UDP。
所以如果真的要经常使用机场+VPN,建议入手支持V2ray协议的机场,不推荐只支持SS协议的机场。
Q.3 机场据说也有加密,如果机场本身已经不会记录日志而且确保没有问题了,为何机场还是不安全呢?
A:下面是我仅仅用上文提到的云翼机场来翻墙的测试情况:
IP改成美国很正常,DNS泄漏没得说,我自己也默认设置了8.8.8.8和4.4.4.4(Google DNS)。但是,最后的一个WebRTC泄漏,是怎么回事?
最后这个泄漏的IP,拿去查,可以得到:
这可不是美国的IP啊!
我之前有几次只用机场上Google,然后原本我的Google搜索定位是美国的XXX州,没过一会直接就精确到了中国福建省XXX市(绝对是通过WebRTC泄漏得到我的真实IP地址了),然后用回ExpressVPN后也老是变不回来,还是中国,还得我亲自修改GPS定位信息,然后手动更新位置信息才回来。
更加离谱的是,在Google探测到我的真实IP后,原本手机上很正常的GMS服务突然老是显示没有互联网连接,重启才能暂时解决问题。据我所知,这种情况我上次遇到还是前年在使用PandaVPN的时候(没错,就是那个好像已经跑了的),使用ExpressVPN后就根本没遇到这问题,然后在我手动更新位置信息后又正常了。
总之,为了隐私起见,最好不要只用机场翻墙,要用就新开一个浏览器,不要使用机场登录一些自己常用的网站。用的时候不要碰Google!搜索用DuckduckGo!
PS:最近发现Windscribe的客户端可以添加代理,然后使用代理连接VPN。通过这种方式也可以实现『机场+VPN』。Windscribe免费账户每月有10GB流量,拿来当个备用也是可以的。
没有找到相关结果
12 个回复 我要评论
Biyougong 【熟练级】 - fa有问题私信我,买了这款的都知道
赞同来自: Minecraft
用这个方法测了下,
stacksocial还能买到的终身产品里面:
ivacy用这个方法没反应,同理pure和ivacy本质一家,也不行;
seed4me这个由于是魔改openvpn,没有ovpn配置文件,所以也不行,而且这家现在涨价也贵了;
vpnsecure这个手配文件给的有问题,也用不了,这家服务也挺差的;
belka这家虽然可以,但厂家成立时间短,而且厂家隐私可靠性存疑,不建议选择;
keepsolid这家很差劲,手配需要去官网一个个生成,而且生成了也用不了,避坑;
其他的fastest、bullet、ipro、getflix、slick(就是配置文件得一个一个下)这五款,手配是可以使用这种方法的。另外这几款手配不用机场帮忙,直接直连的话或多或少还能用。
非终身的话:
surfshark、pia、privatevpn还有其他几个特别小众的都可以。应该只要openvpn手配正常的基本都行。但pure/ivacy似乎不行,nord我找了个号试了下也不行,而且nord在国内几乎没啥价值了。
Biyougong 【熟练级】 - fa有问题私信我,买了这款的都知道
赞同来自: Minecraft
再补充一下,安卓端也可以用类似的方式。
机场客户端以比较通用的clash为例。clash安卓端的话需要现在设置-网络里面勾选第一个自动路由系统流量,然后在覆写里面设置HTTP/Socks端口。这样clash的部分就配置好了。
openvpn手配可选择openvpn connect、openvpn for android 或 vpn client pro。三选一即可。似乎最后一个比较方便。协议选TCP,进去设置HTTP或Socks5代理,地址都是127.0.0.1,端口根据前面设置的决定。这样先连机场再连VPN应该就可以了。
Minecraft 【入门级】
赞同来自: Biyougong
2023.1.28更新:
1.加入了Windows、Android防止机场和VPN流量互相绕的方法。
2.加入了机场协议选择的说明。
3.可以确定IKEv2的代理设置只能用于连接到VPN后再连接代理,不能用代理连接IKEv2的VPN。
4.吐槽了一下机场的WebRTC泄漏 😀欢乐+1。
LateResonance 【新手级】
赞同来自: Biyougong
如果是用这种方法的话,还有一个更好的建议
就是VPS自建v2ray/ss/Trojan
然后通过机场中继你的v2ray/ss/Trojan
大致效果也是通过机场来翻墙,然后通过v2ray/ss/Trojan来访问你实际访问的服务器
不过大致有以下几个缺点:
1. 流媒体解锁能力取决于你的技术或所购买VPS的供应商
2. 节点地区单一,单个vps成本较低,多个地区的vps成本就剧增了
至于优点和上述内容大致相同
匿名用户
赞同来自: Biyougong
机场+VPN不等于更安全,机场还是会记录连接网站日志,如果你的VPN不是零日志政策就等于是记录双重日志。另外关于Google泄露IP,是因为本身OPENVPN配置的问题造成DNS泄露,PC使用应添加"block-outside-dns"命令。
Biyougong 【熟练级】 - fa有问题私信我,买了这款的都知道
赞同来自: Minecraft
转载一个使用openvpn gui手配的分流列表:
原理是使用了route语句进行直连,具体可参考楼主的第五点教程。
文本里面汇总了大量的国内网站IP,使用后可以走直连。
文本下载:
https://drive.google.com/file/d/14NYVKOYhjEMicgXXtgHD_Svgiaf9E6UZ/view?usp=sharing
使用方法:将文本内容复制到ovpn配置文件证书内容【即这行】之前,保存后导入客户端即可。
作用:可以让用户在使用 VPN 连接家里路由器时,不使用 VPN 进行对国内 IP 的访问,从而减轻 VPN 的负担,增加访问国内网站的速度。
注:源数据源自apnic,参考chnroutes,会不定期更新。在此只是转载。
Minecraft 【入门级】
赞同来自: Biyougong
2月9日更新:
稍微修改了一些有误导性内容的文本,并在第六章末尾增加了一段注册机场时的保护隐私小技巧。
Biyougong 【熟练级】 - fa有问题私信我,买了这款的都知道
支持,写的很详细了。
RobertMays 【新手级】
大佬,想请教一下,如何配置OpenVPN,使其路由全部流量啊,Express提供的配置文件只能路由部分流量,一部分网站不会转发,会泄露真实IP。我尝试添加了redirect-gateway到配置文件中,会报错,似乎Express的服务器端不支持这个特性……
匿名用户
大佬,我想问一下,我买了surfshark发现很难直连,甚至不能通过开机场飞机去连。我曾经以为vpn是通过vpn客户端到机场再到vpn服务器(双跳),我只是想用vpn进一步加密自己的隐私,发现surfshark app的直接连接好像不是走机场到vpn服务器。想问一下按这个教程能够实现吗?
匿名用户
我有个闲置的vps,我能否在vps搭建ssr服务器,然后同时做vpn客户端去连接我买的付费vpn的服务器,这样实现我自己走vps再通过vps走vpn来隐藏自己?
HyvYEhhrkKc5gn 【新手级】
其实这就是"编程随想"所提到过的"多重代理"。
只不过实际中,这套组合起不起作用,基本取决于机场起不起作用。
机场不work,VPN再好也白搭,反过来,机场要是OK,那我又何必在VPN上花钱呢,免费的tor走起不香么