修改移动光猫,提升上网速度

网络安全
专栏收录该内容
2 篇文章0 订阅
订阅专栏
家里网络变慢的问题
自从换了移动的100M网络(因为免费才换的!!),发现家里的网络差了好多。一开始还好,到了后面总是出现页面卡顿,网页上不去现象。

经过一番盲猜分析,发现了两个问题。一是家里的路由器太老了,用了五六年了,设备肯定是有些问题的。二是进了移动的光猫管理页后,发现是猫在做拨号的工作,而不是路由器拨号。

所以解决的方法就是买个新路由器,并且使用路由器拨号。

为什么要用路由器拨号呢?
光猫只做光电转换,工作负荷小,毕竟是白给的光猫,性能肯定好不到拿去
路由器的拨号带机量比光猫大
光猫就做它的光电转换,其他的工作交给高性能的路由器来做
接下来要做的首先就是光猫的改造工作了!

光猫的改造
1. 登录光猫的管理页面
这里需要在浏览器的URL地址输入192.168.1.1(默认情况下移动光猫管理地址都是这个IP)

紧接着输入超级管理员的用户名CMCCAdmin和密码aDm8H%MdA(复制即可,似乎不同地区的密码有区别)

 

2. 找到宽带设置
登录进来后,就是这么一个页面。点击网络下的宽带设置,可以看到右边列表有一排的协议。

我们找到一条带INTERNET的这么一条协议,其他的协议不用改它。

可以看到这条协议下的一些配置信息,PPP拨号上网,连接模式是Route类型

还是VLAN ID这个是要记住的,还有MTU,后面会用到

 

 

还有我们的宽带的用户名和密码,这个也是必须的,后面用来拨号上网。

辣么问题来了,你还记得用户名和密码吗?或者压根不知道QAQ。

一般情况这个用户名格式是:手机号@139.gd(广东的话后缀是gd,其他省份就不知道了)。密码一般是手机号后6位
谷歌浏览器按F12,打开开发者工具,根据以下步骤操作应该就可以看到密码了

再不行可以拨打移动客服查询用户名和密码。
3. 新建新的协议
把原来带INTERNET的协议删除

新建新的连接

选择IPV4/IPV6,桥接模式

LAN端口就是路由器连接端口,路由器一般连在网口1上。因为这个口是千兆端口。

选择VLAN ID

填写之前的MTU

 

 

最后不要忘记保存

然后要把光猫的WLAN关闭,因为我们用的路由器不需要光猫的WLAN功能

改成桥接后再连接的话,光猫会连接不上去。要想连接的话,需要把电脑和光猫连接在一起,配置电脑的静态IP为192.168.0.0/24这个网段。这样才能进入光猫的管理界面。

4. 路由器拨号
各个路由器的拨号都不太一样,网上百度即可

搞完即可正常上网!!!

5. 测网速
用https://www.speedtest.net/测试网络速度

相比之前的10-20的download Mbps,已经好多了。

 

兮杰
关注

————————————————
版权声明:本文为CSDN博主「兮杰」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Saykuray/article/details/107361515

测试 Cloudflare CDN 延迟和速度,自选优选最快 IP (v4+v6)!

「原创」测试 Cloudflare CDN 延迟和速度,自选优选最快 IP (v4+v6)!

「原创」

国外很多网站都在使用 Cloudflare CDN,但分配给中国访客的 IP 并不友好。虽然 Cloudflare 公开了其所有 IP 段 ,但想要在这么多 IP 中找到适合自己的,怕是要累死,所以就有了这个软件。

该软件可以批量测试 Cloudflare CDN 延迟和速度,获取自选 优选最快 IP (IPv4+IPv6)!

开源项目:https://github.com/XIU2/CloudflareSpeedTest (好用的话点个⭐鼓励一下叭~


快速使用

  1. 下载编译好的可执行文件 [蓝奏云] / [Github] 并解压。
  2. 双击运行 CloudflareST.exe 文件(Windows),等待测速完成…

手机上独立运行 CloudflareST 测速的简单教程:AndroidIOS
建议测速时避开晚上高峰期(20:00~24:00),否则测速结果会与其他时间相差很大…

测速完毕后,会直接显示最快的 10 个 IP,示例:

IP 地址           已发送  已接收  丢包率  平均延迟  下载速度 (MB/s)
104.27.200.69     4       4       0.00    146.23    28.64
172.67.60.78      4       4       0.00    139.82    15.02
104.25.140.153    4       4       0.00    146.49    14.90
104.27.192.65     4       4       0.00    140.28    14.07
172.67.62.214     4       4       0.00    139.29    12.71
104.27.207.5      4       4       0.00    145.92    11.95
172.67.54.193     4       4       0.00    146.71    11.55
104.22.66.8       4       4       0.00    147.42    11.11
104.27.197.63     4       4       0.00    131.29    10.26
172.67.58.91      4       4       0.00    140.19    9.14
...

# 因为默认下载测速地址的文件大小只有 300MB,如果你速度太快的话,测速结果可能会低于实际速度。
# 官方 500MB (可自定义大小) 下载测速地址:https://speed.cloudflare.com/__down?bytes=500000000
# 因为每次测速都是在每个 IP 段中随机 IP,所以每次的测速结果都不可能相同,这是正常的!

# 软件是先 延迟测速并按从低到高排序后,再从 最低延迟的 IP 开始下载测速的,所以:

测速结果第一行就是既下载速度最快、又平均延迟最低的最快 IP!至于拿来干嘛?取决于你~

完整结果保存在当前目录下的 result.csv 文件中,用记事本/表格软件打开,格式如下:

IP 地址, 已发送, 已接收, 丢包率, 平均延迟, 下载速度 (MB/s)
104.27.200.69, 4, 4, 0.00, 146.23, 28.64

大家可以按自己需求,对完整结果进一步筛选处理,或者去看一看进阶使用指定过滤条件


进阶使用

直接运行使用的是默认参数,如果想要测速结果更全面、更符合自己的要求,可以自定义参数。

C:\>CloudflareST.exe -h

CloudflareSpeedTest vX.X.X
测试 Cloudflare CDN 所有 IP 的延迟和速度,获取最快 IP (IPv4+IPv6)!
https://github.com/XIU2/CloudflareSpeedTest

