frp内网穿透搭建

内网穿透工具FRP部署

1、部署原因
在家里搭建了一套服务器做学习和测试使用,由于家里是联通的网络没有公网IP(电信自带公网IP、移动的公网IP最少,一分价钱一分货啦~~~),平时在外面没有办法SSH访问,所以打算用丐版的腾讯云服务器将端口暴露出来,方便在公司上班时摸鱼。
2、FRP简介
frp 是一个专注于内网穿透的高性能的反向代理应用。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,反向代理到处于内网的服务。 在此基础上,frp 支持 TCP, UDP, HTTP, HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。FRP官网、FRP GitHub地址
3、腾讯云服务器相关部署
腾讯云服务器选用1核 2GB 1Mbps 高性能云硬盘 网络:Default-VPC 的丐版云主机服务器(有公网IP就行)。

第一步:

安装包下载并解压缩,从 Github Release 页面下载最新版本。(选择自己合适的版本)

wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz

tar -zxvf frp_0.37.0_linux_amd64.tar.gz

云服务器做的是server端,所以可以将 frpc相关的全部删除,只保留frps相关的数据包。

第二部:服务端配置

服务端配置详细说明
我在这里直接修改了frps_full.ini这个参考文件,修改了监听地址、日志地址、客户端认证token和WEB_UI等相关配置,其他的配置不做修改。

[root@host-cloud conf]# cat frps_full.ini
[common]
bind_addr = 												#服务监听地址(腾讯云服务器的内网IP)
bind_port = 7000
bind_udp_port = 7001
kcp_bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
dashboard_addr = 											#服务监听地址
dashboard_port = 7500
dashboard_user = 											#WEB_UI用户
dashboard_pwd = 											#WEB_UI密码
enable_prometheus = true
log_file = /home/frp/logs/frps.log 		#日志地址
log_level = info
log_max_days = 3
disable_log_color = false
detailed_errors_to_client = true
authentication_method = token
authenticate_heartbeats = false
authenticate_new_work_conns = false
token = 															#客户端认证tocken
oidc_skip_expiry_check = false
oidc_skip_issuer_check = false
allow_ports = 2000-3000,3001,3003,4000-50000
max_pool_count = 5
max_ports_per_client = 0
tls_only = false
subdomain_host = frps.com
tcp_mux = true
udp_packet_size = 1500

基础配置

参数类型说明默认值可选值备注
bind_addrstring服务端监听地址0.0.0.0
bind_portint服务端监听端口7000接收 frpc 的连接
bind_udp_portint服务端监听 UDP 端口0用于辅助创建 P2P 连接
kcp_bind_portint服务端监听 KCP 协议端口0用于接收采用 KCP 连接的
frpcproxy_bind_addrstring代理监听地址同 bind_addr可以使代理监听在不同的网卡地址
log_filestring日志文件地址./frps.log如果设置为 console,会将日志打印在标准输出中
log_levelstring日志等级infotrace, debug, info, warn, error
log_max_daysint日志文件保留天数3
disable_log_colorbool禁用标准输出中的日志颜色false
detailed_errors_to_clientbool服务端返回详细错误信息给客户端true
heart_beat_timeoutint服务端和客户端心跳连接的超时时间90单位:秒
user_conn_timeoutint用户建立连接后等待客户端响应的超时时间10单位:秒
udp_packet_sizeint代理 UDP 服务时支持的最大包长度1500服务端和客户端的值需要一致tls_cert_file
tls_key_filestringTLS 服务端密钥文件路径
tls_trusted_ca_filestringTLS CA 证书路径

权限验证

参数类型说明默认值可选值备注
authentication_methodstring鉴权方式tokentoken, oidc
authenticate_heartbeatsbool开启心跳消息鉴权false
authenticate_new_work_connsbool开启建立工作连接的鉴权false
tokenstring鉴权使用的 token 值客户端需要设置一样的值才能鉴权通过
oidc_issuerstringoidc_issuer
oidc_audiencestringoidc_audience
oidc_skip_expiry_checkbooloidc_skip_expiry_check
oidc_skip_issuer_checkbooloidc_skip_issuer_check

管理配置

参数类型说明默认值可选值备注
allow_portsstring允许代理绑定的服务端端口格式为 1000-2000,2001,3000-4000
max_pool_countint最大连接池大小5
max_ports_per_clientint限制单个客户端最大同时存在的代理数00 表示没有限制
tls_onlybool只接受启用了 TLS 的客户端连接false

第三步:设置开机自启动

将system下的 frps.service和frps@.service放到 /usr/lib/systemd/system`目录下,具体配置如下

[root@host-cloud system]# cat frps.service
[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=root																											#执行用户
Restart=on-failure
RestartSec=5s
ExecStart=/home/frp/bin/frps -c /home/frp/conf/frps_full.ini	#执行命令+配置文件

[Install]
WantedBy=multi-user.target
=============================================
[root@host-cloud system]# cat frps@.service
[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=root																											#执行用户
Restart=on-failure
RestartSec=5s
ExecStart=/home/frp/bin/frps -c /home/frp/conf/frps_full.ini	#执行命令+配置文件

[Install]
WantedBy=multi-user.target	

设置开机启动

[root@host-cloud system]# systemctl daemon-reload
[root@host-cloud ~]# systemctl start frps.service
[root@host-cloud ~]# systemctl enable frps.service

配置腾讯云的安全组,打开对应的input 7000、7500端口、outpus 6000端口。
访问http://公网IP:7500

四、客户端服务部署

第一步:

安装包下载并解压缩,从 Github Release 页面下载最新版本。(选择自己合适的版本)

wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz

tar -zxvf frp_0.37.0_linux_amd64.tar.gz

云服务器做的是client端,所以可以将 frps相关的全部删除,只保留frpc相关的数据包。

第二部:配置文件

客户端配置详细说明
frpc配置文件

[root@host-machine frp]# cat conf/frpc.ini
[common]
server_addr = x.x.x.x 				#云服务器的IP公网IP
server_port = 7000

log_file = /home/frp/logs/frpc.log		#日志地址
log_level = info
log_max_days = 3

token = xxxxxxx								#服务端认证的token

admin_addr = 192.168.31.200		#服务器内网IP
admin_port = 7400
admin_user = fong
admin_pwd = qwer1234

pool_count = 5

tcp_mux = true

user = fong
login_fail_exit = true
protocol = tcp
tls_enable = true

[ssh]
type = tcp
local_ip = 192.168.31.200		
local_port = 22
remote_port = 6000

基础配置

参数类型说明默认值可选值备注
server_addrstring连接服务端的地址0.0.0.0
server_portint连接服务端的端口7000
http_proxystring连接服务端使用的代理地址格式为 {protocol}😕/user:passwd@192.168.1.128:8080 protocol 目前支持 http、socks5、ntlm
log_filestring日志文件地址./frpc.log如果设置为 console,会将日志打印在标准输出中
log_levelstring日志等级infotrace, debug, info, warn, error
log_max_daysint日志文件保留天数3
disable_log_colorbool禁用标准输出中的日志颜色false
pool_countint连接池大小0
userstring用户名设置此参数后,代理名称会被修改为 {user}.{proxyName},避免代理名称和其他用户冲突
dns_serverstring使用 DNS 服务器地址默认使用系统配置的 DNS 服务器,指定此参数可以强制替换为自定义的 DNS 服务器地址
login_fail_exitbool第一次登陆失败后是否退出true
protocolstring连接服务端的通信协议tcptcp, kcp, websocket
tls_enablebool启用 TLS 协议加密连接false
tls_cert_filestringTLS 客户端证书文件路径
tls_key_filestringTLS 客户端密钥文件路径
tls_trusted_ca_filestringTLS CA 证书路径
tls_server_namestringTLS Server 名称为空则使用server_addr
heartbeat_intervalint向服务端发送心跳包的间隔时间30
heartbeat_timeoutint和服务端心跳的超时时间90
udp_packet_sizeint代理 UDP 服务时支持的最大包长度1500服务端和客户端的值需要一致
startstring指定启用部分代理当配置了较多代理,但是只希望启用其中部分时可以通过此参数指定,默认为全部启用

权限验证

参数类型说明默认值可选值备注
authentication_methodstring鉴权方式tokentoken, oidc需要和服务端一致
authenticate_heartbeatsbool开启心跳消息鉴权false需要和服务端一致authenticate_new_work_conns
oidc_client_secretstringoidc_client_secret
oidc_audiencestringoidc_audience
oidc_token_endpoint_urlstringoidc_token_endpoint_url

第三步:开机自启

[root@host-machine systemd]# cat /usr/lib/systemd/system/frpc.service
[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/home/frp/bin/frpc -c /home/frp/conf/frpc.ini
ExecReload=/home/frp/bin/frpc reload -c /home/frp/conf/frpc.ini

[Install]
WantedBy=multi-user.target
=======================================================================
[root@host-machine systemd]# cat /usr/lib/systemd/system/frpc@.service
[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=idle
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/home/frp/bin/frpc -c /home/frp/conf/%i.ini
ExecReload=/home/frp/bin/frpc reload -c /home/frp/conf/%i.ini

[Install]
WantedBy=multi-user.target


重载配置并重启

[root@host-machine ~]# systemctl daemon-reload
[root@host-machine ~]# systemctl start frpc.service
[root@host-machine ~]# systemctl enable frpc.service

修改本地的SSH服务,禁止root登陆,只使用密钥登陆。

Port 22				# default port
#AddressFamily any		# listen ipv4 and ipv6
ListenAddress 192.168.31.200	# listen ipv4 ipaddress
#ListenAddress ::		# listen ipv6 ipaddress

HostKey /etc/ssh/ssh_host_rsa_key	# ssh rsa private key dir
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key	# ssh ecdsa private key dir
HostKey /etc/ssh/ssh_host_ed25519_key	# ssh ED25519 private key dir

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
LogLevel INFO			# log level

# Authentication:

LoginGraceTime 2m		# user auth max 2min
PermitRootLogin no		# allow root account SSH login,(test yes,product no)
StrictModes yes			#
MaxAuthTries 4			# maximum number of authentications allowed per connection
MaxSessions 20			# max connection

PubkeyAuthentication yes	# public key to verify
AuthorizedKeysFile	.ssh/authorized_keys		# public key to verify dir
PasswordAuthentication no		# Whether password authentication is allowed

客户端连接成功后,访问 http://公网IP:7500

5、如何登陆

ssh -oPort=6000 用户@x.x.x.x(公网IP)

frp 会将请求 x.x.x.x:6000 的流量转发到内网机器的 22 端口。

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Frp是一个常用的内穿透工具,而宝塔是一款简单易用的服务器管理面板。将宝塔与frp搭建结合可以实现内穿透的功能,下面是实现该功能的步骤: 1. 安装宝塔面板:通过wget命令下载宝塔面板的安装脚本,然后执行安装命令进行安装。安装完成后,通过浏览器访问服务器的IP地址,即可进入宝塔面板的登录页面。 2. 登录宝塔面板:在登录页面中输入用户名和密码,点击登录按钮即可登录到宝塔面板的控制台。 3. 添加站:在宝塔面板控制台内,点击“站”选项卡,然后点击“添加站”按钮。在添加站的页面中,填写站点名称、绑定域名等信息,并选择对应的站点目录。 4. 配置frp:在宝塔面板控制台内,点击“软件商店”选项卡,然后搜索并安装“frps”软件。安装完成后,点击“软件管理”选项卡,在列表中找到“frp”,点击“设置”按钮进行配置。 5. 配置frp参数:在frp配置页面中,填写服务器IP地址、远程端口等参数,并保存配置。然后点击“启动”按钮启动frp。 6. 完成内穿透:在PC端安装frp客户端,然后根据frp客户端的配置文档,配置客户端的参数。将客户端与服务器进行连接,即可完成内穿透。 通过以上步骤,我们可以通过宝塔与frp搭建一个内穿透的环境。这样就可以实现远程访问内服务器或应用的功能,方便了服务器管理与应用开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值