跳转至

如何使用网关服务器

网关服务器

网关服务器(Gateway Server)是一种网络设备或服务,负责 将一个网络与另一个网络连接起来,充当两者之间的桥梁。网关服务器通常用于多种场景,包括但不限于互联网连接、网络隔离、协议转换和负载均衡。

实际应用

本文聚焦于下述场景:

bxhu在家,闲来无事想跑代码(新paper压力给满555)

但是跑代码的服务器在XJTU的实验室里,按常理需要使用校园网才能使用

那咋办呢?

Quick Start

Background
  • 事实上,我们实验室的服务器一共有两台,一台叫igw,另一台叫sugon
  • 其中igw是实验室的网关服务器(小型数据中心测试床),sugon是实验室的“主力”服务器 (曙光高性能服务器)

sugon服务器访问

  1. 校园网内直接访问(❌)
  2. 在家先访问igw,通过igw再访问sugon(✅)

本机配置

Bash
1
2
cd ~/.ssh
vim config
Bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 File: config

  11    Host igw.dfs.net # Sugon Server
  12      HostName igw.dfs.net
  13      User bxhu
  14      Port 2299
  15      # IdentityFile ~/.ssh/id_rsa
  16      ProxyCommand ssh -W %h:%p hw.dfs.net

  24    Host hw.dfs.net # GateWay Server
  25      HostName hw.dfs.net
  26      User bxhu
  27      Port 9322
  28      PreferredAuthentications publickey
  29      IdentityFile ~/.ssh/id_rsa
这里有一个历史遗留问题, Be Careful :(
  • igw是网关服务器的名称,hw是它的访问网址
  • sugon是“主力”服务器的名称,igw是它的访问网址

使用方法

如此配置,我们可以在CLI中使用如下方式进行访问

Bash
1

也可以简化成

现在bxhu就可以直接访问“主力”服务器了!可以继续科研民工了 :-)

解析config

hw-config

  • Host hw.dfs.net
    • 这行定义了一个SSH配置块的开始,名称是hw.dfs.net。这个名称是一个别名,用于在命令行中简化SSH连接命令
  • HostName hw.dfs.net
    • 这是实际的主机名或IP地址。SSH客户端将连接到这个地址
  • User bxhu
    • 指定连接到远程主机时使用的用户名。在这个例子中是bxhu
  • Port 9322
    • 指定连接到远程主机时使用的端口号。在这个例子中是9322,而不是默认的22
  • PreferredAuthentications publickey
    • 指定首选的认证方法。在这个例子中,使用 公钥认证(publickey)
  • IdentityFile ~/.ssh/id_rsa
    • 指定用于 公钥认证的私钥文件路径。在这个例子中是~/.ssh/id_rsa

有了这个配置文件,你可以简化SSH连接命令。例如,通常你可能会使用以下命令连接到远程主机:

Bash
1
ssh -p 9322 [email protected] -i ~/.ssh/id_rsa

但是有了上述配置后,你只需要使用别名hw.dfs.net,SSH会自动使用配置中的设置:

Bash
1
ssh hw.dfs.net

igw-config

Bash
1
ProxyCommand ssh -W %h:%p hw.dfs.net

这一行定义了一个代理命令:

  • 表示SSH将通过hw.dfs.net作为跳板主机(Proxy)
  • %h和%p分别表示目标主机名和端口号。在连接到igw.dfs.net时,SSH首先连接到hw.dfs.net,然后通过该跳板主机转发到目标主机和端口

有了这个配置文件,你可以简化SSH连接命令。例如,通常你可能会使用以下命令连接到远程主机:

Bash
1
ssh -p 2299 [email protected]

但是有了上述配置后,你只需要使用别名igw.dfs.net,SSH会自动使用配置中的设置:

Bash
1
ssh igw.dfs.net

SSH会首先连接到hw.dfs.net,然后通过该跳板主机连接到igw.dfs.net。

Summary

在上述config配置的加持下,我们现在可以通过如下方式访问sugon服务器

  1. 表象alias访问
Bash
1
ssh igw.dfs.net
  1. 表象直接访问
Bash
1
ssh [email protected] -p 2299
  1. 网关直接访问
Bash
1

不管写法如何,本质上都是该指令调用hw,然后hw将信息转录进igw,从而实现访问