参数:
    -n 200
        测速线程数量;越多测速越快,性能弱的设备 (如路由器) 请勿太高;(默认 200 最多 1000)
    -t 4
        延迟测速次数;单个 IP 延迟测速次数,为 1 时将过滤丢包的IP,TCP协议;(默认 4)
    -tp 443
        指定测速端口;延迟测速/下载测速时使用的端口;(默认 443 端口)
    -dn 10
        下载测速数量;延迟测速并排序后,从最低延迟起下载测速的数量;(默认 10)
    -dt 10
        下载测速时间;单个 IP 下载测速最长时间,不能太短;(默认 10)
    -url https://cf.xiu2.xyz/Github/CloudflareSpeedTest.png (默认 300MB)
    -url https://speed.cloudflare.com/__down?bytes=500000000 (官方 500MB 且可自定义大小)
        下载测速地址;用来下载测速的 Cloudflare CDN 文件地址,文件太小可能导致测速结果不准确;
    -tl 200
        平均延迟上限;只输出低于指定平均延迟的 IP,可与其他上限/下限搭配;(默认 9999 ms)
    -tll 40
        平均延迟下限;只输出高于指定平均延迟的 IP,可与其他上限/下限搭配;(默认 0 ms)
    -sl 5
        下载速度下限;只输出高于指定下载速度的 IP,凑够指定数量 [-dn] 才会停止测速;(默认 0.00 MB/s)
    -p 10
        显示结果数量;测速后直接显示指定数量的结果,为 0 时不显示结果直接退出;(默认 10)
    -f ip.txt
        IP段数据文件;如路径含有空格请加上引号;支持其他 CDN IP段;(默认 ip.txt)
    -o result.csv
        写入结果文件;如路径含有空格请加上引号;值为空时不写入文件 [-o ""](默认 result.csv)
    -dd
        禁用下载测速;禁用后测速结果会按延迟排序 (默认按下载速度排序)(默认 启用)
    -ipv6
        IPv6测速模式;确保 IP 段数据文件内只包含 IPv6 IP段,软件不支持同时测速 IPv4+IPv6;(默认 IPv4)
    -allip
        测速全部的IP;对 IP 段中的每个 IP (仅支持 IPv4) 进行测速;(默认 每个 IP 段随机测速一个 IP)
    -v
        打印程序版本+检查版本更新
    -h
        打印帮助说明

使用示例

在 CMD 中运行,或者把启动参数添加到快捷方式中。

# 命令行示例
# 注意:各参数均有默认值,只有不使用默认值时,才需要手动指定参数的值(按需选择),参数不分前后顺序。  
# 提示: Linux 系统只需要把下面命令中的 CloudflareST.exe 改为 ./CloudflareST 即可。  

# 测速 IPv4 时,需要指定 IPv4 数据文件(-f 默认值就是 ip.txt,所以该参数可以省略)
CloudflareST.exe -f ip.txt

# 测速 IPv6 时,需要指定 IPv6 数据文件( ipv6.txt ),需要加上 -ipv6 参数
CloudflareST.exe -f ipv6.txt -ipv6

# ——————————————————————

# 指定 IPv4 数据文件,不显示结果直接退出,输出结果到文件(-p 值为 0)
CloudflareST.exe -f 1.txt -p 0 -dd

# 指定 IPv4 数据文件,不输出结果到文件,直接显示结果(-p 值为 10 条,-o 值为空但引号不能少)
CloudflareST.exe -f 2.txt -o "" -p 10 -dd

# 指定 IPv4 数据文件 及 输出结果到文件(相对路径,即当前目录下,如含空格请加上引号)
CloudflareST.exe -f 3.txt -o result.txt -dd

# ——————————————————————

# 地址要求:可以直接下载、文件大小超过 200MB、用的是 Cloudflare CDN
CloudflareST.exe -url https://cf.xiu2.xyz/Github/CloudflareSpeedTest.png
# 因为默认下载测速地址的文件大小只有 300MB,如果你速度太快的话,测速结果可能会低于实际速度。
# 因此推荐使用 Cloudflare CDN 官方下载测速地址(500MB 且可自定义大小,即末尾数字):
CloudflareST.exe -url https://speed.cloudflare.com/__down?bytes=500000000

# 注意:如果下载测速地址为 HTTP 协议,记得加上 -tp 80(这个参数会影响 延迟测速/下载测速 时使用的端口)
CloudflareST.exe -tp 80 -url http://xxx/xxx

# ——————————————————————

# 指定测速条件:

# - 仅指定 [平均延迟上限] 条件

# 平均延迟上限:200 ms,下载速度下限:0 MB/s,数量:10 个( 可选)
# 即找到平均延迟低于 200 ms 的 IP,然后再按延迟从低到高进行 10 次下载测速
CloudflareST.exe -tl 200 -dn 10

# 如果没有一个 IP 平均延迟低于 200ms,那么不会输出任何内容。  


# - 仅指定 [平均延迟上限] 条件,且只延迟测速,不下载测速

# 平均延迟上限:200 ms,下载速度下限:0 MB/s,数量:不知道多少 个
# 即只输出低于 200ms 的 IP,且不再下载测速(因为不再下载测速,所以 -dn 参数就无效了)
CloudflareST.exe -tl 200 -dd


# - 仅指定 [下载速度下限] 条件

# 平均延迟上限:9999 ms,下载速度下限:5 MB/s,数量:10 个( 可选)
# 即需要找到 10 个平均延迟低于 9999 ms 且下载速度高于 5 MB/s 的 IP 才会停止测速
CloudflareST.exe -sl 5 -dn 10

# 没有指定平均延迟上限时,如果一直凑不够满足条件的 IP 数量,就会一直测速下去。    
# 所以建议同时指定 [下载速度下限] 和 [平均延迟上限],这样测速到指定延迟上限还没凑够数量,就会终止测速。


# - 同时指定 [平均延迟上限] + [下载速度下限] 条件

# 平均延迟上限、下载速度下限均支持小数(如 -sl 0.5)
# 平均延迟上限:200 ms,下载速度下限:5.6 MB/s,数量:10 个( 可选)
# 即需要找到 10 个平均延迟低于 200 ms 且下载速度高于 5 .6MB/s 的 IP 才会停止测速
CloudflareST.exe -tl 200 -sl 5.6 -dn 10

# 如果没有一个 IP 平均延迟低于 200ms,那么不会输出任何内容。  
# 如果没有一个 IP 下载速度高于 5.6 MB/s,那么就会和不指定 [下载速度下限] 条件一样输出结果。  
# 所以建议先不指定条件测速一遍,看看平均延迟和下载速度大概在什么范围,避免指定条件过低/过高!

# 因为Cloudflare 公开的 IP 段是回源 IP+任播 IP,而回源 IP是无法使用的,所以下载测速是 0.00。  
# 运行时可以加上 -sl 0.01(下载速度下限),过滤掉回源 IP(下载测速低于 0.01MB/s 的结果)。

# ——————————————————————

# 单独对一个或多个 IP 测速:
# 如果要单独对一个或多个 IP 进行测速,只需要把这些 IP 按如下格式写入到任意文本文件中,例如:1.txt
2.2.2.1
2.2.2.2.200
3.3.3.1/24
# 单个 IP 的话可以省略 /32 子网掩码了(即 2.2.2.1等同于 2.2.2.1/32)。
# 子网掩码 /24 指的是这个 IP 最后一段,即 3.3.3.1~3.3.3.255。

# 然后运行 CloudflareST 时加上启动参数 -f 1.txt 即可。

# 先进入 CloudflareST 所在目录,然后运行:
# Windows 系统(在 CMD 中运行)
CloudflareST.exe -f 1.txt

# Linux 系统
./CloudflareST -f 1.txt

# 对于 1.0.0.1/24 这样的 IP 段只会随机最后一段(3.3.3.1~255),如果要测速该 IP 段中的所有 IP,请加上 -allip 参数。

# ——————————————————————

# 快捷方式示例(右键快捷方式 - 目标)

# 如果要不输出结果文件,那么请加上 -o " ",引号里的是空格(没有空格会导致该参数被省略)。
D:\ABC\CloudflareST\CloudflareST.exe -n 500 -t 4 -dn 20 -dt 5 -o " "

