2021年01月18日,用frp实现内网穿透在香港访问内地家里设备及利用IP代理SS实现回国模式

一 背景

到香港后,对内地家里的中国电信家庭网络没有公网IP无法访问而郁闷( ˇˍˇ ),一直想找办法解决。终于通过搜索网上教程和自己慢慢摸索全部实现,更进一步解决了没有公网IP在内地家里设备无法架设IP代理服务器而无法观看一些视频被限制的问题(前期在1月10日的文章已经解决从家里看世界的问题,给服务商的费用也许可以节省一些

二 前提

1、 申请香港移动的宽带,确认分配的公网IP地址而且相对固定(一般几个月会有变更但是不频繁)。香港家里的网络结构大致如下,运营商给的光猫后面接了一台ASUS RT-AU86X路由器,用的是官方固件,用A路由器表示,然后连接香港家里的需要无线或者有线上网的设备,包括QNAP NAS(以后称为B服务器),智能电视,网络打印机以及手机和电脑终端等。

2、 申请好自己的域名及SSL证书。我在阿里云申请了一个自己的域名,在上面将公网IP地址设置好域名解析,这是许多服务的配置基础。然后给域名申请一个三个月有效期的免费的SSL证书,可以确保安全。具体SSL证书申请方法可以参考1月10日文章

3、 内地用的中国电信的宽带,原来是公网IP地址,两年前不知什么时候变成了一个内网IP地址,吐槽一下用了网上的戏弄客服小姐姐的方法没用,不给就是不给,才有了内网穿透的最初想法。内地家里网络是运营商光猫连接一台ASUS RT-AC88U路由,以后称C路由器,用的是koolshare的梅林改版固件(版本号:380.70_0-X7.9.1),安装了1.4.8版本号的软件中心,然后连接到内地家里的智能电视,电视盒子及其他二级路由器等需要上网的设备。B路由器的软件中心里面安装SS-server, frpc内网穿透及其他必要的软件,貌似在内网中aliddns没有用处,如下图:

4、 在内地家里一台电脑上也请家人安装了软件VNC server,作为最初在香港远程操作内地设备的基本条件,虽然连接速度不理想,但在配置错误时确是必须的备用手段。

三 安装软件及配置

1、 B服务器(QNAP NAS)安装Docker frps内网穿透服务器应用。Docker是一种轻虚拟化应用,在QNAP NAS中Containter Station软件实现。这里就不深入了,总之,安装时还是走了些弯路,主要是安装这种应用经验不足导致的。

第一步,在NAS建立一个目录上存放配置文件frps. ini,目录路径太长了,/share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/volumes/frps/_data。如果你事先不建立这个目录,docker会生成一个随机目录,说实话还真不容易找到。如果配置不正确,将使Docker不能正常启动。

第二步,准备frps.ini配置文件。可以使用文本编辑器编辑好后直接通过WinSCP工具将它上传到NAS的上述目录中, 并且修改权限并在B服务器中查看是否有多余字符。任何错误都将导致Docker启动不成功。注意这些自定义端口号与下面步骤具体的设置有关联,一定不要搞错以及与现有的应用服务端口冲突。

[common] # 是不可或缺的部分
bind_addr = 0.0.0.0 # 不用修改,服务器端地址设置,0.0.0.0表示服务器全局所有IP可用
bind_port = 8084    # 用于和客户端内网穿透传输数据的端口,可自定义
kcp_bind_port = 8084 #也可以和“bind_port”共用同一端口,如果没有设置,则kcp在frps中被禁用,可自定义。
token = xxxxxx # 服务器的密码,注意0.18.0版本后是token,之前是privilege_token
vhost_http_port = 6080 # 指定端口为http网页协议,可自定义。
vhost_https_port = 6443 # 指定端口为https网页协议,可自定义。
dashboard_port = 8085 # 访问WEB服务端IP:端口查看frps运行状态,可自定义。
dashboard_user = xxxxx # 访问WEB服务端管理用户名
dashboard_pwd = xxxxxx # 访问WEB服务端管理密码
subdomain_host = xxx.xxx.com # 自定义二级域名,上面域名解析中设置好的

第三步,B服务器(QNAP NAS)上安装Docker,直接看下图步骤吧,我选择cloverzrg/frps-docker, 另外的也安装过但是配置一直不成功不能启动,不想搞了!

如果你没有安装过这个Docker,右边就应该是Install,点击后就可以直接安装,会有第三方软件提示,NEXT…

可以修改名称,CPU,内存项,第一次创建Container会是编号1,然后在Entrypoint填入./frps -c /conf/frps.ini,然后点击最下面Advanced Settings.

网络设置为Host,这就是为什么frps.ini中端口设置不要与其他服务端口冲突的原因。

设置好共享文件夹如上。点击Create

最后检查设置没有问题,点击OK就行了。如果配置没有问题,这个Docker可以正常运行,

不能运行(不是小黑方块)就是设置及ini文件路径及内容有错,得重新检查修改一遍,可能需要删除重来。

第三步, C路由器(内地,只有私网IP地址)中软件中心内打开frpc内网穿透客户端设置如下,服务器中填入frps服务器端frps.ini中的域名,端口及协议都要与服务器端一一对应,Frpc用户名称可以自定义,为了区分不同frpc客户端。最初底层通信协议我选择TCP,但是速度奇慢,难以忍受,修改为KCP后连接速度大幅增加。

提交后提示进程运行正常。

第四步,A路由器(香港,公网IP地址)只需要在WAN口设置好端口前转,在公网中公开B服务器的端口。其中Internal Address是B服务器被A路由器分配到的网络地址。

第五步,在B服务器端可以确认是否有frpc客户端是否正常连接到frps服务端。

前面都是通过VNC连接到内地家里电脑设置的C路由器。现在终于可以通过内网穿透远程登录C路由器了,速度完全是两种体验。在浏览器中直接域名+http内网穿透端口:6080就可以直接打开C路由器的登录界面。同样用域名+https内网穿透端口:6443使用加密方式打开C路由器的登录界面。

四 远程桌面到内网windows电脑

第一步,VNC到C路由器下的windows10电脑下载 frp windows, https://github.com/fatedier/frp/releases ,一般选择 windows_amd64。

第二步,将下载好的zip文件解压到指定目录。修改frpc.ini如下,注意如果有多个远程桌面客户端时,[RDP]要依次设置为[RDP01],[RDP02]……,重复将会冲突

[common]
server_addr = xxx.xxx.com # 域名,与B服务器域名一致
server_port = 8084
token = xxxxxx            # 与服务器端密码一致
log_max_days = 3
tcp_mux = true
protocol = kcp            # 如果是TCP将非常慢

[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6389        # 远程端口,同样需要A路由器上端口转发

第三步,还是VNC方式下cmd打开命令行窗口,到指定目录下执行start /b frpc.exe -c frpc.ini,后台运行frpc客户端。用后台方式主要避免VNC退出后命令窗口中运行frpc客户端也会退出,当然一劳永逸的方法是将客户端设置和系统一起启动或者将其设置成服务。有如下提示表示启动成功。

第四步,在内网电脑上远程设置中打开远程桌面开关。同时修改电源和睡眠设置为从不。

第五步,远程桌面到内网中的这台windows电脑,计算机项填写域名:远程端口号,这里端口是6389注意要用账号登录至少一次,如果都是用Pin码登录则不能远程桌面成功,就算登录密码正确也会提示错误。如果还是不能远程登录,Windows10中可以在目标主机上尝试如下修改:开始–>运行->gpedit.msc->计算机配置->Windows设置->安全设置->本地策略->安全选项->网络访问:本地帐户的共享和安全模型。 修改为使用经典模式。

第八步,成功打开C路由器下的内网电脑下的远程桌面,就像操作本地的电脑一样。VNC可以退休了。

第九步, 但这种方式不能关闭这个命令行窗口,关闭后由于frpc客户端退出运行导致远程桌面也会中断。这里有一个通过WinSW.exe将frpc程序运行作为一个windows系统服务的办法, 实现在Windows下开机自动运行frpc程序。

● 下载WinSW.exe。这里是文件下载地址Github,如果windows10就下载最新版名称中有NET4版本,改名为WinSW.exe。

● 编辑WinSW.xml文件。在WinSW.exe同一目录创建并编辑如下内容的xml文件,示例中的frpc程序是在D盘下的frp_0.34.3_windows_amd64目录中,这里需要将程序路径请更改为自己的路径:

<service>
	<!-- 该服务的唯一标识 -->
    <id>frp</id>
    <!-- 该服务的名称 -->
    <name>frp_0.34.3_windows_amd64</name>
    <!-- 该服务的描述 -->
    <description>frpc客户端 这个服务用 frpc 实现内网穿透</description>
    <!-- 要运行的程序路径 -->
    <executable>D:\frp_0.34.3_windows_amd64\frpc.exe</executable>
    <!-- 携带的参数 -->
    <arguments>-c D:\frp_0.34.3_windows_amd64\frpc.ini</arguments>
    <!-- 第一次启动失败60秒重启 -->
    <onfailure action="restart" delay="60 sec"/>
    <!-- 第二次启动失败 120秒后重启 -->
    <onfailure action="restart" delay="120 sec"/>
    <!-- 日志模式 -->
    <logmode>append</logmode>
    <!-- 指定日志文件目录(相对于executable配置的路径) -->
    <logpath>logs</logpath>
</service>

● 然后用管理的方式打开命令行cmd窗口,安装,运行程序并查看状态。

● 最后可以在任务管理器查看frpc服务,现在开机就可以自启动并摆脱黑黑的窗口。

第十步,仍然需要远端内地家里的电脑开机才能访问,继续前进实现远程开机。

● 打开内地家里电脑的wake on lan功能,用的是华擎主板,开机按F2进入BIOS设置界面。

● 进入Advanced→ACPI Configuration→PCIE Devices Power on,将其后面的值改为 Enabled

● 按键盘的esc键退到主界面,点击Boot项,在下面找到 Boot From Onboard LAN,将其值改为 Enabled。最后点击 Exit,在其中点击 Save Changes and Exit ,在弹出的对话框中点击 Yes,保存退出即可。

● 修改windows电源配置

● 关闭启用快速启动

● 修改网卡电源管理设置

● 修改网卡高级设置

● intel网卡电源管理设置有些不同。注意如果没有看到这些选项,说明intel网卡驱动程序版本偏低,你需要删除旧版驱动程序后下载最新版重新安装。

● 全部设置完成后,远程关机后可以登录内地C路由器在网络工具中通过网络(LAN)唤醒,指定了台式电脑的mac地址,测试远程开机成功。

五 利用内网穿透+IP代理服务器实现回国模式

第一步,C路由器上软件中心上安装SS-server,然后打开。

第二步,配置SS-server,注意端口号,这里定义58888。

第三步,还是软件中心中的frpc内网穿透客户端,添加一项穿透服务配置,协议类型选择私密,内网及远程主机端口号均是58888,和SS-server的端口是一致的。

第四步,一样在A路由器设置58888端口转发到B服务器。

第五步,SS客户端按照SS-server配置如下,Address项填写域名。

第六步,SS客户测试成功连接到内网中的SS-server,回国模式大功造成。

第七步,手机上打开腾讯视频,B服务器上可以看到流量暴增,已经内网穿透到内地。

至此,目标全部达成。

Share

You may also like...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注