服务器运维之网络穿透和转发

标签: 无 分类: 未分类 创建时间:2021-05-10 11:00:56 更新时间:2025-01-17 10:39:24

端口转发,适合在同一个网络中的多台机器,内网穿透主要用在不同的两个网络中进行转发。

参考文章:
【1】.内网代理转发工具总结 msf反弹木马、lcx、portmap、ssh端口转发、iptables 端口转发、firewall 端口转发;socks代理工具:reGeorg,reDuh,Tunna和Proxifier;能够进行多层代理的工具:Earthworm(又称ew)、Termite、venom、fuso;多功能型的代理工具:frp、iox;内网穿透工具:nps、ngrok
【2】.如何搭建一台永久运行的个人服务器? 这里也用到了 ngrok 进行的内网穿透。
【3】.内网穿透的好处和坏处

1.端口转发

配置了vpn之后,两个网络就可以作为内网进行连接了,但是还是有工作要做的,比如如果要通过外部端口访问内部的某个应用,那么就需要用到了端口转发工具了。windows上自带了端口转发工具。下面我列举了几个比较好的端口转发工具,至于速率如何,还需要自己进行验证。

windows自带的工具

这个直接使用就好了

1
2
3
4
5
6
# 将14941端口转发到10.8.0.6的80端口
netsh interface portproxy add v4tov4 listenport= 14941 connectaddress= 10.8.0.6 connectport= 80
# 查看端口转发
netsh interface portproxy show all
# 删除14941的端口转发
netsh interface portproxy delete v4tov4 listenport= 14941
参考文章:
1.利用云服务器通过OpenVPN将内网的地址发布到外网 (除了介绍了端口转发之外,还介绍了如何搭建openvpn连接虚拟专用网)
2.Linux端口转发的几种常用方法 (linux的端口转发工具)
3.Windows服务器配置端口转发的方法 Windows服务器端口转发配置,可以使用Windows自带的portproxy功能实现
4.Windows端口转发(Port Forwarding in Windows)
5.Windows自带的端口转发工具netsh使用方法 微软Windows的netsh是一个命令行脚本实用工具。使用netsh工具 ,可以查看或更改本地计算机或远程计算机的网络配置。
6.windows系统自带的端口转发工具:netsh

CCProxy

CCProxy除了实现常用的代理设置之外,还可以实现端口转发的功能,在设置界面的端口转发后面的E按钮,可以打开端口转发设置界面。设置目标地址,目标端口,以及本地监听端口,可以实现监听本地端口,然后转发到目标端口的功能。

CCProxy无限用户版序列号:JHEHIHCDDAHC 注册码:15f7f78febfaee55afeafefff7cb7fdfb3

参考文章:
1.Windows 和 Linux 平台下的端口转发工具 (Linux 下用过 iptables,rinetd;Windows 下用过某个防火墙的 NAT 功能、RemoteAnywhere 的端口重定向、FPipe,还有最近刚找到的 PassPort)
2.[转载]适用于Windows的5种最佳免费端口转发软件 (PCWintech、PortMapper、AUTAPF、UPnP PortMapper、PFConfig这些我都不知道没用过)
3.CCProxy 服务器端口映射原理 (突然在这里发现里CCProxy也能实现端口转发)
4.windows server 2008 r2 架设CCPROXY代理服务器无法工作的解决方案 (为了解决CCProxy总是启动不了的问题,在看这篇文章的时候,知道了FreeProxy这个软件)
5.安装ccproxy后,一直弹 cannot connect to the control service 怎么办
6.代理服务器CCProxy如何做端口映射

FreeProxy

参考文章:
1.FreeProxy代理服务器端软件介绍 之一 (FreeProxy安装和配置使用)

PortTunnel

这是一个端口转发工具,使用和配置都挺简洁的,就是指定监听端口,然后指定需要转发到的目标ip地址和端口。

这里不知道是不是我服务器的问题,对于几个端口不能使用,比如8000开头的几个端口,这个也没有深究,就放过了,使用了9000开头的端口进行转发。

Fpipe

参考文章:
1.FPipe端口转发 FPipe即forward pipe,在两个端口中间建立一个管道,来实现流量的转发,一般用于内网机器不能正常上网的情况,而且不需要考虑免杀,但是必须要有边界机器,它不仅支持TCP流量的转发,还支持UDP的。
2.FPipe 端口映射工具

PassPort

2.内网穿透

除了使用VPN之外,连接内网和外网,或者说是两个网络的可选的技术方案就是使用内网穿透功能,比较知名的有花生壳、nat123。