# 如果文件路径包含引号,则需要把启动参数放在引号外面,记得引号和 - 之间有空格。
"D:\Program Files\CloudflareST\CloudflareST.exe" -n 500 -t 4 -dn 20 -dt 5 -o " "

一劳永逸加.速所有使用 Cloudflare CDN 的网站(不需要再一个个添加域名到 Hosts 了)

我以前说过,开发该软件的目的就是为了通过改 Hosts 的方式来加.速访问使用 Cloudflare CDN 的网站。但一个个添加域名到 Hosts 实在太麻烦了,于是我就找到了个一劳永逸的办法!

可以看这个 还在一个个添加 Hosts?完美加.速所有使用 Cloudflare CDN 的网站方法来了!

自动更新 Hosts

考虑到很多人获得最快 Cloudflare CDN IP 后,需要替换 Hosts 文件中的 IP。

可以看这个 Issues 获取 Windows/Linux 自动更新 Hosts 脚本


感谢项目

许可证

多个vip视频解析接口+一键使用方法+解析站源码


 

       QQ图片20170210153840.png

 

更新:下面的解析接口可能失效,更多vip视频解析,请使用我的影视站

http://vip.yiqikanba.cn/

之前看过一贴利用js实现一键使用vip视频解析接口的方法,以为是在福利吧看的,结果找了很久没再到,但js的代码我是保存下来了,昨晚将收集的视频接口整理了一下,弄成个书签,方便使用

链接: https://pan.baidu.com/s/1kV0ocy7 密码: z66q

使用方法: 将vip.html导入你的浏览器书签,然后使用,不会的看图
(接口能不能用自测,我只测了爱奇艺)
1.jpg
2.jpg
3.jpg
另外,如果你用好的接口,可以自己添加到书签方便使用
用浏览器收藏夹的书签,浏览器-收藏夹-添加收藏,名字随便起一个,网址写javascript:window.location = ‘http://api.47ks.com/webcloud/?v=‘+window.location.href
红色部分是解析接口可以自行替换,使用的时候就是在播放页面点一下书签
如果你添加收藏时找不到填网址的地方,就先随便保存一个书签,然后编辑书签
 vip.html书签地址 链接: https://pan.baidu.com/s/1kV0ocy7 密码: z66q

本来就想写到这里,想想还是把自己收藏的源码也发出来吧,有在福吧下载,有朋友分享的

源码的接口请自行更换,有没有广告自测

源码一: 链接: https://pan.baidu.com/s/1i4RgwtR 密码: xkmp

源码二:链接: https://pan.baidu.com/s/1pKTBT3P 密码: bivg

 源码三:链接: https://pan.baidu.com/s/1eRWCf6q 密码: k939
 源码四:链接: https://pan.baidu.com/s/1kVRYzND 密码: bucp
 源码五:链接: https://pan.baidu.com/s/1slsAsWX 密码: zn7f

我的解析网站:http://vip.or2.xyz/

正文到此结束

免费看netfix电影网站:

免费看netfix电影网站:

直接google搜索网站名字即可)

1.FMOVIES: https://fmovies.to/

2.4K电影网:http://www.4k6.net/

3.YaNETFLIX: https://yanetflix.com/

4.MAGEDN影院:https://loli.magedn.com/

5.唐人街影院:https://ouleyingyuan.tangrenjie.tv/vo…

6.独播库:https://duboku.su/

7.真不卡影院:http://www.zhenbuka.fun/

8.片库:https://m.pianku.li/

9.555电影网:https://www.o8tv.com/

10.欧华影院:https://ouhua.tv/

11.多多电影网:https://dd520.cc/

12.爱尚影视:http://www.ouhvod.com/

mint和manjaro哪个稳定?

我感觉都好,两个我都用过,Debian系列很出名的两个系统就是Ubuntu和mint。Redhat系列很出名的两个系统是CentOS和Fedora。

然后就是Arch Linux系列了,优秀的archlinux衍生系统就要数Manjaro了,之前用过好一段时间的manjaro,manjaro有好多的桌面,有kde桌面,gnome桌面,xfce桌面等等,个人更喜欢kde。我还装过安装过程困难的Arch Linux。

我个人觉得Arch Linux比Redhat和Debian系列都好,有以下几点:第一,Arch的包管理,第二,Arch有用户社区(就是AUR)开发的很多东西,基本上你需要的,都有,第三,Arch和Manjaro,你可以用到最新的Linux内核,Linux内核目前都5.2了,而其他Linux一般都还是4.X的版本,有的甚至是3.X的版本,第四,Arch的官方文档(就是Archwiki)吊打其他所有Linux的文档。

Arch的缺点就是滚动更新,经常会滚挂,所以manjaro是一个很好的替代方案,基于Arch开发的manjaro很优秀,我建议你选manjaro。

这些图你好好研究研究吧,很有用的,图中介绍了整个操作系统的由来。

VPS常用脚本

常用脚本

服务器解锁Netflix检测

一键脚本检测你的vps是否解锁Netflix

服务测试脚本

购买vps必备的几个测试脚本,都是一键脚本

Cloudflare反代加速

垃圾vps能有一定提速效果可以一试

基于Xray的七合一版本

支持vless、vmess、Trojan、Trojan-go

iperf测速软件的使用

大佬们都在用的vps直连测速软件

V贰rayvless一键脚本

最新协议,下一代科学上网终极协议

V贰ray一键脚本

小白特别适用的V贰ray搭建脚本

iptablesUtils中转脚本

自己在用的推荐的中转脚本,支持IP中转和ddns中转

trojan-go源码

一直在维护的版本,推荐使用

Linux一键虚拟内存

Linux VPS一键添加/删除Swap

trojan一键版

trojan多用户管理部署程序,一键脚本

v2-uitu面板

一个全新的多协议多用户v2ray面板

一键网页版speedtest测速搭建

使用 Docker 一键安装 HTML5 Speedtest

GCP实例的密码与root用户登陆

让gcp能通过shell工具登陆

Frps服务端一键配置脚本

可以让你在外也能控制家中电脑

流媒体实时翻译插件

可以实时翻译Netflix等在线流媒体

机场节点批量测速

一键批量节点测速

利用Cloudflare屏蔽大陆IP访问

无需代码就能指定封某国家或地区IP

服务器常用脚本工具包

小白必备,主流科学上网以及服务器优化的各种脚本合辑

Docker常用命令

常用的docker命令

Cloudflare WARP 一键配置脚本

一键解决Netflix解锁问题

ehco一键脚本

一个中转一键脚本

软路由

N1和HK1精简版固件

云编译自动最新编译固件

N1新版固件53+o安装与在线升级

最新版的是否需要一直插着U盘呢?

s905x3刷机代码

性价比超过N1的电视盒子

N1盒子固件编译

从环境搭建,到固件本地编译云编译,再到打包

红米ac2100刷机工具包

除了刷机包,还有文字教程,视频教程看我的YouTube

N1盒子固件

包括刷机文件,以及最新固件

软路由搭建教程

最便宜的软路由搭建方案

armbian+openwrt手动升级内核

自己手动升级,无需刷机

/164.html

