当前位置:首页 > 休闲

一对一nat和虚拟服务器

公司内网有台老设备,和虚IP是拟服10.0.0.15,端口8080。和虚外头的拟服人想访问它,直接敲这个地址肯定没戏——10开头是和虚私有地址,公网路由器根本不认。拟服这时候就得靠一对一NAT把公网IP映射到这台内网机器上。和虚比如把203.0.113.5的拟服80端口映射到10.0.0.15的8080,外面的和虚人访问203.0.113.5,流量就自动转到内网那台老设备上。拟服

这种一对一映射在路由器上配置起来不复杂,和虚但有个坑我踩过。拟服有次给客户调一台华为AR路由器,和虚把公网IP的拟服443端口映射到内网一台Windows Server的3389。结果外网能连上,和虚内网用户反而连不上那台服务器的443了。查了半天才明白,NAT回流没配。内网用户访问公网IP时,路由器不知道该把流量转回内网,包直接丢了。加上一条hairpin NAT的规则才解决。这事说明一对一NAT不是单向的,得考虑流量从哪来、到哪去。

虚拟服务器跟一对一NAT经常被混着说,其实有区别。虚拟服务器通常指端口级别的映射,比如把公网IP的80给内网A机器,443给内网B机器,22给内网C机器。一台公网IP能撑起多个内网服务。一对一NAT则是整个IP对IP,公网IP的所有端口都归那台内网机器。前者省IP,后者省事。家里宽带只有一个公网IP,想同时跑Web和SSH,虚拟服务器更合适。企业里给邮件服务器单独配个公网IP,用一对一NAT更干净。

虚拟服务器的配置界面我见过不少。TP-Link家用路由器叫“虚拟服务器”,里面填外部端口、内部端口、内网IP。华三的企业路由器叫“内部服务器”,逻辑一样。有个细节容易忽略:外部端口和内部端口可以不一样。比如外网访问公网IP的8080,转到内网机器的80。这种端口重定向在虚拟服务器里很常见。但有些低端路由器不支持端口范围映射,只能一个端口一个端口加,配几十条规则能把人逼疯。

安全性上,一对一NAT把整台内网机器暴露在公网,风险比虚拟服务器大。虚拟服务器只开特定端口,攻击面小。我见过有人把内网一台Windows 7的3389直接一对一NAT到公网,结果三天两头被爆破。后来改成虚拟服务器,只开一个非标准端口,世界清净不少。当然,端口敲门或者VPN更安全,但那是另一回事。

实际组网里,一对一NAT和虚拟服务器经常混用。比如公司有一条固定IP的宽带,Web服务器用虚拟服务器映射80和443,邮件服务器用一对一NAT独占另一个公网IP。路由器上两种规则并存,各走各的。配置时得注意优先级,有些路由器先匹配一对一NAT,再匹配虚拟服务器。顺序搞反了,虚拟服务器的规则可能被一对一NAT覆盖掉。

最后说个真实案例。某小公司用一台OpenWrt路由器做出口,公网IP只有一个。内网有台群晖NAS要远程访问,还有台监控NVR要手机看。群晖用虚拟服务器映射5000和5001,NVR用虚拟服务器映射8000和554。两个服务互不干扰。后来老板要把公司网站也放内网,80端口已经被路由器管理页面占了。改路由器管理端口到8080,再把80映射给网站服务器。虚拟服务器列表里三条规则,清清楚楚。要是用一对一NAT,一个公网IP只能给一台机器,另外两台就没法从外面访问了。所以小环境里,虚拟服务器比一对一NAT实用得多。

分享到: