前言
在选购服务器的时候,大家往往会发现NAT服务器会比拥有独立IP的服务器便宜很多,尤其是在家宽ip服务器上表现更加明显,甚至价格不到独立ip服务器的1/10.但是对于小白来说,弄明白独立ip服务器已经够头疼了,对于NAT更是无从下手,对于NAT的玩法完全不明白,本文就是来解答NAT服务器的相关性质和具体实践玩法,让小白看完一文彻底玩明白NAT服务器。
1.NAT服务器的概念
讲解NAT前,先来介绍一下什么是普通服务器(独立ip)?
云服务器都对应一台物理机。物理机本身无法被互联网访问,因为网络中无法确定它的位置。 但当我们给这台物理机****分配一个公网IPv4地址****时,全世界的人都能通过这个IP访问它。互联网上的数据包都能通过这个ipv4找到这台物理服务器。
比如:
你买了一台日本机房的服务器,服务商给你分配公网IP:11.4.51.4 ,这个IP直接绑定在服务器上,任何人在互联网上访问 11.4.51.4,数据包就能直达你的服务器。
但是你会发现我们光靠一个ipv4无法完成很多我们日常需要的任务,比如说你想在服务器同时运行两个服务,那其他人访问这个ipv4的时候,怎么知道访问的是哪个服务?这就涉及到另一个概念:端口。可以给不同的服务分配不同的端口用于标识不同的服务。比如 服务A用了443端口,服务B用了8080端口,这样其他人想使用A服务就可以访问 11.4.51.4:443,想使用B就访问11.4.51.4:8080.
TCP/IP协议规定,每个IPv4有 65536个端口(0-65535):
至此,你已经可以通过公网ip:端口来访问任何一个具有公网ip的服务器上运行的服务了。
现在,你已经理解了独立IP服务器的工作原理:
服务器拥有独立的公网IP:11.4.51.4
65536个端口完全由你支配
全世界任何人都能通过 IP:端口 访问你的服务
但是!有没有办法让多台服务器共用一个公网IP呢?
这就要引入另一个概念:内网IP
内网IP(也叫私有IP、局域网IP),它只在局部网络内有效,就像是"内部员工编号",外面的人看不到也访问不到。
前面提到的11.4.51.4则是公网IP。
公网IP = L站的办公地址"日本东京下北泽114街514号"
任何人都能通过这个地址找到公司
全球唯一,不会重复
内网IP = 员工工位号"114楼-5区-14号工位"
只有公司内部人知道
其他公司也可能有"114楼-5区-14号工位",不冲突
外面的人无法直接找到这个工位
国际互联网组织(IANA)规定了三个私有IP地址段,专门用于内网,这些IP在公网上是不会出现的:
关于公网ip&内网ip,再举个例子
【你家路由器】
├─ 公网IP: 11.4.51.4 (电信给你的,全球唯一)
└─ 内网IP段: 192.168.1.0/24
├─ 路由器自己: 192.168.1.1 (网关)
├─ 你的电脑: 192.168.1.100
├─ 你的手机: 192.168.1.101
├─ 你的iPad: 192.168.1.102
└─ 你的杯子: 192.168.1.103
你要访问谷歌
路由器收到,用自己的公网IP(11.4.51.4)转发出去
谷歌服务器回复数据到 11.4.51.4
路由器记得是192.168.1.100发的请求,转发回你的电脑
这就是内网ip和公网ip的转换,多个处于内网的设备可以通过同一个公网ip来访问全世界。
既然路由器可以转发多个内网设备的流量,使之通过一个公网ip来访问网络,那么这些内网设备能不能是服务器呢?
恭喜你,你已经理解了NAT的核心原理!
接下来,让我们详细看看NAT服务器到底是怎么工作的。
在计算机网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术。NAT是将IP数据包包头中的IP地址转换为另一个IP地址的协议。当IP数据包通过路由器或者安全网关时,路由器或者安全网关会把IP数据包的源IP地址和/或者目的IP地址进行转换。
说白了就是,NAT的核心将一个公网ip地址映射给多个内网机器,让多个内网机器可以共用一个IPV4出口。
NAT机器有显而易见的好处:便宜。因为你用的是共享IPV4出口,不必独自一人承担整个ip的价格,尤其是昂贵的家宽机器,动辄30刀/月的家宽ip,如果变成NAT,让10个人来使用,那么价格一下就变成了3刀/月,瞬间便宜。
当然了,NAT机因为共享ip出口,所以很容易就变成滥用ip,各种滥用报告满天飞。
举个例子:假设我有个AT&T的公网IP 1.2.3.4,成本是30刀/月。
现在我开20台NAT服务器,给第一台用户(192.168.0.2)分配端口段 30001-30100:
端口映射示例:
1.2.3.4:30001→192.168.0.2:22(SSH登录)1.2.3.4:30002→192.168.0.2:80(网站)1.2.3.4:30003→192.168.0.2:443(HTTPS)1.2.3.4:30004→192.168.0.2:8080(EMBY)… 还有 30005-30100 可用(共100个端口)
此时,我想SSH登录就用 ssh root@1.2.3.4 -p 30001 即可。
如果用户需要在8080端口托管服务,就将 1.2.3.4:30004 映射到 192.168.0.2:8080:
错误:http://192.168.0.2:8080(内网IP,外网访问不到)
正确:http://1.2.3.4:30004(公网IP + 映射端口,访问成功)
一个公网ip的65536个端口不可能全被用完,平均分给每个内网机器100个端口都绰绰有余,这也是NAT技术广泛应用的原因。
NAT服务器 vs 独立IP服务器
2.NAT服务器使用大致流程和思路
既然已经知道了NAT机器和独立ip机器的区别,那么使用也很容易可以理解了。
购买NAT服务器 → 获取内网IP → 获取公网IP/域名 →
添加端口映射 → SSH登录测试 → 部署服务 → 配置DDNS(可选) → 正常使用
DDNS技术:Dynamic DNS(动态域名解析)- 当你的公网IP变化时,自动更新域名指向新IP,就不用我们每次更新后上来看新ip是多少再修改服务。有些厂商会提供DDNS,有些厂商不会。
判断你是否需要DDNS:
需要:商家没提供DDNS,且公网IP会变化
不需要:商家提供了DDNS域名,或公网IP固定
购买厂商服务器前,确认NAT机器给几个端口,比如常见的有
Unlimited IPv4 NAT Port //不限制端口数,可以按需要自己进行映射,用多少映射多少
计算型端口映射 //商家已经提前帮你映射好了,购买后可直接使用,部署服务记得部署到对应的端口上
20 IPv4 NAT Ports //商家只给20个端口
端口映射的注意事项
购买后按照商家的说明去映射端口即可,一般而言,建议内外服务端口保持一致,即公网IP:40001 → 内网IP:40001,不然有些服务容易出bug。
为什么建议端口一致?
有些应用硬编码了端口号,内外不一致会出问题
配置文件更容易管理,不容易搞混
排查问题时更方便,不用来回转换
什么时候端口不一致?
当你的可用端口范围不包含服务默认端口时
例如:你的端口是 30001-30100,但服务默认用 8080
这时你可以映射
30004 → 8080,外网访问公网IP:30004即可
映射端口的基本步骤:
确认内网IP(邮件或面板查看)
确认要运行的服务需要什么端口
在面板添加映射规则:
协议:TCP(大部分服务)或 UDP(游戏/语音)
公网端口:从你的端口范围中选一个
内网端口:服务实际监听的端口
SSH登录测试连通性
部署服务并测试
3.NAT服务器实战使用
终于来到最喜欢的实操环节了,说一千道一万,不如做做实战看一看。
下面我会详细讲述我的思路和使用方法,并会用常见厂商作为例子,帮助小白使用。
nmcloud(牛马云)
首先来到NAT机购买页面
可以看到他们的政策是
Unlimited IPv4 NAT Port
No IPv6
就是无限制端口数但无IPV6
购买后第一步,先要找找我的机器的内网ip是多少,不然没有办法映射。在购买邮件中,NMcloud发来了我的内网ip172.16.1.71和ssh密码
接下来下一步就是找公网ip和映射方法,我在邮件中没有看到公网ip
那我们就打开产品服务中的产品面板
看到左下角有个DDNS,哎,这就是公网ip了,而且下方有个默认ip,就是内网ip,和邮件相同。
有些厂商面板和邮件的内网ip是不一样的,这种是面板/邮件有问题,都尝试映射一下即可。
现在有了公网ip和端口,我们现在找映射方法即可。面对一个陌生的服务商,最好的办法就是去看知识库和文档,我在公告中心里找到了这个
点进去看了一下,发现是手动映射的,那么我们按照操作方法一步步做即可。
点击右边弹出框
点击Domain Forwarding
点击ADD,并选择TCP协议,然后输入你要用的端口即可,比如一个ssh端口,让公网的30001映射到内网机器的22端口用于ssh,点击add,完成!
注意:转发的协议一般都是TCP的,有些会提供UDP,有些可以选择TCP&UDP转发,有时候你的应用连不上可能是因为你的应用要UDP,而你转发了TCP,自然不通。
ssh也不一定是22端口,默认是22,你可以改称43233,映射的时候记得也映射到43233.
//已经有了公网ip+公网端口+内网ip+内网端口,直接ssh即可
ssh root@hinet.xxxx.xyz -p 30001
//如果需要其他服务,端口映射也是同理
bytevirt
首先来到购买页面
商家政策为:
20 IPv4 NAT Ports
1 /64 |de/tr /80 IPv6 Addresses
就是只有20个端口,但是有独立ipv6,有时候可以借助ipv6来获取ipv4,会玩也可以单独玩ipv6.
购买后第一步还是找内网ip,我们先看看邮件,商家发来了这个
可以看到我的内网ip为172.16.59.73,现在我们去找公网ip,点击商家的链接
这就尴尬了,好像是无效的页面,没关系,我们还是点开面板
我们点击查看公网ipv4
哇哦,商家已经帮我们映射好了,公网ip为nattr7.bytevirt.net,端口36001映射到了内网机器的22端口,此时我们执行
ssh -p36001 root@nattr7.bytevirt.net
即可登录机器。和牛马云不同,这个端口已经映射好了,如果你要部署服务,就可能要更改默认端口(有些服务端口默认是8080,但你只有36001~36020的端口,你就要改到你需要的端口上)。
sudavps
同样的来到购买页面
商家政策是
计算型端口映射(映射规则详见群组和帮助中心)
那就是根据内网ip自动计算映射好的端口。
购买后查看商家发来的邮件
可以看到内网ip为10.10.18.55,公网ip为hkt-ty-line-1.sudatech.store,端口映射规则写在了下方
Use the port to calculate the mantissa of the intranet IP by yourself
SSH 10000 + intranet IP mantissa
Free port 20000+(Intranet IP mantissa*10)+0-9
like:
The internal IP is 10.0.0.14, the ssh port is 10014, and the free port is 20140-20149
The internal IP is 10.0.0.26, the ssh port is 10026, and the free port is 20260-20269
我们的内网ip是.55结尾,那么我们的ssh 端口就是10000+55=10055,自由端口即为20000+55*10+0~9 也就是20550~20559端口。
那么我们就是可以用10个端口+ssh端口
ssh root:hkt-ty-line-1.sudatech.store -p 10055
即可登录。
当然了,不想算的话可以用商家提供的工具,商家官网一般会有
喵云
来到NAT购买页面
商家政策为
10个NAT转发规则
那就是10个端口,购买后打开商家邮件
看到内网ip为10.102.0.99,没写怎么映射和公网ip,那就先去面板看看
左上角有个转发面板,点进去看看
下方给了公网ip,但没给DDNS,意味着如果不部署DDNS每次更换ip后你都要上来改成新的ip才能使用,这很麻烦,好在商家给了教程,那我们先看看怎么映射
这里没要我们填写内网ip,可能是面板点击进去的时候就帮我填写好了,按我们就选择一个TCP+44323+22来进行ssh登录。
ssh root@118.141.232.160 -p 44323
即可登录,有需要还请DDNS,不然动态ip真的很麻烦。
总结
NAT机器是很便宜的机器,不过我还是建议小白花钱买完整IPV4机器,NAT机器遇到的问题有很多,小白不一定能解决,不过你都看到这里了,算是NAT机器入门了,nat机器就是如此简单又容易。






















评论区