openwrt项目仓库

YouTube 详细统计信息详解

Video ID / sCPN :每个视频独特的、独有的ID / 用于识别问题的字符串(开发人员适用)

Viewport / Frames:当前播放窗口的分辨率 / 视频帧数的变化情况(由于主机性能的原因导致的丢帧数)

Current / Optimal Res:视频的解析度 / 最佳解析度

Volume / Normalized:当前音量百分比 / 实际输出音量百分比(与YouTube标准音量的响度差距)

Codecs:视频类型 / 格式

Color:视频色域

Host:为您推播流媒体的YouTube服务器主机名

Connection Speed:视频的加载速度,也就是大家常参考的数字,这个数字并不是很准确,由于YouTube使用的是小数据包、高频发送次数的调度方案,所以在延迟服务器上这个数字会很大。高延迟速率的链接速率是明显偏小的。(状态条为蓝色,加载无压力)

Network Activity:网络连接速度(状态条为蓝色,连接无压力。已经缓存完全后,为黑色)

Buffer Health:已缓存的视频时长(假如断开网络,我们还能观看的时长)

Mystery Text:字母“ s”后的数字代表播放器的状态代码(例如:s:4 –> video paused)

Kbps(千比特每秒)又称千比特率,指的是数字信号的传输速率,也就是每秒钟传送多少个千位的信息(k表示千,kb表示的是多少千个位),也可以表示网络的传输速度。为了在直观上显得网络的传输速度较快,一般公司都使用kb(千位)来表示。如果是大写B的kBps,则表示每秒传送多少千字节。1kByte/s=8kbit/s(一般简写为1kB/s=8kb/s)。

实际网速计算公式:Connection Speed÷(1024*8)=实际速度 MB/s

例如说明:
30000÷(1024*8)=3.662109375 大约就是 3.6MB/s
说明此时你连接VPN后的速度大约在3.6MB/s左右。

  • Mbps —-> Milionbit pro second(百万位每秒)
  • Kbps —-> Kilobit pro second(千位每秒)
  • bps —-> bit pro second(位每秒)
  • bit —-> 通常用 b 表示
  • MB —-> 百万字节(兆字节)
  • KB —-> 千字节
  • B —-> 字节
  • 1 Mbps = 1000 Kbps
  • 1 Kbps = 1000 bps
  • 1 MB = 1024 KB
  • 1 KB = 1024 B
  • 1 B = 8 b —-> B表示字节、b表示位每秒
  • 例如:

    70000 Kbps = (70000 * 1000) bps = 70000000 bps

    70000000 bps = (70000000 / 8) B = 8750000 B

    8750000 B = (8750000 / 1024) KB = 8545 KB

    8545 KB = 8.345 MB

    也就是说,70000 Kbps 约等于 8.345 MB

Google Drive网盘文件直链获取一键脚本

这篇文章主要向大家介绍Google Drive网盘文件直链获取一键脚本,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

 

说明:本脚本能够将Google Drive网盘的文件分享连接或者文件ID变成直链,方便咱们在不少状况下调用。只支持文件分享,不支持文件夹。文件分享ID2648位。nginx

使用

一、需求shell

wget、grep、cat、head  #系统通常都有,Centos 7可能要安装wget

二、下载脚本bash

wget --no-check-certificate -qO /usr/local/bin/gdlink 'https://www.moerats.com/usr/shell/gdlink.sh' && chmod a+x /usr/local/bin/gdlink 

三、使用方法
注意: 获取的分享连接权限为”知道连接的任何人“。app

#Work with share link/使用分享连接方式
gdlink 'https://drive.google.com/open?id=0B8SvBXZ3I5QMcUduTMJEanRkMzQ'

#Work with file id/使用文件ID方式
gdlink '0B8SvBXZ3I5QMcUduTMJEanRkMzQ'
 
#download with share link/使用分享连接方式直接使用wget下载连接
##可将其中./download改为本身须要的文件名或文件绝对路径
gdlink 'https://drive.google.com/open?id=0B8SvBXZ3I5QMcUduTMJEanRkMzQ' |xargs -n1 wget -c -O ./download

 

四、调用场景
好比该DD教程:Linux VPS无限制一键全自动DD安装Windows脚本。工具

先获取到谷歌网盘里的DD镜像连接google

https://drive.google.com/open?id=0B8SvBXZ3I5QMcUduTMJEanRkMzQ

调用该分享连接。(将文件ID替换为本身的便可)spa

#Work with share link/使用分享连接方式
bash DebianNET.sh -dd "$(echo "https://drive.google.com/open?id=0B8SvBXZ3I5QMcUduTMJEanRkMzQ" |xargs -n1 bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/gdlink.sh'))"
 
#Work with file id/使用文件ID方式
bash DebianNET.sh -dd "$(echo "0B8SvBXZ3I5QMcUduTMJEanRkMzQ" |xargs -n1 bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/gdlink.sh'))"

 

网盘直链获取工具也能够参考下面的网址3d

https://link.gimhoy.com/code

 
实例下载:

[root@iZj6c9ev4k7bawyw8s7nljZ ~]# wget https://link.gimhoy.com/googledrive/aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2thZ2dsZS1kYXRhc2V0cy8xMzk2MzAvMzI5MDA2L2Zhc2hpb24tcHJvZHVjdC1pbWFnZXMtZGF0YXNldC56aXA/R29vZ2xlQWNjZXNzSWQ9d2ViLWRhdGFAa2FnZ2xlLTE2MTYwNy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSZFeHBpcmVzPTE1NTk4MDExMzImU2lnbmF0dXJlPVpSY1psUmdCYmRCVWViMGU3dGJQYnFXYmt5azFIUGNIZ1NGSGNobGNlVTBmdlJqell6bnQyVGhQQ0xNbmgzSUJZdDdOQ2U0dUtrbUJuN1Y2YzJIdVFBMzFPZ2pyT3ZhSkM5VnlscHZOQ1VVV1ZYYkJFZ2RKVzFMVTBjQzFnS2JUSnFIMG1wbGEzRnkwYktwaEZVZnp4TGtGbGZST3o2JTJGMlVET0F3c2tyUWtVT2FhMlcwd0JCaDdvWDl6WWpZSU15Nnh4M0FvMDFoM3pnNEpQSDQ0UE4yazdPUEcwU1RMZDVEME5CZnpHOXpYVjk2OWwlMkJ4d28zQnBuN1NQdk5vVkNKZERWbG5rY2N3WThKQWVaM0dlZFpWYURMdjVMRnJ1bXRNM08lMkZGOXRZM2pGRFVidUU4VklZTXBIMXJMbnZBcWdWaFRmUHR3ZEx0cmpxWHlKOGxOS0NEZyUzRCUzRA==.zip -c -O ./dataset.zip




