You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于SSH与Destination NAT工作原理及配置的技术咨询

SSH与Destination NAT(DNAT)原理详解及配置示例解析

DNAT核心原理

DNAT(目的地址转换)是网关设备的核心功能之一,专门处理跨网传输数据包的目的IP/端口改写:

  • 公网用户发起的请求目标是网关的公网“虚拟地址”,DNAT会把这个目标地址替换成内网中真实服务器的私有IP/端口
  • 本质是给没有公网IP的内网服务器做“端口映射”,让公网流量能穿透网关到达内网服务

SSH服务与DNAT的适配逻辑

SSH(安全外壳协议)是默认用22端口的远程管理协议,内网服务器如果要对外开放SSH访问,必须通过DNAT做映射:

  1. 公网用户发起ssh 网关公网IP:自定义端口请求(用默认22端口的话直接ssh 网关公网IP)
  2. 网关收到后,通过DNAT规则把目标端口22(或自定义端口)映射到内网服务器的22端口
  3. 内网服务器处理请求后,网关再把源地址反向转换,把响应包发回公网用户,整个过程对用户完全透明

配置示例逐段解析

注:原示例存在几处笔误(如year应为SSH默认端口22、S2_HTTP应为S_HTTP等),以下是修正后的完整配置及解析:

1. 定义服务组(打包公网请求端口)

(config)# object-group service HTTP
(config-object-group-service)# port-range 80                     // 公网访问Web服务用的80端口
(config-object-group-service)# exit
////////////////////////
(config)# object-group service SSH
(config-object-group-service)# port-range 22                     // SSH服务默认22端口,修正原示例笔误
(config-object-group-service)# exit
  • object-group service是把常用服务的端口打包成组,后续规则可以直接引用组名,不用重复写端口号,方便维护
  • HTTP组对应公网访问Web服务的80端口,SSH组对应远程管理的22端口

2. 定义网络组(标识网关公网地址)

(config)# object-group network UPLINK
(config-object-group-network)# ip address-range 100.1.1.0 100.1.1.1 // 替换成网关的公网IP/IP段
(config-object-group-network)# exit
  • UPLINK组用来标记网关的公网接口地址,后续规则里用它来匹配“发往网关公网IP的请求”

3. 创建DNAT地址池(指定内网真实服务器)

(config)# nat destination
(config-dnat)# pool S_HTTP
(config-dnat-pool)# ip address 192.168.1.100                 // 替换成内网Web服务器的私有IP
(config-dnat-pool)# ip port 8080                             // 内网Web服务实际监听的8080端口
(config-dnat-pool)# exit
(config-dnat)# pool S_SSH
(config-dnat-pool)# ip address 192.168.1.101                 // 替换成内网SSH服务器的私有IP
(config-dnat-pool)# ip port 22                               // 内网SSH服务监听的22端口,修正原示例笔误
(config-dnat-pool)# exit
  • nat destination进入DNAT专属配置模式
  • pool就是定义“目标转换的终点”:告诉网关,符合规则的公网请求要转到哪个内网IP和端口
  • S_HTTP池对应内网Web服务器(192.168.1.100:8080),S_SSH池对应内网SSH服务器(192.168.1.101:22)

4. 配置DNAT规则集(匹配条件+转换动作)

(config-dnat)# ruleset DNAT
(config-dnat-ruleset)# from default
(config-dnat-ruleset)# rule 1
(config-dnat-rule)# match protocol tcp
(config-dnat-rule)# match destination-address UPLINK
(config-dnat-rule)# match destination-port HTTP
(config-dnat-rule)# action destination-nat pool S_HTTP       // 修正原示例的S2_HTTP笔误
(config-dnat-rule)# enable
(config-dnat-rule)# exit
(config-dnat-ruleset)# rule 2
(config-dnat-rule)# match protocol tcp
(config-dnat-rule)# match destination-address UPLINK
(config-dnat-rule)# match destination-port SSH
(config-dnat-rule)# action destination-nat pool S_SSH       // 修正原示例的S2_SSH笔误
(config-dnat-rule)# enable
(config-dnat-rule)# end
////////////////////////
# commit
# confirm
  • ruleset是把一组DNAT规则归类,方便批量管理和调试
  • from default表示这组规则应用于从外部接口进来的默认流量
  • 规则1逻辑:只要是TCP协议、目标地址是网关公网IP(UPLINK组)、目标端口是80(HTTP组)的请求,就自动转到S_HTTP池对应的内网Web服务器
  • 规则2逻辑:只要是TCP协议、目标地址是网关公网IP、目标端口是22(SSH组)的请求,就自动转到S_SSH池对应的内网SSH服务器
  • commit是保存配置,confirm是确认生效,这两步是网关配置的标准收尾操作

内容的提问来源于stack exchange,提问作者Mohammed Karill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.04 16:04:52