内网穿透和frp配置
前言
由于 some 原因,接触到需要将内网虚拟机上的服务发布到公网上访问,于是有了这篇简单的文章。
原理:内网穿透
工具:frp
一、内网穿透是什么?
- 简要描述:
- 内网穿透:即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址(公网)和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。
- 详细信息见:内网穿透
二、NAT技术简单描述
-
知识点:有使用本地地址(私网IP地址)的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。
-
NAT详细描述:nat (网络地址转换协议)
-
查看内网主机公网IP地址:
curl -4 ip.sb # 查看公网IPv4地址 curl -6 ip.sb # 查看公网IPv4地址
三、开源内网穿透工具 frp
-
Github 地址: https://github.com/fatedier/frp
-
使用frp的前提:
- 一台拥有公网IP的服务器(或VPS),此处使用腾讯云服务器。
- 处于内网的且可访问外网的计算机(包括虚机、容器),此处为虚拟机。
-
frp服务端配置
-
腾讯云服务器上下载 frp。
地址:https://github.com/fatedier/frp/releases
arch # 查看服务器硬件结构类型,下载对应类型 frps。 # x86_64 本人腾讯云服务器为x86_64架构,下载 linux_386 对应包 wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_386.tar.gz tar -zxvf frp_0.37.1_linux_386.tar.gz cd frp_0.37.1_linux_386/
注意:下载慢可在虚拟上下载,然后使用
scp
指令上传到腾讯云服务器上(参见:https://blog.csdn.net/StepTp/article/details/120108025)。 -
配置
frps.ini
(以GitHub上示例,配置ssh 登录,端口为22)vim frps.ini [common] bind_port = 7000
-
启动。
./frps -c ./frps.ini
-
-
frp客户端配置
-
虚拟机上下载frp。
-
地址同上
arch # 查看虚拟机硬件结构类型,下载对应类型 frps。 # x86_64 本人虚拟机为x86_64架构,下载 linux_386 对应包 wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_386.tar.gz tar -zxvf frp_0.37.1_linux_386.tar.gz cd frp_0.37.1_linux_386/
-
配置
frpc.ini
vim frpc.ini # 文件配置 [common] server_addr = 腾讯云服务器IP server_port = 7000 # 端口对应frps.ini文件 [ssh] type = tcp local_ip = 虚拟机内网IP local_port = 22 # 虚拟机ssh端口为22 remote_port = 6000 # 使用腾讯云服务器端口做映射
-
启动。
./frpc -c ./frpc.ini
-
-
验证:ssh通过腾讯云服务器登录内网虚拟机
ssh -oPort=6000 root@腾讯云IP
此处以root用户,登录虚拟机,输入root对应虚拟机密码,成功登录。