[root@iZj6c9ev4k7bawyw8s7nljZ ~]# wget --no-check-certificate -qO /usr/local/bin/gdlink 'https://www.moerats.com/usr/shell/gdlink.sh' && chmod a+x /usr/local
[root@iZj6c9ev4k7bawyw8s7nljZ ~]#  gdlink 'https://drive.google.com/open?id=1lQZOIkO-9L0QJuk_w1K8-tRuyno-KvLK' |xargs -n1 wget -c -O ./train.zip
Warning: wildcards not supported in HTTP.
--2019-06-03 14:18:02--  https://doc-0c-4o-docs.googleusercontent.com/docs/securesc/ha0ro937gcuc7l7deffksulhg5h7mbp1/me71dile70q5qah4h97fnk7otq9tsnto/1559541ad
Resolving doc-0c-4o-docs.googleusercontent.com (doc-0c-4o-docs.googleusercontent.com)... 216.58.220.193, 2404:6800:4005:80d::2001
Connecting to doc-0c-4o-docs.googleusercontent.com (doc-0c-4o-docs.googleusercontent.com)|216.58.220.193|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘./train.zip’

    [                         <=>                                                                                    ] 10,633,411,064 12.2MB/s   in 13m 49s/s

2019-06-03 14:31:51 (12.2 MB/s) - ‘./train.zip’ saved [10633411064]

 

 

frp安装配置内网穿透最佳方案

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。GitHub地址

使用示例

根据对应的操作系统及架构,从 Release 页面下载最新版本的程序。

将 frps 及 frps.ini 放到具有公网 IP 的机器上。

将 frpc 及 frpc.ini 放到处于内网环境的机器上。

通过 ssh 访问公司内网机器

  1. 修改 frps.ini 文件,这里使用了最简化的配置:

 

# frps.ini
[common]
bind_port = 7000
  1. 启动 frps:

./frps -c ./frps.ini

  1. 修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x;

 

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
  1. 启动 frpc:

./frpc -c ./frpc.ini

  1. 通过 ssh 访问内网机器,假设用户名为 test:

ssh -oPort=6000 test@x.x.x.x

通过自定义域名访问部署于内网的 web 服务

有时想要让其他人通过域名访问或者测试我们在本地搭建的 web 服务,但是由于本地机器没有公网 IP,无法将域名解析到本地的机器,通过 frp 就可以实现这一功能,以下示例为 http 服务,https 服务配置方法相同, vhost_http_port 替换为 vhost_https_port, type 设置为 https 即可。

  1. 修改 frps.ini 文件,设置 http 访问端口为 8080:

 

# frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080
  1. 启动 frps;

./frps -c ./frps.ini

  1. 修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 web 服务对应的端口, 绑定自定义域名 www.yourdomain.com:

 

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com
  1. 启动 frpc:

./frpc -c ./frpc.ini

  1. 将 www.yourdomain.com 的域名 A 记录解析到 IP x.x.x.x,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。
  2. 通过浏览器访问 http://www.yourdomain.com:8080 即可访问到处于内网机器上的 web 服务。

转发 DNS 查询请求

DNS 查询请求通常使用 UDP 协议,frp 支持对内网 UDP 服务的穿透,配置方式和 TCP 基本一致。

  1. 修改 frps.ini 文件:

 

# frps.ini
[common]
bind_port = 7000
  1. 启动 frps:

./frps -c ./frps.ini

  1. 修改 frpc.ini 文件,设置 frps 所在服务器的 IP 为 x.x.x.x,转发到 Google 的 DNS 查询服务器 8.8.8.8 的 udp 53 端口:

 

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[dns]
type = udp
local_ip = 8.8.8.8
local_port = 53
remote_port = 6000
  1. 启动 frpc:

./frpc -c ./frpc.ini

  1. 通过 dig 测试 UDP 包转发是否成功,预期会返回 www.google.com 域名的解析结果:

dig @x.x.x.x -p 6000 www.google.com

转发 Unix域套接字

通过 tcp 端口访问内网的 unix域套接字(例如和 docker daemon 通信)。

frps 的部署步骤同上。

  1. 启动 frpc,启用 unix_domain_socket 插件,配置如下:

 

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[unix_domain_socket]
type = tcp
remote_port = 6000
plugin = unix_domain_socket
plugin_unix_path = /var/run/docker.sock
  1. 通过 curl 命令查看 docker 版本信息

curl http://x.x.x.x:6000/version

对外提供简单的文件访问服务

通过 static_file 插件可以对外提供一个简单的基于 HTTP 的文件访问服务。

frps 的部署步骤同上。

  1. 启动 frpc,启用 static_file 插件,配置如下:

 

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[test_static_file]
type = tcp
remote_port = 6000
plugin = static_file
# 要对外暴露的文件目录
plugin_local_path = /tmp/file
# 访问 url 中会被去除的前缀,保留的内容即为要访问的文件路径
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc
  1. 通过浏览器访问 http://x.x.x.x:6000/static/ 来查看位于 /tmp/file 目录下的文件,会要求输入已设置好的用户名和密码。

为本地 HTTP 服务启用 HTTPS

通过 https2http 插件可以让本地 HTTP 服务转换成 HTTPS 服务对外提供。

  1. 启用 frpc,启用 https2http 插件,配置如下:

 

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[test_htts2http]
type = https
custom_domains = test.yourdomain.com

plugin = https2http
plugin_local_addr = 127.0.0.1:80

# HTTPS 证书相关的配置
plugin_crt_path = ./server.crt
plugin_key_path = ./server.key
plugin_host_header_rewrite = 127.0.0.1
  1. 通过浏览器访问 https://test.yourdomain.com 即可。

安全地暴露内网服务

对于某些服务来说如果直接暴露于公网上将会存在安全隐患。

使用 stcp(secret tcp) 类型的代理可以避免让任何人都能访问到要穿透的服务,但是访问者也需要运行另外一个 frpc。

以下示例将会创建一个只有自己能访问到的 ssh 服务代理。

frps 的部署步骤同上。

  1. 启动 frpc,转发内网的 ssh 服务,配置如下,不需要指定远程端口:

 

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[secret_ssh]
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
  1. 在要访问这个服务的机器上启动另外一个 frpc,配置如下:

 

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[secret_ssh_visitor]
type = stcp
# stcp 的访问者
role = visitor
# 要访问的 stcp 代理的名字
server_name = secret_ssh
sk = abcdefg
# 绑定本地端口用于访问 ssh 服务
bind_addr = 127.0.0.1
bind_port = 6000
  1. 通过 ssh 访问内网机器,假设用户名为 test:

ssh -oPort=6000 test@127.0.0.1

点对点内网穿透

frp 提供了一种新的代理类型 xtcp 用于应对在希望传输大量数据且流量不经过服务器的场景。

使用方式同 stcp 类似,需要在两边都部署上 frpc 用于建立直接的连接。

目前处于开发的初级阶段,并不能穿透所有类型的 NAT 设备,所以穿透成功率较低。穿透失败时可以尝试 stcp 的方式。

  1. frps 除正常配置外需要额外配置一个 udp 端口用于支持该类型的客户端:

 

bind_udp_port = 7001
  1. 启动 frpc,转发内网的 ssh 服务,配置如下,不需要指定远程端口:

 

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[p2p_ssh]
type = xtcp
# 只有 sk 一致的用户才能访问到此服务
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
  1. 在要访问这个服务的机器上启动另外一个 frpc,配置如下:

 

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[p2p_ssh_visitor]
type = xtcp
# xtcp 的访问者
role = visitor
# 要访问的 xtcp 代理的名字
server_name = p2p_ssh
sk = abcdefg
# 绑定本地端口用于访问 ssh 服务
bind_addr = 127.0.0.1
bind_port = 6000
  1. 通过 ssh 访问内网机器,假设用户名为 test:

