前言
因为机房的机器没有公网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.crt
,proxy.key
, 相当于账号和密码,用于服务连接的验证。
启动和配置服务端的服务器A
在云服务器也就是服务器A中启动goproxy的server端
这里设定goproxy服务端与客户端的通信端口为8800
,实际可以自行替换自定义
我需要映射服务器B的22
到8822
端口上,在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.crt
和proxy.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