这不就有AP了嘛

(在夹缝中生存的)

在第2篇的第9篇中,主要研究的是解决电脑与宿舍的通信问题。众所周知,宿舍都是内置了PC与安全软件的。高三的教学电脑上面有个AP功能,可以将安卓系统连接的网络共享出去。

之前的测试中,Windows端无法与AP ping通,这是为什么呢?原来解决的AP是直接开启了一个新的网段,PC端自然无法连接,但PC是可以直接连Android主机本身的IP的。

1
PC ←→ Android ←→ AP → 手机...

也就是说我们需要利用Android作为中间服务器,物理机就能连接至PC了。Android只需进行端口转发即可。在解决上进行端口转发,需要一个能实现端口转发的工具,wjh找到了一个软件Port forwarding,可以实现端口转发。

那么有端口转发有什么用呢?代理?代理固然方便,但代理的限制也确实较多,此前有提及过,在此就不展开了。那比代理更优的方案是VPN,这是直接在Android端搭建VPN?等等,不用。连接VPN……好像也可以不用转一个服务器,而是直接通过端口转发VPN使用的通信端口。

经过测试,我们发现,没有root权限只能转发>1024的端口。由于L2TP使用的端口包括用于IPsec的认证与协商的UDP500端口,此端口<1024,所以无法使用L2TP VPN。但是,我们还有一个OpenVPN呀。OpenVPN的默认端口号是1194,且可以任意修改端口。也就是说,只要转发1194端口就可以实现连接了。这是将从服务器到PC到Android到AP,即:

1
2
VPN服务器 ←→ PC ←→ Android ←→ AP
0.88.202.73:1194 10.88.202.33:1194 4:1194 192.168.54.1:1194

经过多圈的转发,手机就可通过AP顺利地连接至服务器。PC端需要配置的就只有gost了。使用gost进行端口转发:

1
gost -L=rudp://:1194/10.88.202.73:1194

然而在我们的测试时却出现了问题,VPN无法连接,打开gost的输出窗口,发现确实有出现数据包传输。为了进一步排查错误,我们想到还可以转发Alist的5244端口,毕竟网页传输的数据包内容得多。在手机上连上AP,访问192.168.54.1:5244,Alist的页面出现,但一直在转圈加载(这是Alist本身的加载动画),说明Alist的网页有被传输过来,但是因为未知原因卡住了。

我们打开Wireshark进行抓包观测。从抓包结果中我们可以看出只有几个数据包的传输,对比正常的Alist访问的数据包,在手机上只发出了几个请求。于是我们便可以猜测,是传输的过程出现了问题。

经过wjh的排查,我们发现,问题出现在安卓上负责转发的软件Port forwarder上。这个软件太老了,居然只会转发一条连接的几个数据包。我们找到一个性能更好的且UI界面极其美观的软件,Fwd port forwarding。这个软件体积更小,我们用这个软件替换了旧软件,于是,连接终于一切正常。

综上,总结一下解决的配置方法:

  1. 打开解决的USB调试
  2. 将包含Fwd软件的Fit32格式的U盘接到解决上,安装此软件
  3. 在设置中开启AP
  4. 在fwd的设置中设置端口转发,其中ip填写PC端的ip,即可转到PC端
  5. 安装gost,推荐通过bat脚本使用gost进行端口转发
  6. 可以使用计划任务将此脚本加入自动启动
  7. 手机端使用openvpn连接

需要注意的是,需要修改配置文件:

  • 解决电网ip统一为192.168.41.1
  • 将原openvpn配置文件中的ip 10.88.202.73改为192.168.54.1即可
  • 经过测试,使用UDP连接VPN会出现问题,使用TCP进行连接更为稳定,所以在配置文件中指定VPN的连接方式为TCP

高三的教学楼就像一堵坚实的墙,密不透风。直到现在,我们终于打开了一扇窗。


配置步骤简化清单

一、PC端准备

  1. 安装gost工具
  2. 执行端口转发命令:
    1
    gost -L=rudp://:1194/10.88.202.73:1194
  3. (可选)通过计划任务将上述命令加入自动启动

二、Android端配置

  1. 开启USB调试,通过U盘安装Fwd port forwarding软件
  2. 打开系统设置→开启AP功能
  3. Fwd中设置端口转发:
    • 转发端口:1194
    • 目标IP:PC端的IP
    • 目标端口:1194

三、手机端连接

  1. 连接AP网络
  2. 修改openvpn配置文件:
    • 将原IP10.88.202.73改为192.168.54.1
    • 指定连接方式为TCP
  3. 启动openvpn连接