ssh -oPort=6000 test@127.0.0.1

功能说明

配置文件

由于 frp 目前支持的功能和配置项较多,未在文档中列出的功能可以从完整的示例配置文件中发现。

frps 完整配置文件

frpc 完整配置文件

配置文件模版渲染

配置文件支持使用系统环境变量进行模版渲染,模版格式采用 Go 的标准格式。

示例配置如下:

 

# frpc.ini
[common]
server_addr = {{ .Envs.FRP_SERVER_ADDR }}
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = {{ .Envs.FRP_SSH_REMOTE_PORT }}

启动 frpc 程序:

 

export FRP_SERVER_ADDR="x.x.x.x"
export FRP_SSH_REMOTE_PORT="6000"
./frpc -c ./frpc.ini

frpc 会自动使用环境变量渲染配置文件模版,所有环境变量需要以 .Envs 为前缀。

Dashboard

通过浏览器查看 frp 的状态以及代理统计信息展示。

注:Dashboard 尚未针对大量的 proxy 数据展示做优化,如果出现 Dashboard 访问较慢的情况,请不要启用此功能。

需要在 frps.ini 中指定 dashboard 服务使用的端口,即可开启此功能:

 

[common]
dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin
dashboard_user = admin
dashboard_pwd = admin

打开浏览器通过 http://[server_addr]:7500 访问 dashboard 界面,用户名密码默认为 admin

[图片上传失败…(image-1164e2-1562577679203)]

Admin UI

Admin UI 可以帮助用户通过浏览器来查询和管理客户端的 proxy 状态和配置。

需要在 frpc.ini 中指定 admin 服务使用的端口,即可开启此功能:

 

[common]
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin

打开浏览器通过 http://127.0.0.1:7400 访问 Admin UI,用户名密码默认为 admin

如果想要在外网环境访问 Admin UI,将 7400 端口映射出去即可,但需要重视安全风险。

身份验证

服务端和客户端的 common 配置中的 token 参数一致则身份验证通过。

加密与压缩

这两个功能默认是不开启的,需要在 frpc.ini 中通过配置来为指定的代理启用加密与压缩的功能,压缩算法使用 snappy:

 

# frpc.ini
[ssh]
type = tcp
local_port = 22
remote_port = 6000
use_encryption = true
use_compression = true

如果公司内网防火墙对外网访问进行了流量识别与屏蔽,例如禁止了 ssh 协议等,通过设置 use_encryption = true,将 frpc 与 frps 之间的通信内容加密传输,将会有效防止流量被拦截。

如果传输的报文长度较长,通过设置 use_compression = true 对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 cpu 资源。

TLS

从 v0.25.0 版本开始 frpc 和 frps 之间支持通过 TLS 协议加密传输。通过在 frpc.ini 的 common 中配置 tls_enable = true 来启用此功能,安全性更高。

为了端口复用,frp 建立 TLS 连接的第一个字节为 0x17。

注意: 启用此功能后除 xtcp 外,不需要再设置 use_encryption。

客户端热加载配置文件

当修改了 frpc 中的代理配置,可以通过 frpc reload 命令来动态加载配置文件,通常会在 10 秒内完成代理的更新。

启用此功能需要在 frpc 中启用 admin 端口,用于提供 API 服务。配置如下:

 

# frpc.ini
[common]
admin_addr = 127.0.0.1
admin_port = 7400

之后执行重启命令:

frpc reload -c ./frpc.ini

等待一段时间后客户端会根据新的配置文件创建、更新、删除代理。

需要注意的是,[common] 中的参数除了 start 外目前无法被修改。

客户端查看代理状态

frpc 支持通过 frpc status -c ./frpc.ini 命令查看代理的状态信息,此功能需要在 frpc 中配置 admin 端口。

端口白名单

为了防止端口被滥用,可以手动指定允许哪些端口被使用,在 frps.ini 中通过 allow_ports 来指定:

 

# frps.ini
[common]
allow_ports = 2000-3000,3001,3003,4000-50000

allow_ports 可以配置允许使用的某个指定端口或者是一个范围内的所有端口,以 , 分隔,指定的范围以 - 分隔。

端口复用

目前 frps 中的 vhost_http_port 和 vhost_https_port 支持配置成和 bind_port 为同一个端口,frps 会对连接的协议进行分析,之后进行不同的处理。

例如在某些限制较严格的网络环境中,可以将 bind_port 和 vhost_https_port 都设置为 443。

后续会尝试允许多个 proxy 绑定同一个远端端口的不同协议。

TCP 多路复用

从 v0.10.0 版本开始,客户端和服务器端之间的连接支持多路复用,不再需要为每一个用户请求创建一个连接,使连接建立的延迟降低,并且避免了大量文件描述符的占用,使 frp 可以承载更高的并发数。

该功能默认启用,如需关闭,可以在 frps.ini 和 frpc.ini 中配置,该配置项在服务端和客户端必须一致:

 

# frps.ini 和 frpc.ini 中
[common]
tcp_mux = false

底层通信可选 kcp 协议

底层通信协议支持选择 kcp 协议,在弱网环境下传输效率提升明显,但是会有一些额外的流量消耗。

开启 kcp 协议支持:

  1. 在 frps.ini 中启用 kcp 协议支持,指定一个 udp 端口用于接收客户端请求:

 

# frps.ini
[common]
bind_port = 7000
# kcp 绑定的是 udp 端口,可以和 bind_port 一样
kcp_bind_port = 7000
  1. 在 frpc.ini 指定需要使用的协议类型,目前只支持 tcp 和 kcp。其他代理配置不需要变更:

 

# frpc.ini
[common]
server_addr = x.x.x.x
# server_port 指定为 frps 的 kcp_bind_port
server_port = 7000
protocol = kcp
  1. 像之前一样使用 frp,需要注意开放相关机器上的 udp 的端口的访问权限。

连接池

默认情况下,当用户请求建立连接后,frps 才会请求 frpc 主动与后端服务建立一个连接。当为指定的代理启用连接池后,frp 会预先和后端服务建立起指定数量的连接,每次接收到用户请求后,会从连接池中取出一个连接和用户连接关联起来,避免了等待与后端服务建立连接以及 frpc 和 frps 之间传递控制信息的时间。

这一功能比较适合有大量短连接请求时开启。

  1. 首先可以在 frps.ini 中设置每个代理可以创建的连接池上限,避免大量资源占用,客户端设置超过此配置后会被调整到当前值:

 

# frps.ini
[common]
max_pool_count = 5
  1. 在 frpc.ini 中为客户端启用连接池,指定预创建连接的数量:

 

# frpc.ini
[common]
pool_count = 1

负载均衡

可以将多个相同类型的 proxy 加入到同一个 group 中,从而实现负载均衡的功能。

目前只支持 tcp 类型的 proxy。

 

# frpc.ini
[test1]
type = tcp
local_port = 8080
remote_port = 80
group = web
group_key = 123

[test2]
type = tcp
local_port = 8081
remote_port = 80
group = web
group_key = 123

