惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
人人都是产品经理
人人都是产品经理
WordPress大学
WordPress大学
博客园 - Franky
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
IT之家
IT之家
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
S
SegmentFault 最新的问题
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
有赞技术团队
有赞技术团队
B
Blog RSS Feed
Last Week in AI
Last Week in AI
Jina AI
Jina AI
博客园 - 司徒正美
The Cloudflare Blog
博客园_首页
博客园 - 聂微东
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏

二叉树的博客

科研与小团队 GPU 共享容器完整方案:从零搭建 OneClickVirt 管理平台并通过 Agent 模式纳管内网 GPU 节点 Ray 支持昇腾 NPU 的 KubeRay 对接记录 openEuler 22.03 arm64 离线包适配记录 在线 IDE 的通用容器镜像打包流程 麒麟 V10 安装时配置本地源 BKE 与 BMP 部署排障流程 containerd 允许 HTTP 镜像仓库拉取 Red Hat 8 amd64 离线依赖适配记录 通用docker容器镜像打包应用的流程 kubevirt初体验 kubevirt初体验 魔改dockur制作可迁移的Windows镜像(单文件) 魔改dockur制作可迁移的Windows镜像(单文件) 通过dockur制作可迁移的Windows镜像(双文件) 通过ProxmoxVE制作kubevirt可用的Windows镜像 通过dockur制作可迁移的Windows镜像(双文件) 通过ProxmoxVE制作kubevirt可用的Windows镜像 基于docker的在线IDE制作(支持浏览器直接访问) 基于docker的在线IDE制作(支持浏览器直接访问) k8s日常问题排障 k8s日常问题排障 jetbrains家的goland项目可用但老爆红 jetbrains家的goland项目可用但老爆红 机房本地服务器自建Gitea并使用 机房本地服务器自建Gitea并使用 nvidia-smi被自动升级无法与GPU通信了怎么办 conda使用GPU时的一些陷阱 给机房的LXD容器配置跳板机进行连接 在Pycharm上连接远程虚拟环境进行使用 给机房的Ubuntu22.04安装LXD共享GPU资源
给机房的Ubuntu22.04的Linux进行内穿映射端口
二叉树上的我 · 2024-05-12 · via 二叉树的博客

前言

因为机房的机器没有公网IP,所以需要跳板机进行IP映射内穿,所以需要2样东西:

1
服务器A - 服务端 - 一个有公网IPV4地址的云服务器,IPV4地址本教程假设为 x.x.x.x
1
服务器B - 客户端 - 机房内的Ubuntu22.04系统的机器

这里选用goproxy进行IP内穿

初始环境本教程选择sudo -i后的/root目录下进行

下载goproxy以及预安装proxy

https://github.com/snail007/goproxy/releases 下载最新的

本教程下载 v14.5 版本,服务器A和服务器B这个东西都得下

(建议下载时进入一个空文件夹中,因为后续这个文件夹会用得到,别直接下载到root目录下)

1
2
mkdir -p goproxy
cd goproxy
1
wget -O proxy-linux-amd64.tar.gz https://cdn.spiritlhl.net/https://github.com/snail007/goproxy/releases/download/v14.5/proxy-linux-amd64.tar.gz && chmod 777 proxy-linux-amd64.tar.gz

然后在服务器A中执行

1
2
3
4
wget https://cdn.spiritlhl.net/https://raw.githubusercontent.com/snail007/goproxy/master/install.sh  
chmod +x install.sh  
./install.sh  
rm -rf install.sh

执行完毕后执行

查看是否已安装成功

在服务器A和B中都执行

1
tar -zxvf proxy-linux-amd64.tar.gz

解压本体(注意解压到哪个文件夹,下面配置文件中会用到)

服务器A中生成服务器凭证

在服务器A中的解压出来的那个文件夹内执行

1
sudo proxy keygen -C proxy

命令会在本地生成两个文件proxy.crtproxy.key, 相当于账号和密码,用于服务连接的验证。

启动和配置服务端的服务器A

在云服务器也就是服务器A中启动goproxy的server端

这里设定goproxy服务端与客户端的通信端口为8800,实际可以自行替换自定义

我需要映射服务器B的228822端口上,在A中执行下面的命令启动通信监听