参考文章:
【1】.内网穿透 (nat123工具)
【2】.有哪些简单实用的端口映射(内网穿透)软件工具? (前几个有说是神卓网络的)
【3】.推荐5款最好用的内网穿透工具
【4】.端口转发&端口映射 (这里有说明什么时端口转发,以及端口映射的关系)
【5】.国产的内网穿透工具也很优秀,这10款工具推荐正在寻找的你! 1.cpolar;2.花生壳;3.SAKURA FRP;4.NATAPP;5.飞鸽;6.网云穿;7.闪库;8.内网云;9.快解析;10.nat132

frp

因为这个用的比较多,于是就单独开了一篇文章 服务器运维之Frp

ngrok

参考文章:
1.ngrok Spend more time programming. One command for an instant, secure URL to your localhost server through any NAT or firewall.

3.网络分流

nginx的作用是负载均衡,也就是把流量分配到压力不大的服务器上,端口转发的作用,也是把流量从一个端点,转发到另外的一个端点,是一对一的,现在有一个需求就是,能不能将端口转发的流量进行一对多呢?也就是从一个入口进来的tcp流量,可以转发到后面的多台服务器上,而不用更改原先的代码。根据这个要求,我找到了goreplay这个工具。

安装

首先安装golang,这个没有什么讲究的,就是下载,解压配置环境变量,和java安装是一样的。然后再去下载 goreplay , 有deb和rpm以及window版本,可以选择自己的平台进行安装。

使用

我这里使用了input-tcp进行8082的监听,然后转发到8099这个端口上,似乎并不成功。

1
2
3
4
5
# 转发tcp流量
gor --input-tcp :8082 --output-tcp "127.0.0.1:8099" --output-tcp "127.0.0.1:8101"

#
gor --input-raw 127.0.0.1:8082 --output-tcp "127.0.0.1:8099" --output-tcp "127.0.0.1:8101"
参考文章:
1.HTTP引流神器Goreplay详解【精译】
2.回放线上流量利器-GoReplay 这里写了四种引流方式:Nginx层流量复制,基于业务代码层的引流,基于访问日志回放,基于TCP/IP层的引流。
3.使用 GoReplay 进行 HTTP 流量复制 _ 从安装到使用,还是挺全的
4.流量回放工具之 Goreplay 安装及初级使用
5.goreplay 使用经验 使用过程中遇到的坑:1.如果 HTTP 请求不符合规范,可能会抓不到包。遇到过 HTTP 请求头里面的 Content-Length 不等于实际的 Body 大小,goreplay 认为其请求未结束。2.input-file 是单 goroutine 在跑,会有性能瓶颈。测试的时候,读取的 RPS 在 1.7w - 1.8w 左右,如果压测需求大于这个,需要开多个进程同时跑。

问题

(1) couldn’t load wpcap.dll
当我使用input-raw的时候,出现了这个问题。

【解决】
解决方案就是下载npcap,然后双击安装就可以了。

3.网云穿

综合比较下来,我选择尝试了小蚂蚁的网云穿,虽然每月需要手动激活,但是好在还有免费的额度。
价格:1299,10M,2条;1999,10M,3条;

(1) 注册登录
这个就是要用手机号注册,然后登录到控制台

(2) 配置隧道
在控制台上,注册或者管理隧道

(3) 下载客户端,启动客户端
这里我暂时用了mac的客户端,启动之后,会让输入令牌,将控制台的令牌输入进去就可以了。

windows客户端建议下载有界面的版本,无界面的版本按照教程的意思,是说只要修改文件名就可以不用输入令牌了,但是我尝试之后还是无效,需要输入令牌,而且安装为系统服务功能也不可用,没有注册成功。有界面版本的就好多了,可以配置相关的内容,还可以设置是否开机启动。

(4) 访问内容

(5) 卸载
因为配置了开机启动,所以每一次开机的时候,都会有这个东西产生,在控制面板里面也找不到卸载的地方,原先的配置文件也没有了,在界面中也找不到关闭开机启动的方法了。后来我干脆直接删除了这个文件夹,才算是完事了,但是肯定在系统的某一个地方,残留了文件,但是我又无法找到,就先算了吧。

后来我只能放弃了这个东西了,因为激活版,只能是TCP隧道,不支持http协议,每一个月都要激活一次,每一个月只有1G流量

