内网穿透服务器

如今已经买了一个vps,以前的小树莓派就只能默默的待在角落吃会,因为树莓派是通过花生壳进行外网访问,一个月只有1G流量,带宽还是1Mbps,在实际生活当中当然是使用意义不大。就在前几天,老板问我为什么我们的门户网为啥访问的如此之慢,于是开始怀疑是不是我找的软件(wordpress)的问题,于是我仔细的看了一下,发现原来的服务器带宽太小,于是老板又问我,1M的带宽不小了啦,我只能说你忘记除以8了。于是出现了一个问题,该如何提高带宽又不需要花很多的钱,答案就是使用本地的服务器。公司里有一台的高性能服务器,但是由于一直没有公网ip,所以一直放在房间做本地测试使用。于是我想的使用过已有的外网来进行代理,转发内容到本地服务器。

一、什么是内网穿透

在网络中ip是唯一定位一台设备的逻辑地址,如果我们要在互联网中找到一台设备或访问一个网站,最终都需要通过ip来进行定位。
网络结构.png

二、NAT

NAT(Network Address Translation)即网络地址转换,NAT能将其本地地址转换成全球IP地址。
内网的一些主机本来已经分配到了本地IP地址(如局域网DHCP分配的IP),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。
通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用的IP地址空间的枯竭。
NAT不仅能解决了lP地址不足与共享上网的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

三、proxy

Proxy即代理,被广泛应用于计算机领域,主要分为正向代理与反向代理:

1.正向代理

最常用的实现就是翻墙,国内不能访问国外的google,只能通过国外的服务器进行代理访问,这就是典型的正向代理。
proxy.png

2.反向代理

简单的来说的就你发送的请求通过代理服务器分配给指定服务器,我们只需要知道代理服务器而不关系代理服务器最后会发请求发给谁。
proxy2.png

###四、frp搭建

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。frp开发文档

具体的介绍可以看文档,这里就不多说了。下载地址在这里:frp下载,如果觉得github上下载慢可以到这里下载

我们先简单的实现ssh外网连接功能。

  1. 下载压缩包,因为树莓派是armv7l,所以下载32位软件,服务器使用的是amd64。
    frp.png

frp_0.21.0_linux_amd64.tar.gz上传到服务器并解药到目录/usr/local/frp中。直接启动frps,在此不进行配置。

tar -zxvf frp_0.9.3_linux_amd64.tar.gz -C /usr/local/frp # 解压
./frps -c ./frps.ini # 启动程序

同样的在树莓派中也上传解压到/usr/local/frp中,这里就需要进行细微的改动。打开目录下的frpc.ini

# frpc.ini
[common]
server_addr = x.x.x.x # vps的ip
server_port = 7000
[ssh]type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 // 默认不修改

remote_port = 6000 表示通过远程frp服务器6000端口来访问客户端frpc

使用前需要对vps和树莓派端口的开启,是debain系统和ubuntu系统,都使用ufw工具开放端口

ufw status # 查看端口开放情况
ufw allow 6000 # 开放指定端口
ufw allow 7000 # 开放指定端口
ufw reload # 加载规则

使用站长端口检查工具可以查看vps的端口是否开放,如果没开,使用

sudo netstat -ntlp # 查看软件占用端口是否开着

之后启动树莓派frpc客户端

./frpc -c ./frpc.ini

你可以在vps服务器上看到多出了一个监听端口6000,如果没有,那么就是配置出现问题或端口没有开放

注:frp服务器可以配置仪表盘管理,在vps服务器下的frps.ini下添加

# 仪表盘端口,只有设置了才能使用仪表盘(即后台)
dashboard_port = 7500
# 仪表盘访问的用户名密码,如果不设置,则默认都是 admin
dashboard_user = admin
dashboard_pwd = admin

浏览器直接ip:7500 就能打开仪表盘(记得开放端口)
frp2.png

基本上配置就是这些,~~如果想反向代理二级域名就得在frps.ini中添加subdomain_host配置。~~在多人同时使用一个 frps 时,通过自定义二级域名的方式来使用会更加方便。在服务器上配置subdomain_host,之后在客户端只需要配置域名前缀就行,例如test,访问客户端的地址为test.{subdomain_host}
frp-config.png

在树莓派中添加subdomain
frp-config2.png

然后重启服务,在浏览器中敲test.mufeng.info就能访问服务器,当然,这个域名得进行解析。
parse域名.png


2019年9月28日

http中的frpc.ini配置

[common]
server_addr = 服务器ip
server_port = 7000

# [ssh]
# type = tcp
# local_ip = 127.0.0.1
# local_port = 22
# remote_port = 6000

[web]
type = http
local_port = 8080
subdomain = ng
# locations = test

服务端的配置

[common]
bind_port = 7000
dashboard_port = 7500
# 仪表盘访问的用户名密码,如果不设置,则默认都是 admin
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 8080

如果需要设置http的代理,可以现在frps.ini中添加配置项

vhost_http_port = 8080

否则启动frpc的时候会报以下错误

[web] start error: type [http] not support when vhost_http_port is not set

便于管理,我也把他放到docker上,我开始慢慢的喜欢上docker了,真的是方便,启动一些程序直接使用docker,不再使用nohup或写脚本,下载地址

docker pull cloverzrg/frps-docker # 拉取容器
mkdir conf
cp /usr/local/frp/frps.ini /root/docker/frp/conf # 把之前写好的server配置拷贝到统一的地方,便于管理
docker run -d --name frp-server -p 7000:7000 -p 7500:7500 -p 8080:8080 -v $PWD/conf:/conf --restart=always cloverzrg/frps-docker # 做好端口映射
docker ps # 查看启动情况,如果status 是up 说明启动成功

之后需要修改frp服务器的参数可以直接在conf目录下的 frps.ini 文件下修改

发布了0 篇原创文章 · 获赞 0 · 访问量 94

猜你喜欢

转载自blog.csdn.net/qq_34178764/article/details/103451117