很多小型企业网络规划通常将服务器和内网规划在一起,内部通过VLAN隔离区域。
如果使用华为USG作为出口网关,并且只有一个公网IP地址,那么内网服务器可以通过静态端口映射的方法向公网提供服务。
nat server DNAT-1 protocol tcp global 10.10.10.2 www inside 192.168.2.100 www no-reverse
公司内部员工使用192.168.2.100访问服务器
互联网用户使用10.10.10.2访问服务器
但是如果内部员工通过 http://10.10.10.2 访问服务器则会导致通行失败,为什么会出现这种问题?
1、当员工访问 http://10.10.10.2 IP报头如下
2、报文到达USG后会命中nat server,将目的IP替换为服务器内网IP,并产生一条session记录
3、报文经过USG转发到内网服务器,服务器应答报文IP头如下
4、USG接收到服务器的应答报文,发现目的IP地址存在路由表内,可以通过接口转发直接到达,于是将报文通过trust接口转发出去
5、员工电脑接收到USG转发回来的报文直接丢弃,因为请求的IP地址是10.10.10.2,而收到的是192.168.2.100回复的报文,请求与回复的报文信息不一致,导致访问失败。
由于在USG接收到服务器回复报文时没有经过端口转换,而是直接转发报文,导致了内网用户通过公网地址访问内网服务器失败,这里我猜测路由表的优先级是高于会话表的,当然,进过会话表转换后的报文依然要查询路由表进行转发。
解决办法:
经过网上搜索资料,发现可以通过配置地址池解决这个问题,地址池地址可以是公网地址,也可以是私网地址,关键是不能和服务器的私网地址在同一网段,这里我听从网上的建议,配置一段没有使用的内网地址。
地址池
源NAT
总结:企业只有一个固定公网IP,服务器放置在公司内网,并且通过静态映射向外部提供服务,内网通过NAT上网,网关使用华为USG设备,满足以上条件可以通过配置地址池解决内网员工通过公网地址访问内网服务器。
以上经验来源于互联网各位的经验分享,并且本人在实际网络环境中测试有效。
领取专属 10元无门槛券
私享最新 技术干货