参考文章:
1.几款免费内网穿透工具测评使用 小蚂蚁、网云穿、 闪库、花生壳
2.免费的几款内网穿透工具 Sunny-Ngrok、蜻蜓映射、natapp
3.群晖/猫盘等私有 NAS 使用网穿云进行内网穿透访问教程
4.网云穿内网穿透Mac版本使用教程
5.网云穿内网穿透Windows无界面版本使用教程 我使用了无界面的方式,按照说明修改了文件的名称,结果还是需要输入令牌,后来我尝试了安装为服务的形式,结果出现了文件复制失败的错误,后来我关掉重启,结果好像服务已经注册成功了,可以使用了。

问题

(1) Invalid Host header
打开穿透后的网站,显示上面的错误,不知道是我网站的问题,还是什么问题。但是我本地的网站是可以正常访问的啊。

【解决方法】
配置vue.config.js中的devServer,
v3版本配置

1
2
3
4
5
module.exports = {
devServer: {
disableHostCheck: true,
},
};

如果配置上面那个出现问题:Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options has an unknown property ‘disableHostCheck’. These properties are valid,需要配置v4版本配置

1
2
3
4
5
module.exports = {
devServer: {
allowedHosts: "all",
},
};

4.花生壳

除了网云穿,还有花生壳,感觉花生壳还是比较良心的,虽然也是1G流量,但是支持http协议。有一个缺点,就是不能自定义域名,这点还是挺头疼的。还有就是并发数,并发数最高是1000个,在花生壳的上下文中,它通常指的是在同一时间内,您的服务能够处理的同时TCP连接数。这个数值对于评估您的服务能够同时处理多少客户端请求非常重要。

价格:1299元,6M带宽,3条映射,300个并发;1899元,9M带宽,4条映射,600并发;2699,15M,6条;1899一年,9M。

还有一点,就是安装和卸载非常的方便,设置为开机启动项也很方便,不至于像网云穿一样,浪费了很多的时间。甚至卸载我都找不到地方。

参考文章:
【1】.花生壳实现内网穿透,获取公网IP?花生壳端口映射外网TCP测试 每次将一client断开后再连接,都会重新分配新的端口。

5.NAT123

号称是永久免费,不限流量。我感觉这个网站倒是挺low的,可能费用都用来研发了吧。

价格:386.9 ,全端口,最高5M;1182.6,全端口,最高10M,这个只是显示了一个区间,但是具体是不是能达到最高的还是要选配,这个不清楚。

参考文章:
【1】.nat123

6.Cpolar

在一篇专门的文章中写了

7.神卓互联

20M映射,3899元/年,500个并发数

参考文章:
1.内网穿透

7.性能问题

刚开始的时候,微辣实现功能,不会在乎性能的问题。但是实际上的话,还需要关注性能的,比如通过阿里云和frp进行内网测试,最大的速度是多少呢?老板想要知道的事到底如何才能进行配置呢?

关于速度的说明:由于流量需要经过服务器转发,所以传输速度的快慢取决于服务器的下行带宽和客户端的上行带宽,通常家用宽带的上行带宽较低,限制了出口的速度。

8.穿透方案

如果要选择内网穿透,还有服务器,我最近思考了以下方案,一个就是自建中转服务器,使用 frp 进行中转,另外就是购买相关的服务。

方案一,cploar内网穿透
选择Cploar,NAS10M套餐,五个保留自定义域名,6个TCP地址,2个在线cpolar进程每个进程20个隧道,并发数360个,还可以补差价升级到20M,其他的和10M套餐一样的。同时搭配了生态环境局的公共服务区的服务器作为辅助。

方案二,电信云服务器
选择电信的 4C8G 40G,20M带宽,进行端口转发,一年 1577 + 3590 = 5167,三年:2454+6336=8790。还有 4C16G 的机器,一年2093元,三年3229.70元,加上20M的带宽,三年9565这么多。另外就是独享10M带宽,一年1570.80元,三年 2772元

方案三,花生壳内网穿透
选择花生壳内网穿透臻享版,25M带宽,8个映射数,一年 3699 元,三年 9987元。还有 2699 的方案,15M带宽,6个映射。1899的9M带宽,4个映射数。

方案四,网穿云内网穿透
选择网穿云内网穿透旗舰版,20M带宽,两个映射数,一年3999,永久三条15M,3个映射数,9899。

方案五,阿里云升级带宽
阿里云升级带宽,固定带宽从10M升级到20M,一年就要 6,117.670 元。

参考文章:
【1】.使用Docker部署MinIO并结合内网穿透实现远程访问本地数据 这里就是用 cpolar 实现的内网穿透访问 minio 服务器的
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。