您的位置 首页 工具

frp工具使用教程-linux (内网渗透 内网穿透)

frp工具使用教程-linux (内网渗透 内网穿透)

服务端linux ,客户端linux

linux下frp实现内网穿透_linux frp-CSDN博客

 

1- 下载

快速练级:

wget https://gitee.com/wang-huamao/soft/raw/master/neiwang/frp_0.53.0_linux_amd64.tar.gz

 

备用连接:

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

进入文件夹,有两个名称文件frpc(c结尾代表client)和frps(s结尾代表server),分别是服务端程序和服务端配置程序。

需要将frpc拷贝至客户端,即内网服务器,或者在客户端直接下载也可以,客户端只需要使用frpc文件即可。

 

frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP,UDP,HTTP,HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。
市面上一些主流的内网穿透工具有:Ngrok,Natapp,花生壳,Ssh、autossh,Frp,Lanproxy,Spike。

这里介绍使用frp工具。
————————————————

 

2- 启动服务端

添加 frps.ini 文件

./frps -c frps.ini

3- windows 客户端配置

这里用win 的客户端来连接 Linux 上的 frp 服务

服务器需要开启 7000端口。

frpc.ini

# 客户端配置
[common]
#服务器ip    
server_addr = 8.130.78.133

 # 与frps.ini的bind_port一致
server_port = 7000
 # 与frps.ini的token一致
token = 12345678
 
 # 配置ssh服务, 也可以用来映射其他端口如3389
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
 # 这个remote_port端口自定义,配置完成后会在公网服务器开启6000端口,来映射内网主机3389端口
remote_port = 6001  
# 如果第3方连接 8.130.78.133:6000 , 则实际上是连接的内网主机的 22端口
 
 
 #socks5代理配置 ,一般这个用途比较多
[socks5]
type=tcp
plugin=socks5
 # socks代理账号密码,需要修改不要使用弱口令
plugin_user=admin
plugin_passwd=admin
 #映射到共外网服务器的端口
remote_port = 8000

 

4-linux 客户端

如果你是 想 ssh linux(局域网)可以参考如下:

frpc.ini

# 客户端配置
[common]
#服务器ip    
server_addr = 8.130.78.133

 # 与frps.ini的bind_port一致
server_port = 7000
 # 与frps.ini的token一致
token = 12345678
 
 # 配置ssh服务, 也可以用来映射其他端口如3389
[ssh_1]
type = tcp
local_ip = 127.0.0.1
local_port = 22
 # 这个remote_port端口自定义,配置完成后会在公网服务器开启6000端口,来映射内网主机3389端口
remote_port = 6001
# 如果第3方连接 8.130.78.133:6000 , 则实际上是连接的内网主机的 22端口

 

 

浏览器打开web管理界面,http://192.168.80.133:7500/,可查看端口映射相关情况

plugin_user=admin
plugin_passwd=admin

 

 

正常启动时没有报错的

如果报错:

 [ssh] start error: proxy [ssh] already exists

需要修改 frpc.ini 的中:

把[ssh] 改为 [ssh_1] 或者[ssh_ABC123],等其他命名,即可解决冲突问题。

其他错误:

[ssh_1] start error: port already used

解决办法:
远程端口被占用,换一个端口。

 

4:后台启动

对于正式环境,可以配置后台启动,并报存日志输出到相关文件。

服务端:

nohup  ./frps -c frps.ini > /usr/local/frp/frp.log 2>&1  &

客户端:

nohup ./frpc -c frpc.ini > /usr/local/frp/frp.log 2>&1  &

下面设置frp服务开机自启:

服务端设置:
进入文件夹:

cd /etc/systemd/system

创建启动文件:

vim frp.service

编写启动文件,其中启动路径是自己的路径:

[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp/frps -c /opt/frp/frps.ini
ExecReload=/opt/frp/frps reload -c /opt/frp/frps.ini

[Install]
WantedBy=multi-user.target

 

保存退出之后,设置开机自启:

systemctl start frp.service
systemctl enable frp.service

 

检查: lsof -i:7000

客户端开机自启:

[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.ini
ExecReload=/opt/frp/frpc reload -c /opt/frp/frpc.ini

[Install]
WantedBy=multi-user.targe

 

我的案例:

beian2v2G - 跳转10.0.0.199

8.130.78.133 , 60001

http://8.130.78.133:7500/

 

windows 开机启动配置:

windows将nginx 注册为windows服务(开机自启) : 连接

frpc-service.xml

<service>
  <!-- 服务ID。它应该在整个Windows系统中是唯一的-->
  <id>frpc-service</id>
  <!-- 在系统服务中显示的名称 -->
  <name>frpc-service</name>
  <!-- 服务描述 -->
  <description>frpc服务</description>
  
  <!-- 启动可执行文件的路径 -->
  <executable>D:\02-tools\vpn\frp\frp-windows\2-frp-windows-custom\frpc.exe </executable>
  <arguments>-c frpc.ini</arguments>
  <!-- 日志模式 -->
  <log mode="roll-by-size">
    <sizeThreshold>10240</sizeThreshold>
    <keepFiles>8</keepFiles>
  </log>
</service>

 

 

添加http 服务

服务端需要配置:

#服务器端配置
[common]
# frp监听的端口,默认是7000,可以改成其他的
bind_port = 7000

#web服务http接口,就是你打开网址时输入的端口号,因为80端口被占用,所以我使用了别的
vhost_http_port = 6004

# 授权码,请改成更复杂的,这个token之后在客户端会用到
token =12345678 
 
# frp管理后台端口,请按自己需求更改
dashboard_port = 7500
# frp管理后台用户名和密码,请改成自己的
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

 

也可以参考 其他的

vhost_http_port=80      #服务器监听80端口
vhost_https_port=443   #服务器监听443端口,Https

 

然后客户端的配置如下:

[web1]
type = http
local_ip = 127.0.0.1
# 我window上的虚拟机地址, 如果是本机的可以直接写 127.0.0.1 
local_port = 80
 # 这个网址需要在外部云服务器上绑定
custom_domains = ks1.k8sdashu.cn



[web2]
type = http
local_ip = 10.0.0.108
# 我window上的虚拟机地址, 如果是本机的可以直接写 127.0.0.1 
local_port = 30880
 # 这个网址需要在外部云服务器上绑定
custom_domains = ks.k8sdashu.cn

 

其他可以参考:

[web]                                              #暴露公司内网的git代码托管服务
type = http                                      #选择http类型
local_port = 88                                #gitlab本地监听地址,默认是80,需要修改gitlab配置为88或其他端口,以避免与内网nginx端口占用的冲突
custom_domains = git.domain.com   #外网域名,该域名可以在dns解析到xxx.xxx.xxx.xxx的外网服务器ip上,这样在外就可以通过域名访问公司内部服务         

[web2]                                            #暴露更多的公司内网测试环境服务
type = http
local_port = 80                                #nginx本地监听地址,外网进来的服务通过nginx匹配各种domain来区分请求,转发
custom_domains = test.domain.com

[web3]
type = http
local_port = 80
custom_domains = test2.domain.com

 

 

访问如图:

http://ks.k8sdashu.cn:6004/login

 

http://ks1.k8sdashu.cn:6004/

 

 

http://ks.k8sdashu.cn:6004/

./start.sh  client启动脚本如下:(server端类似)

 

#!/bin/sh

PID=`ps aux|grep frp|grep -v 'grep'|awk '{print $2}'`
if [ "$PID" = "" ]; then
 echo 'start frpc now.'
 ./frpc -c ./frpc.ini > c.log &
 sleep 2
 tail -n 20 c.log
 echo 'start finished'
else
 echo $PID 'stop frpc'
 kill -9 $PID
 ./frpc -c ./frpc.ini > client.log &
 echo 'start it now'
 sleep 2
 tail -n 20 client.log
 echo 'start finished'
fi

 

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章