内网穿透是我们在进行网络连接时的一种术语,也叫做NAT穿透,即在计算机是局域网内的时候,外网与内网的计算机的节点进行连接时所需要的连接通信,有时候就会出现内网穿透不支的情况。内网穿透的功能就是,当我们在端口映射时设置时,内网穿透起到了地址转换的功能,也就是把公网的地址进行翻译,转成为一种私有的地址,然后再采用路由的方式ADSL的宽带路由器,具有一个动态或者是固定的公网IP,最后ADSL直接在 交换机 上,这样所有的电脑都可以共享上网。内网穿透除了可以实现内网之间机器的网络通信功通之外,还可以解决UDP中出现的数据传输不稳定问题。
简单说,就是A客户端要访问B客户端,通过一台服务器进行桥接,桥接有两种方式,一种是相互转发,另一个是告诉对方的地址,自己就当一个介绍人的角色。
frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。
frp 是一个可用于内网穿透的高性能的反向代理应用,分为服务端frps和客户端frpc,支持 tcp, udp, http, https 协议。
利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。
下面开始部署教程:
1:安装frp程序,可以在GitHub下载,也可以使用宝塔或者1panel的自带应用商店下载部署
2:部署后需修改配置文件
其中服务端frps如下格式:
vhostHTTPPort = 81 #服务端转发http的端口,如策略组未放行,需要放行。
vhostHTTPSPort = 444 #服务端转发https的端口,如策略组未放行,需要放行。
bindPort = 7000 #与客户端frpc联络的端口,请保持客户端与服务端一致
transport.maxPoolCount = 9999999999 #最大连接数,此条可以不用配置
auth.method = "token" #与客户端采用token的验证方式
auth.token = "xxxxxx" #token值
webServer.addr = "0.0.0.0" #客户端frps的web地址,0.0.0.0则代表公网ip
webServer.port = 7500 #客户端frps的web端口
webServer.user = "admin" #客户端frps的web登陆账号
webServer.password = "admin" #客户端frps的web登陆账号其中客户端frpc如下格式:
serverAddr = "1.2.3.4" #公网frps地址
serverPort = 7000 #与frps联络的端口,需一致
auth.method = "token" #与服务端采用token的验证方式
auth.token = "xxxxxx" #token值
transport.tcpMax = true
webServer.addr = "0.0.0.0" #服务端frpc的web地址,0.0.0.0则代表公网ip
webServer.port = 7400 #服务端frpc的web端口
webServer.user = "admin" #服务端frpc的web登陆账号
webServer.password = "admin" #服务端frpc的web登陆账号
[[proxies]] #项目抬头,必须有无涵义
name = "ssh" #隧道名称
type = "tcp" #隧道协议
localIP = "127.0.0.1" #本地ip
localPort = 22 #本地需要映射的端口
remotePort = 1234 #映射到公网机后的端口,此后就可以用公网IP:1234来ssh本地服务器
[[proxies]]
name = "宝塔"
type = "http"
localIP = "127.0.0.1"
localPort = 8888
customDomains = ["bt.xxxx.xx"] #其中映射http协议需填写域名,可以是公网ip,或者自备域名3.配置文件设置完后隧道就应该跑起来了,其中1panel的容器服务开机会自启,宝塔的手动配置自启如下
理论Linux通用,把frp以服务的形式跑起来,frps与frpc均是此操作,这里只演示frpc
首先创建此服务并编辑:
vim /etc/systemd/system/frpc.service编辑内容如下,保存退出:
[Unit]
#服务描述
Description=frpc service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
Restart=always
RestartSec=3
ExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc.toml #此目录可能与我不一致,需更改
[Install]
WantedBy=multi-user.target
重载systemctl命令:
systemctl daemon-reload 先运行服务,再查看状态:
#启动
sudo systemctl start frpc
#关闭
sudo systemctl stop frpc
#重启
sudo systemctl restart frpc
#查看状态
sudo systemctl status frpc设置开机自启:
sudo systemctl enable frpc接下来就可以重启实验啦!