马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在选购服务器的时候,大家往往会发现NAT服务器会比拥有独立IP的服务器便宜很多,尤其是在家宽ip服务器上表现更加明显,甚至价格不到独立ip服务器的1/10.但是对于小白来说,弄明白独立ip服务器已经够头疼了,对于NAT更是无从下手,对于NAT的玩法完全不明白,本文就是来解答NAT服务器的相关性质和具体实践玩法,让小白看完一文彻底玩明白NAT服务器。 本文不含任何aff和夹带私货的推荐 ,所有推荐都是我的使用后的主观感受,是否适用还请自行判断。如果出现错误还请佬友在评论区补充,一经采纳发放福利,佬友的技术纠正是本文不断更新的最大动力。本文只发布于IDC Flare,除了站内,不允许进行任何形式的转载。
下面文章分为多个章节,每个章节回答的问题为: - 什么是NAT服务器,和平时我们说的普通服务器有何区别(独立ip)?
- NAT服务器的大致使用流程?
- 常见NAT服务器的操作实践例子
- 有哪些参考资料和想法?
本文为科普文,面向小白,所有涉及的陌生概念会详细,无需任何其他文章辅助即可食用。
不特殊说明,默认为ipv4
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):
端口范围 名称 用途 举例
0-1023系统保留端口常见服务专用80(HTTP), 443(HTTPS), 22(SSH)
1024-49151注册端口应用程序使用3306(MySQL), 8080(备用HTTP)
49152-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段 范围 CIDR表示 可用IP数量 常见用途
A类私有地址10.0.0.0 - 10.255.255.25510.0.0.0/8约1677万个大型企业内网
云服务商内网
NAT VPS常用
B类私有地址172.16.0.0 - 172.31.255.255172.16.0.0/12约104万个中型企业网络
Docker默认网络
C类私有地址192.168.0.0 - 192.168.255.255192.168.0.0/16约6.5万个家庭路由器
关于公网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 你要访问L站 - 电脑(192.168.1.100)发出请求:“我要访问linux.do”
- 路由器收到,用自己的公网IP(11.4.51.4)转发出去
- linux.do 服务器回复数据到 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个端口)
如果用户需要在8080端口托管服务,就将 1.2.3.4:30004 映射到 192.168.0.2:8080: 一个公网ip的65536个端口不可能全被用完,平均分给每个内网机器100个端口都绰绰有余,这也是NAT技术广泛应用的原因。 NAT服务器 vs 独立IP服务器
特性 独立IP服务器 NAT服务器
公网IP独享多人共享一个(10人以上)
端口数量65536分配 10-100 或按需分配
价格30刀/月3刀/月
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机购买页面
image698×667 42.4 KB
可以看到他们的政策是
Unlimited IPv4 NAT Port
No IPv6
就是无限制端口数但无IPV6 购买后第一步,先要找找我的机器的内网ip是多少,不然没有办法映射。在购买邮件中,NMcloud发来了我的内网ip172.16.1.71和ssh密码
1759837097948317×208 6.47 KB
接下来下一步就是找公网ip和映射方法,我在邮件中没有看到公网ip
那我们就打开产品服务中的产品面板
1759837449781936×759 32.9 KB
看到左下角有个DDNS,哎,这就是公网ip了,而且下方有个默认ip,就是内网ip,和邮件相同。 有些厂商面板和邮件的内网ip是不一样的,这种是面板/邮件有问题,都尝试映射一下即可。
现在有了公网ip和端口,我们现在找映射方法即可。面对一个陌生的服务商,最好的办法就是去看知识库和文档,我在公告中心里找到了这个
image1131×268 17.6 KB
点进去看了一下,发现是手动映射的,那么我们按照操作方法一步步做即可。
1759837576995929×573 39.1 KB
点击右边弹出框
1759837605199929×575 38.3 KB
点击 Domain Forwarding
image640×390 21.5 KB
点击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首先来到购买页面
image406×421 17.1 KB
商家政策为:
20 IPv4 NAT Ports
1 /64 |de/tr /80 IPv6 Addresses 就是只有20个端口,但是有独立ipv6,有时候可以借助ipv6来获取ipv4,会玩也可以单独玩ipv6. 购买后第一步还是找内网ip,我们先看看邮件,商家发来了这个
1759838172263718×690 31 KB
可以看到我的内网ip为172.16.59.73,现在我们去找公网ip,点击商家的链接
image1645×384 13.8 KB
这就尴尬了,好像是无效的页面,没关系,我们还是点开面板
17598382868381005×742 42.7 KB
我们点击查看公网ipv4
17598384074581359×834 41.1 KB
哇哦,商家已经帮我们映射好了,公网ip为nattr7.bytevirt.net,端口36001映射到了内网机器的22端口,此时我们执行
ssh -p36001 root@nattr7.bytevirt.net即可登录机器。和牛马云不同,这个端口已经映射好了,如果你要部署服务,就可能要更改默认端口(有些服务端口默认是8080,但你只有36001~36020的端口,你就要改到你需要的端口上)。 sudavps同样的来到购买页面
image562×764 45.4 KB
商家政策是
计算型端口映射(映射规则详见群组和帮助中心)
那就是根据内网ip自动计算映射好的端口。
购买后查看商家发来的邮件
1759838639955484×777 45.7 KB
可以看到内网ip为10.10.18.55,公网ip为hkt-ty-line-1.sudatech.store,端口映射规则写在了下方
Use the port to calculate the mantissa of the intranet IP by yourselfSSH 10000 + intranet IP mantissaFree port 20000+(Intranet IP mantissa*10)+0-9like:The internal IP is 10.0.0.14, the ssh port is 10014, and the free port is 20140-20149The 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即可登录。
当然了,不想算的话可以用商家提供的工具,商家官网一般会有
image678×620 18.2 KB
喵云来到NAT购买页面
image503×236 7.4 KB
商家政策为
10个NAT转发规则
那就是10个端口,购买后打开商家邮件
image725×725 32.6 KB
看到内网ip为10.102.0.99,没写怎么映射和公网ip,那就先去面板看看
image1379×912 43.5 KB
左上角有个转发面板,点进去看看
image1521×592 37.3 KB
下方给了公网ip,但没给DDNS,意味着如果不部署DDNS每次更换ip后你都要上来改成新的ip才能使用,这很麻烦,好在商家给了教程,那我们先看看怎么映射
image437×470 9.73 KB
image448×462 12.2 KB
这里没要我们填写内网ip,可能是面板点击进去的时候就帮我填写好了,按我们就选择一个TCP+44323+22来进行ssh登录。
image450×506 6.51 KB
ssh root@118.141.232.160 -p 44323即可登录,有需要还请DDNS,不然动态ip真的很麻烦。 4.有哪些参考资料和想法?看到这里,恭喜你已经完全掌握了NAT服务器的使用! NAT机器是很便宜的机器,不过我还是建议小白花钱买完整IPV4机器,NAT机器遇到的问题有很多,小白不一定能解决,不过你都看到这里了,算是NAT机器入门了,去玩吧少年,nat机器就是如此简单又容易。 常见问题Q: 端口映射了,但连不上? - 检查协议是否选对(TCP/UDP)
- 检查服务是否监听 0.0.0.0
- 检查防火墙是否放行端口
- 检查公网ip是否被墙
Q: 内外网端口必须一致吗? - 不是必须,但强烈建议
- 有些应用硬编码了端口,不一致会出bug
Q: 能不能映射80/443端口? - 大部分NAT不允许映射1024以下的端口
- 建站需要用非标端口(如8080、30002等)
Q: IP被墙了怎么办? - 如果是NAT共享IP:联系商家,可能需要等商家换IP
- 所有共享这个IP的用户都会受影响
- 这是NAT的最大风险:邻居作死,全体连坐
NAT服务器是个好东西,但要用对场景。 参考资料:
RFC 3022: Traditional IP Network Address Translator
RFC 2663: IP Network Address Translator Terminology
|