1
sudo proxy bridge -p ":8800" -C proxy.crt -K proxy.key --forever --log proxy.log --daemon

执行下述命令启动映射

1
sudo proxy server -r ":8822@:22" -P "127.0.0.1:8800" -C proxy.crt -K proxy.key --forever --log proxy.log --daemon

上述命令不是永久生效的,如果你的云服务器重启了,这些命令需要重新执行,所以务必保管好你执行过的命令

启动和配置客户端的服务器B

服务器B不需要安装proxy,解压后的文件直接就可以使用了

但需要注意的是,需要上传之前生成的服务器凭证proxy.crtproxy.key,上传到与解压后的文件的同一文件夹下,或者cat后自己写同样名字的文件同样的内容到服务器B中

不知道本地路径的执行

进行查看,本教程假设为/root/goproxy,如果查询不一致,请自己修改后面的文件夹路径

然后需要创建守护进程设置一直运行,需要创建一个systemd的配置文件

1
nano /etc/systemd/system/goproxy_client.service
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[Unit]
Description=goproxy client
After=network.target

[Service]
Type=simple
WorkingDirectory=/root/goproxy
ExecStart=/root/goproxy/proxy client -P x.x.x.x:8800 -C proxy.crt -K proxy.key
User=root
Restart=always
Environment="RUNNER_ALLOW_RUNASROOT=1"

[Install]
WantedBy=multi-user.target

保存退出后执行下面的命令启动守护进程

1
2
systemctl daemon-reload
systemctl start goproxy_client.service

查看守护进程

1
systemctl status goproxy_client.service

我查询我的服务器B显示

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
root@a12-ThinkStation-P620:~/goproxy# systemctl status goproxy_client.service
 goproxy_client.service - goproxy client
     Loaded: loaded (/etc/systemd/system/goproxy_client.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2024-05-13 16:36:46 CST; 8s ago
   Main PID: 12311 (proxy)
      Tasks: 20 (limit: 308965)
     Memory: 26.3M
        CPU: 104ms
     CGroup: /system.slice/goproxy_client.service
             └─12311 /root/goproxy/proxy client -P x.x.x.x:8800 -C proxy.crt -K proxy.key

5 13 16:36:46 a12-ThinkStation-P620 proxy[12311]: 2024/05/13 16:36:46.967 INFO session worker[3] started
5 13 16:36:46 a12-ThinkStation-P620 proxy[12311]: 2024/05/13 16:36:46.967 INFO session worker[4] started
5 13 16:36:46 a12-ThinkStation-P620 proxy[12311]: 2024/05/13 16:36:46.967 INFO session worker[5] started
5 13 16:36:46 a12-ThinkStation-P620 proxy[12311]: 2024/05/13 16:36:46.967 INFO session worker[6] started
5 13 16:36:46 a12-ThinkStation-P620 proxy[12311]: 2024/05/13 16:36:46.967 INFO session worker[7] started
5 13 16:36:46 a12-ThinkStation-P620 proxy[12311]: 2024/05/13 16:36:46.967 INFO session worker[8] started
5 13 16:36:46 a12-ThinkStation-P620 proxy[12311]: 2024/05/13 16:36:46.967 INFO session worker[9] started
5 13 16:36:46 a12-ThinkStation-P620 proxy[12311]: 2024/05/13 16:36:46.967 INFO session worker[10] started
5 13 16:36:46 a12-ThinkStation-P620 proxy[12311]: 2024/05/13 16:36:46.968 INFO your system ulimit 524288 is too small, max value is: 524288, try set to 1000000
5 13 16:36:46 a12-ThinkStation-P620 proxy[12311]: 2024/05/13 16:36:46.968 INFO the result ulimit is: 1000000

这就是正常的

你的无问题后执行ctrl+c退出查询

开启守护进程开机自启

1
systemctl enable goproxy_client.service

如果你需要改动映射的命令,那么修改/etc/systemd/system/goproxy_client.service文件后,记得执行

1
2
systemctl daemon-reload
systemctl restart goproxy_client.service

重载配置文件和重启守护进程

后言

其他相关说明:https://github.com/snail007/goproxy/blob/master/README_ZH.md