frp
准备:
一个具有公网ip的主机
官网:
https://open.dingtalk.com/document/resourcedownload/alibaba-cloud-frp-intranet-penetration-tool
https://gofrp.org/docs/setup/
搭建服务端
- 安装
wget https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz
tar -xvf frp_0.38.0_linux_amd64.tar.gz
mkdir /usr/local/frp
mv frp_0.38.0_linux_amd64/* /usr/local/frp/
- 配置
cd /usr/local/frp
vi frps.ini
[common]
bind_port = 7000
vhost_http_port = 80 #监听http的端口
[web-http]
listen_port=80 # 监听http的端口
# 尽量不要再配置文件中写注释……
- 启动(非控制台)
./frps -c ./frps.ini
- 静寂启动
# yum
yum install systemd
# apt
apt install systemd
# 新增脚本 frp_0.48.0_linux_amd64
vim /etc/systemd/system/frps.service
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.ini
[Install]
WantedBy = multi-user.target
- 启动命令
# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps
- 设置开机启动
systemctl enable frps
搭建客户端
windows http
下载
https://github.com/fatedier/frp/releases/tag/v0.48.0
修改配置文件(http)
[common]
server_addr = myfox.fun
server_port = 7000
[web-http]
type = http
local_port = 9081
remote_port = 80
local_ip = 127.0.0.1
custom_domains = myfox.fun
#尽量不要在配置文件中写注释
访问
http://myfox.fun/api-interfaces/services
修改配置文件(TCP)
代理oracle服务
[common]
# 公网服务端的 IP 地址
server_addr = 101.200.135.70
# 公网服务端的监听端口(与服务端 frps.ini 中的 bind_port 一致)
server_port = 7000
# 认证 token(与服务端 frps.ini 中的 token 完全一致)
token = "123456"
# Oracle 代理配置(自定义一个代理名称,如 oracle-tcp)
[oracle-tcp]
# 代理类型:TCP(Oracle 基于 TCP 协议)
type = tcp
# 内网 Oracle 服务的 IP(本地服务填 127.0.0.1,若在其他机器填对应 IP)
local_ip = 127.0.0.1
# Oracle 监听端口(默认 1521,若修改过填实际端口)
local_port = 1521
# 公网服务器上用于映射的端口(自定义,如 15210,需与服务端防火墙开放的端口一致)
remote_port = 1521
linux ssh
下载
frp_0.48.0_linux_amd64.tar.gz
修改配置文件
[common] server_addr = myfox.fun server_port = 7000 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000启动
./frpc -c ./frpc.ini
nodeJS
官网
https://theboroer.github.io/localtunnel-www/
使用
npm install -g localtunnel
lt --port 8000
密码
https://loca.lt/mytunnelpassword
显示的就是密码啦
cloudflare
方式一 临时
下载
下载之后,将文件放到path中,可以直接用命令行使用
https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/
登录
cloudflared tunnel login
创建隧道名
注意记录隧道生成的uuid
# 创建
cloudflared tunnel create my-tunnel
# 删除
cloudflared tunnel delete my-tunnel
开启服务
--url:本地服务地址(如http://127.0.0.1:3000、https://localhost:8443)
--hostname:你的 Cloudflare 域名(如app.yourdomain.com)
# 将本地8080端口的服务暴露到你的域名(需已添加到Cloudflare)
cloudflared tunnel --url http://localhost:8080 --hostname test.example.com
方式二 长期
1. 安装 Cloudflare CLI 工具(cloudflared)
- 访问 Cloudflare 官方下载页 下载 Windows 版本的
cloudflared - 解压后将
cloudflared.exe放入一个方便的目录(如C:\cloudflared) - 将该目录添加到系统环境变量
PATH中(便于在任意命令行窗口调用)
2. 登录 Cloudflare 账号
打开命令提示符(CMD)或 PowerShell,执行以下命令:
cloudflared tunnel login
这会自动打开浏览器,登录你的 Cloudflare 账号并授权。成功后会在 C:\Users\你的用户名\.cloudflared\ 目录下生成证书文件。
3. 创建隧道
cloudflared tunnel create <隧道名称>
例如:cloudflared tunnel create mytunnel
执行成功后,会显示隧道 ID 并在 .cloudflared 目录生成 JSON 配置文件(包含隧道密钥)。
4. 配置隧道
创建配置文件(如 config.yml),内容示例:
tunnel: <你的隧道ID>
credentials-file: C:\Users\你的用户名\.cloudflared\<隧道ID>.json
ingress:
- hostname: example.yourdomain.com # 你的域名(需已添加到Cloudflare)
service: http://localhost:8080 # 本地服务地址和端口
- service: http_status:404 # 未匹配的请求返回404
5. 将隧道与域名关联
cloudflared tunnel route dns <隧道名称> example.yourdomain.com
6. 启动隧道
cloudflared tunnel --config C:\Users\Administrator\.cloudflared\config.yml run <隧道名称>
7. 验证
访问 example.yourdomain.com 应该能看到你本地 http://localhost:8080 服务的内容。
iptables(未成功)
开启
打开
# 编辑内核配置文件
vi /etc/sysctl.conf
添加后保存
net.ipv4.ip_forward = 1
刷新服务
sysctl -p
设置代理
# 源地址转换
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 172.21.183.196:8080
# 目标地址转换
iptables -t nat -A POSTROUTING -d 172.21.183.196 -p tcp --dport 8080 -j SNAT --to-source 192.168.1.133
# 让本机发出的访问 localhost:8080 的请求也被转发到 A 服务器
iptables -t nat -A OUTPUT -p tcp --dport 8080 -d 127.0.0.1 -j DNAT --to-destination 172.21.183.196:8080
iptables -t nat -A OUTPUT -p tcp --dport 8080 -d 127.0.0.1 -j DNAT --to-destination 172.21.183.196:8080
# 允许转发流量
iptables -A FORWARD -p tcp -d 172.21.183.196 --dport 8080 -j ACCEPT
# 同时允许 A 服务器返回的流量
iptables -A FORWARD -p tcp -s 172.21.183.196 --sport 8080 -j ACCEPT