内网穿透教程

内网穿透教程

本文介绍如何使用 FRP(Fast Reverse Proxy)工具实现内网穿透,包括配置 Azure 公网 IP、安装 Docker 和 FRP,以及在内网服务器上配置和运行 FRP 客户端。

一、配置公网 IP

1. 申请 Azure 公网 IP

  1. 登录到 Azure 门户
  2. 创建一个新的虚拟机实例,建议使用1G内存的。
  3. 在虚拟机配置中,确保选择了一个公共 IP 地址。
  4. 完成虚拟机创建,并记下公共 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)
image

6. 验证是否成功

在 Azure 虚拟机上运行命令sudo ss -tuln | grep 7000,确保 FRP 服务器正在监听正确的端口
在浏览器中访问http://公网IP:dashboard_port/ ,输入Dashboard的账户和密码后可以访问
image

二、配置内网

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/ 的仪表盘中可以查看到
image
在浏览器中访问 "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. 启动 screen 会话: screen

4. 使用 srun 提交任务:

srun -p mem --mem=2G --cpus-per-task=1 --time=180-00:00:00 --job-name=frpc_task --pty bash

4. 在分配到节点后,运行启动脚本:

/绝对路径/start_frpc.sh

5. 分离 screen 会话:

按 Ctrl + a,然后按 d

四、验证连接

1. 检查 frpc 日志:

tail -f nohup.out

posted @ 2024-06-05 20:34  skypanxh  阅读(108)  评论(0编辑  收藏  举报