Config Cisco IOS Port forwarding(静态端口映射)
NAT overload(PAT)在进行地址转换时会为转换后的IP包随机分配一个端口,这也就造成了地址转换后IP数据包中源端口的不确定性了,配置PortForwarding(静态端口映射)可以弥补这一缺陷。更多关于PortForwarding的知识可以在Google上找到,或者在本站的文章:“DD-WRT PortForwarding配置及其作用”一文中了解到。
这项特性在绝大多数具有NAT功能的路由器上都可以配置,在cisco IOS上可以很简单地完成端口映射的配置,以我遇到的情况为例:
一个公司使用一台2621xm路由器作为网关通过ADSL上网,并在网关上启用PAT,但内网有一个监控摄像头需要被外网访问,并且需要通过特定的端口实现。所以这里有必要为监控摄像头所监听的端口进行静态的端口映射。先给出重点配置:
interface FastEthernet0/0
description LAN
ip address 192.168.1.1 255.255.255.0
ip access-group upload_flow in
ip nat inside
interface FastEthernet0/1
description WAN
no ip address
pppoe enable group global
pppoe-client dial-pool-number 1
no cdp enable
interface Dialer0
ip address negotiated
ip mtu 1492
ip nat outside
encapsulation ppp
ip tcp adjust-mss 1452
dialer pool 1
dialer-group 1
no snmp trap link-status
ppp pap sent-username xxxxx password 0 xxxxxx
ip route 0.0.0.0 0.0.0.0 Dialer0
ip nat inside source list 1 interface Dialer0 overload
ip nat inside source static tcp 192.168.1.234 23 interface Dialer0 3011
上面的配置可以看出,f0/0被定义为nat inside,连接内部网络。dialer 0接口被定义为nat outside
其中:ip nat inside source list 1 interface Dialer0 overload 这句的意思是匹配ACL 1将内部网络地址转换为Dialer 0接口的地址,并且是进行PAT。
ip nat inside source static tcp 192.168.1.19 800 interface Dialer0 800
这句才是端口映射中的重点,其意思是,对于来自内网原地址是192.168.1.19 端口号为800的IP包,静态地将其源地址和端口号转换为Dialer0的地址 和800源端口。而更重要的是,这句话还有另一种含义!对于来自dialer0,目的端口为800的数据包静态地转换为192.168.1.19 目的端口也为800。这种IP、传输层协议、端口的组合也被称为套接字(socket)。你也可以认为静态端口映射是将一个外网的端口静态映射为内网某个IP与端口的组合(套接字),当路由器从outside口收到目的端口为800的包时,就静态将其目的地址转换为192.168.1.19:800,而来自inside口的源地址为192.168.1.19:800的包,将其源地址静态的转换为dialer 0的地址,源端口也设置为所设置的端口800。
很简单但很实用的一个技术,这也是非常基础的网络技术,但有不少人还是不会配置,所以特意发上来给有需要的人看。


