内网穿透教程
本文介绍如何使用 FRP(Fast Reverse Proxy)工具实现内网穿透,包括配置 Azure 公网 IP、安装 Docker 和 FRP,以及在内网服务器上配置和运行 FRP 客户端。
一、配置公网 IP
1. 申请 Azure 公网 IP
- 登录到 Azure 门户。
- 创建一个新的虚拟机实例,建议使用1G内存的。
- 在虚拟机配置中,确保选择了一个公共 IP 地址。
- 完成虚拟机创建,并记下公共 IP 地址。
2. 安装 Docker
在 Azure 虚拟机上安装 Docker:
# 更新包列表并安装必要的软件包
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加 Docker APT 仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 更新包列表并安装 Docker
sudo apt-get update
sudo apt-get install -y docker-ce
3. 安装 FRP
1. 在 Azure 虚拟机上安装并配置 FRP:
# 创建frp文件夹
mkdir frp
cd frp
wget https://github.com/fatedier/frp/releases/download/v0.39.1/frp_0.39.1_linux_amd64.tar.gz
tar -xzf frp_0.39.1_linux_amd64.tar.gz
cd frp_0.39.1_linux_amd64
2. 创建并编辑 frps.toml 配置文件,frps.toml 配置文件如下:
[common]
bind_port = 7000
# Dashboard settings (optional)
dashboard_port = 7500
dashboard_user = "你的用户名"
dashboard_pwd = "你的密码"
# HTTP and HTTPS settings (optional)
vhost_http_port = 80
vhost_https_port = 443
# Log settings (optional)
log_file = "/frp/frps.log"
log_level = "info"
log_max_days = 3
token = "你的token"
注意Dashboard settings为登陆Dashboard的密码,token为连接公网需要的密码
3. 运行FRP服务器
sudo docker run --restart=always --network host -d -v /home/Xinhao/frp/frps.toml:/frp/frps.toml --name frps snowdreamtech/frps -c /frp/frps.toml
4. 如果修改了frps.toml 配置文件需要删除并重新运行FRP服务器
代码为:
sudo docker stop frps
sudo docker rm frps
sudo docker run --restart=always --network host -d -v /home/Xinhao/frp/frps.toml:/frp/frps.toml --name frps snowdreamtech/frps -c /frp/frps.toml
5. 开启Azure的端口
添加出站和入站规则,目标端口包括bind_port(7000)、dashboard_port(7500)、与内网进行通讯的端口(后面用)(8080)
6. 验证是否成功
在 Azure 虚拟机上运行命令sudo ss -tuln | grep 7000
,确保 FRP 服务器正在监听正确的端口
在浏览器中访问http://公网IP:dashboard_port/ ,输入Dashboard的账户和密码后可以访问
二、配置内网
1. 安装 FRP
在内网服务器上安装并配置 FRP 客户端:
1. 下载 并解压FRP:
srun -p mem --pty bash
mkdir frp
cd frp
wget https://github.com/fatedier/frp/releases/download/v0.39.1/frp_0.39.1_linux_amd64.tar.gz
tar -xzf frp_0.39.1_linux_amd64.tar.gz
cd frp_0.39.1_linux_amd64
2. 创建并编辑 frpc.ini 配置文件:
[common]
server_addr = 公网的IP
server_port = frps.toml中的bind_port(7000)
token = "frps.toml中的的token"
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 8080
server_port与frps.toml的bind_port对应,local_ip = 127.0.0.1指内网上的本机,local_port为连接内网的端口,remote_port是外网的端口,用于连接内网。
3. 启动与验证frp
启动frp
./frpc -c frpc.ini
在http://公网IP:dashboard_port/ 的仪表盘中可以查看到
在浏览器中访问 "http://公网IP/8080" 就等于访问内网,账户密码则与登陆内网所需的账户密码一致
三、提交脚本长期运行
使用 SLURM 在内网服务器上提交一个长期运行的任务来执行 frpc:
1.创建 start_frpc.sh 启动脚本:
#!/bin/bash
# 确保 frpc 可执行文件和配置文件的路径正确
FRPC_DIR="/frp/frp_0.39.1_linux_amd64"
CONFIG_FILE="$FRPC_DIR/frpc.ini"
# 启动 frpc
cd $FRPC_DIR
nohup ./frpc -c $CONFIG_FILE &
2. 给予脚本执行权限:
chmod +x start_frpc.sh
3. 使用 srun 提交任务:
srun -p mem --mem=1G --time=160-00:00:00 --pty bash
4. 在分配到节点后,运行启动脚本:
./start_frpc.sh
四、验证连接
1. 检查 frpc 日志:
tail -f nohup.out