![IOS Nated 端口转发](https://linux22.com/image/609134/IOS%20Nated%20%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91.png)
我有一台装有 ios C1900 软件 (C1900-UNIVERSALK9-M) 版本 15.2(4)M1 的 cisco ios 路由器。并且我已经设置了端口过载的 Nat (一个公网 IP)。并且有一个静态映射:
ip nat source static tcp 192.168.1.42 7780 interface GigabitEthernet0/0 80
如果我尝试从其他 ISP 访问 Web 服务器,它就能正常工作。(GE0/0 - 扩展接口,GE0/1 - 内部接口)因此,当流量从 GE0/0 流向 GE0/1 时。
但是当我想从内部网络 (GE0/1) 访问它时,数据包不会到达目标主机。为此连接创建了 NVI nat 表条目,但数据包未到达 192.168.1.42:7780。那么 nat 外部地址是否可能用作内部 nat 池的端口转发?
编辑:源 ip 来自本地子网,即 192.168.1.100,但我正在访问分配给 GE0/0 外部 WAN 接口的 WAN 地址,即 88.88.88.88,因此流量通过路由器。
答案1
您的源 IP 是什么?如果您从与服务器位于同一子网中的某个设备访问 192.168.1.42,则流量将永远不会到达路由器,也不会进行 NAT。
另外,您可能在这里混合了您的技术。您给出的命令使用新式 NVI NAT 并将所有启用 NAT 的接口视为内部接口。但您指的是外部接口,就好像您已经定义了它们一样。
您能向我们提供您的 NAT 语句、ACL 和接口的配置吗?
答案2
您将遇到的第一个问题是从 Web 服务器到客户端的返回数据包转发。想象一下以下流程:
Source IP 192.168.1.100 Source Port 64000
Destination IP 88.88.88.88 Destination port 7780
此数据包到达路由器后被更改为以下内容
Source IP 192.168.1.100 Source Port 64000
Destination IP 192.168.1.42 Destination Port 80
然后,该数据包被发送到服务器,服务器将尝试回复 192.168.1.100 !! 这将绕过路由器(第 2 层),因此客户端将看到回复数据包如下:
Source IP 192.168.1.42 Source Port 80
Destination IP 192.168.1.100 Source Port 64000
这是一个问题 - 客户端希望源是 88.88.88.88 !这可以通过服务器上的路由强制所有本地流量通过路由器来解决 - 但这会影响大量流量,我并不推荐这样做。如果您将 Webeserver 放在路由器上的其他接口(或 VLAN)上,您可能会更容易解决这个问题...
答案3
关键是添加:
no ip redirects
在 nat 接口上。成功了。