用户连接 frps 服务器的 80 端口,frps 会将接收到的用户连接随机分发给其中一个存活的 proxy。这样可以在一台 frpc 机器挂掉后仍然有其他节点能够提供服务。

要求 group_key 相同,做权限验证,且 remote_port 相同。

健康检查

通过给 proxy 加上健康检查的功能,可以在要反向代理的服务出现故障时,将这个服务从 frps 中摘除,搭配负载均衡的功能,可以用来实现高可用的架构,避免服务单点故障。

在每一个 proxy 的配置下加上 health_check_type = {type} 来启用健康检查功能。

type 目前可选 tcp 和 http。

tcp 只要能够建立连接则认为服务正常,http 会发送一个 http 请求,服务需要返回 2xx 的状态码才会被认为正常。

tcp 示例配置如下:

 

# frpc.ini
[test1]
type = tcp
local_port = 22
remote_port = 6000
# 启用健康检查,类型为 tcp
health_check_type = tcp
# 建立连接超时时间为 3 秒
health_check_timeout_s = 3
# 连续 3 次检查失败,此 proxy 会被摘除
health_check_max_failed = 3
# 每隔 10 秒进行一次健康检查
health_check_interval_s = 10

http 示例配置如下:

 

# frpc.ini
[web]
type = http
local_ip = 127.0.0.1
local_port = 80
custom_domains = test.yourdomain.com
# 启用健康检查,类型为 http
health_check_type = http
# 健康检查发送 http 请求的 url,后端服务需要返回 2xx 的 http 状态码
health_check_url = /status
health_check_interval_s = 10
health_check_max_failed = 3
health_check_timeout_s = 3

修改 Host Header

通常情况下 frp 不会修改转发的任何数据。但有一些后端服务会根据 http 请求 header 中的 host 字段来展现不同的网站,例如 nginx 的虚拟主机服务,启用 host-header 的修改功能可以动态修改 http 请求中的 host 字段。该功能仅限于 http 类型的代理。

 

# frpc.ini
[web]
type = http
local_port = 80
custom_domains = test.yourdomain.com
host_header_rewrite = dev.yourdomain.com

原来 http 请求中的 host 字段 test.yourdomain.com 转发到后端服务时会被替换为 dev.yourdomain.com

设置 HTTP 请求的 header

对于 type = http 的代理,可以设置在转发中动态添加的 header 参数。

 

# frpc.ini
[web]
type = http
local_port = 80
custom_domains = test.yourdomain.com
host_header_rewrite = dev.yourdomain.com
header_X-From-Where = frp

对于参数配置中所有以 header_ 开头的参数(支持同时配置多个),都会被添加到 http 请求的 header 中,根据如上的配置,会在请求的 header 中加上 X-From-Where: frp

获取用户真实 IP

HTTP X-Forwarded-For

目前只有 http 类型的代理支持这一功能,可以通过用户请求的 header 中的 X-Forwarded-For 来获取用户真实 IP,默认启用。

Proxy Protocol

frp 支持通过 Proxy Protocol 协议来传递经过 frp 代理的请求的真实 IP,此功能支持所有以 TCP 为底层协议的类型,不支持 UDP。

Proxy Protocol 功能启用后,frpc 在和本地服务建立连接后,会先发送一段 Proxy Protocol 的协议内容给本地服务,本地服务通过解析这一内容可以获得访问用户的真实 IP。所以不仅仅是 HTTP 服务,任何的 TCP 服务,只要支持这一协议,都可以获得用户的真实 IP 地址。

需要注意的是,在代理配置中如果要启用此功能,需要本地的服务能够支持 Proxy Protocol 这一协议,目前 nginx 和 haproxy 都能够很好的支持。

这里以 https 类型为例:

 

# frpc.ini
[web]
type = https
local_port = 443
custom_domains = test.yourdomain.com

# 目前支持 v1 和 v2 两个版本的 proxy protocol 协议。
proxy_protocol_version = v2

只需要在代理配置中增加一行 proxy_protocol_version = v2 即可开启此功能。

本地的 https 服务可以通过在 nginx 的配置中启用 Proxy Protocol 的解析并将结果设置在 X-Real-IP 这个 Header 中就可以在自己的 Web 服务中通过 X-Real-IP 获取到用户的真实 IP。

通过密码保护你的 web 服务

由于所有客户端共用一个 frps 的 http 服务端口,任何知道你的域名和 url 的人都能访问到你部署在内网的 web 服务,但是在某些场景下需要确保只有限定的用户才能访问。

frp 支持通过 HTTP Basic Auth 来保护你的 web 服务,使用户需要通过用户名和密码才能访问到你的服务。

该功能目前仅限于 http 类型的代理,需要在 frpc 的代理配置中添加用户名和密码的设置。

 

# frpc.ini
[web]
type = http
local_port = 80
custom_domains = test.yourdomain.com
http_user = abc
http_pwd = abc

通过浏览器访问 http://test.yourdomain.com,需要输入配置的用户名和密码才能访问。

自定义二级域名

在多人同时使用一个 frps 时,通过自定义二级域名的方式来使用会更加方便。

通过在 frps 的配置文件中配置 subdomain_host,就可以启用该特性。之后在 frpc 的 http、https 类型的代理中可以不配置 custom_domains,而是配置一个 subdomain 参数。

只需要将 *.{subdomain_host} 解析到 frps 所在服务器。之后用户可以通过 subdomain 自行指定自己的 web 服务所需要使用的二级域名,通过 {subdomain}.{subdomain_host} 来访问自己的 web 服务。

 

# frps.ini
[common]
subdomain_host = frps.com

将泛域名 *.frps.com 解析到 frps 所在服务器的 IP 地址。

 

# frpc.ini
[web]
type = http
local_port = 80
subdomain = test

frps 和 frpc 都启动成功后,通过 test.frps.com 就可以访问到内网的 web 服务。

注:如果 frps 配置了 subdomain_host,则 custom_domains 中不能是属于 subdomain_host 的子域名或者泛域名。

同一个 http 或 https 类型的代理中 custom_domains 和 subdomain 可以同时配置。

URL 路由

frp 支持根据请求的 URL 路径路由转发到不同的后端服务。

通过配置文件中的 locations 字段指定一个或多个 proxy 能够匹配的 URL 前缀(目前仅支持最大前缀匹配,之后会考虑正则匹配)。例如指定 locations = /news,则所有 URL 以 /news 开头的请求都会被转发到这个服务。

 

# frpc.ini
[web01]
type = http
local_port = 80
custom_domains = web.yourdomain.com
locations = /

[web02]
type = http
local_port = 81
custom_domains = web.yourdomain.com
locations = /news,/about

按照上述的示例配置后,web.yourdomain.com 这个域名下所有以 /news 以及 /about 作为前缀的 URL 请求都会被转发到 web02,其余的请求会被转发到 web01。

通过代理连接 frps

在只能通过代理访问外网的环境内,frpc 支持通过 HTTP PROXY 和 frps 进行通信。

可以通过设置 HTTP_PROXY 系统环境变量或者通过在 frpc 的配置文件中设置 http_proxy 参数来使用此功能。

仅在 protocol = tcp 时生效。

 

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
http_proxy = http://user:pwd@192.168.1.128:8080

范围端口映射

在 frpc 的配置文件中可以指定映射多个端口,目前只支持 tcp 和 udp 的类型。

这一功能通过 range: 段落标记来实现,客户端会解析这个标记中的配置,将其拆分成多个 proxy,每一个 proxy 以数字为后缀命名。

例如要映射本地 6000-6005, 6007 这6个端口,主要配置如下:

 

# frpc.ini
[range:test_tcp]
type = tcp
local_ip = 127.0.0.1
local_port = 6000-6006,6007
remote_port = 6000-6006,6007

实际连接成功后会创建 8 个 proxy,命名为 test_tcp_0, test_tcp_1 ... test_tcp_7

插件

默认情况下,frpc 只会转发请求到本地 tcp 或 udp 端口。

插件模式是为了在客户端提供更加丰富的功能,目前内置的插件有 unix_domain_sockethttp_proxysocks5static_file。具体使用方式请查看使用示例

通过 plugin 指定需要使用的插件,插件的配置参数都以 plugin_ 开头。使用插件后 local_ip 和 local_port 不再需要配置。

使用 http_proxy 插件的示例:

 

# frpc.ini
[http_proxy]
type = tcp
remote_port = 6000
plugin = http_proxy
plugin_http_user = abc
plugin_http_passwd = abc

plugin_http_user 和 plugin_http_passwd 即为 http_proxy 插件可选的配置参数。

frp安装配置之内网穿透最佳方案

补坑来了,上次写过cpolar实现免费的内网穿透,但是最大的问题在于免费版不能用自己的域名,毕竟是第三方提供的服务器,免费的都有限制,刚好自己有一台阿里云的云服务器,所以比较完美的方法是用开源的frp自己搭建一个内网穿透服务器,这样就可以用阿里云的公网ip绑定自己的域名了。
或许有人会问,既然已经有了公网服务器为啥还要内网穿透?毕竟公网服务器都比较贵啊,楼主的阿里云服务器一年将近700块,才2g内存,40g存储,如果把想要跑的服务都跑在上面,很快就熬不住了,不如就拿来做内网穿透服务器,就起个转发功能,自己家里买个树莓派,安装linux系统,就可以跑各种东西了,也不用担心存储的问题。Frp是一款流行的跨平台开源免费内网穿透反向代理应用,支持 Windows、macOS与 Linux,支持 TCP、UDP 协议,支持http 和 https 协议,在公网服务器安装一个server端,内网服务器安装一个客户端,起到一个中转转发的作用,从而实现内网暴露到外网,实际就是一个反向代理转发器。

服务器端安装配置 Frp

FRP 使用 Go 语言开发,可以支持 Windows、Linux、macOS、ARM 等多平台部署。FRP 安装非常容易,只需下载对应系统平台的软件包并解压就可用了。这里以 Linux 系统为例:

 

export FRP_VERSION=0.32.1
sudo mkdir -p /etc/frp
cd /etc/frp
sudo wget "https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz"
sudo tar xzvf frp_${FRP_VERSION}_linux_amd64.tar.gz
sudo mv frp_${FRP_VERSION}_linux_amd64/* /etc/frp

截止写这篇文章为止,github上的最新版本是0.32.1,如果以后出了更新的版本只要改一下上面的版本号就行了,可以去https://github.com/fatedier/frp/查看最新版本信息。

FRP 默认提供了 2 个服务端配置文件,一个是简化版的 frps.ini,另一个是完整版的 frps_full.ini。初学者只需用简版配置即可,在简版 frps.ini 配置文件里,默认设置了监听端口为 7000,可以按需修改它。

需要将服务器的系统防火墙安全组放行,设置 7000 或修改过的对应端口的「允许入站和出站」,否则会一直连接不上的哦!!!这个切记!!

启动 FRP 服务端(非后台启动,未配置开机自启的情况下)

 

./frps -c ./frps.ini

如服务器使用 Win 系统,假设解压到 c:\frp 文件夹,那么只需这样启动:

 

c:\frp\frps.exe -c c:\frp\frps.exe

当然,这样的启动一般测试可以,生产环境多数为后台启动,需要配置后台运行和开机自启

使用systemctl配置后台运行和开机自启

 

sudo vim /lib/systemd/system/frps.service

在frps.service里写入以下内容

 

[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/etc/frp/frps -c /etc/frp/frps.ini

[Install]
WantedBy=multi-user.target

启动frps

 

sudo systemctl start frps
#打开自启动
sudo systemctl enable frps

如果要重启应用,sudo systemctl restart frps
如果要停止应用,sudo systemctl stop frps
如果要查看应用的日志,sudo systemctl status frps

如果启动时7000端口被占用

 

#查看端口号 
netstat -anp|grep 7000

 

#查看端口号
lsof -i:7000

 

#查看程序进程 
ps -ef|grep frps

得到进程id(pid)之后,杀掉进程

 

kill -9 进程号

至此服务端安装完毕并已经启动

配置frp客户端(内网机器上)

可以将 Frp 客户端安装在内网的 Windows 电脑、Linux 设备 比如树莓派 或者 NAS,甚至部分路由器等设备上。Linux 客户端的安装和启动与服务器端没有太多区别,只是对应运行程序是 frpc 而不是 frps。

如果是linux设置,安装和设置重启过程这里就省略了,和上面一样的,如果是windows电脑,Frp 是绿色程序,下载软件包回来解压后,启动 frpc.exe 即可。

在启动前,我们需要先修改配置文件frpc.ini
比如服务器的公网ip是1.2.3.4.5

 

[common]
server_addr = 1.2.3.4.5
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7001

[RDPDEEPIN]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7002

[RDPWINDOWS]
type = tcp
local_ip = 192.168.0.109
local_port = 3389
remote_port = 7004

[TOMCAT]
type = tcp
local_ip = 127.0.0.1
local_port = 8081
remote_port = 7003

如上,中括号里面的文字是标识,可以自定义,第一个server-port = 7000是服务器上的server端端口。
这里配置了四个应用,分别是
1.ssh远程登录22端口,映射公网的7001;
2.rdp协议的deepin桌面连接3389端口,映射公网的7002;
3.rdp协议的内网ip为192.168.0.109的windows3389端口,映射公网的7004;
4.tomcat应用,8081端口映射公网的7003

以上还可以配置更多端口,上面的7001到7004都要在服务器安全组放行

启动frp客户端

linux和上面写的服务端启动方法一样
windows假设已将 Frp 的客户端解压缩到 c:\frp 目录中,那么启动 Frp 客户端的命令就是:

 

c:\frp\frpc.exe -c c:\frp\frpc.ini

Linux 启动 Frp 客户端命令(非后台启动,未配置开机自启的情况下):

 

./frpc -c ./frpc.ini

启动之后看到 “start proxy success”字样就表示启动成功了。

远程访问

公网ip:7001就可以ssh连接到内网的deepin
公网ip:7002就可以rdp连接到内网的deepin桌面
公网ip:7004就可以rdp连接到内网的windows
公网ip或域名:7003就可以访问到内网的tomcat应用

这样真的就完美舒服了。

参考:https://www.iplaysoft.com/frp.html
https://blog.csdn.net/x7418520/article/details/81077652