skip to content
Logo Logo ZhenXI Blog

玩转Nat机

/ 16 min read

1 什么是NAT机

NAT(Network Address Translation)机是一种网络技术,用于在不同网络之间转换和映射IP地址。它在互联网连接共享、IP地址节约和网络安全等方面发挥着重要的作用。 NAT机的主要功能是将内部网络中的私有IP地址转换为公共IP地址,以便与外部网络进行通信。当内部网络中的设备使用私有IP地址(如192.168.x.x或10.x.x.x)时,NAT机会分配一个公共IP地址,并在网络数据包通过时修改源IP地址和目标IP地址。这样,在外部网络看来,所有通信都是来自NAT机的公共IP地址。 NAT机主要有以下几种类型:

  1. 静态NAT:静态NAT是一种固定映射关系的NAT机制。它将特定的内部IP地址映射到特定的公共IP地址上,从而使得内部的服务可以被外部网络访问。
  2. 动态NAT:动态NAT根据需要分配公共IP地址给内部设备。当内部设备发送请求时,动态NAT会动态地选择一个可用的公共IP地址进行映射。
  3. PAT(Port Address Translation):也称为NAT Overload,PAT是一种更高级的NAT技术。它不仅将内部IP地址映射到公共IP地址上,还将内部设备的端口号与公共IP地址的端口号进行映射。这样,同一个公共IP地址可以同时为多个内部设备提供网络连接,并且通过端口号来区分不同的连接。 NAT机在网络中起到了重要的作用,它能够解决IPv4地址短缺问题、提高网络安全性,同时也方便了家庭和小型办公室的互联网共享。但需要注意的是,NAT机会引入一些网络延迟和复杂性,特别是在涉及端口转发和应用程序要求固定IP地址时。

2 NAT机和VPS对比

简单来说:VPS有独立IPv4,而NAT的IPv4是共享的(商家一般会提供几个IPv4端口以供使用,以及提供额外独立IPv6)。

注意:NAT机默认被墙!!!

NAT机和VPS(Virtual Private Server)是两种不同的技术,它们在网络中扮演不同的角色,并具有各自的优势。 优点 NAT机:

  1. IP地址共享和节约: NAT机允许多个设备共享一个公共IP地址,通过将内部私有IP地址映射到公共IP地址,使得内网设备可以访问互联网。这样可以有效地节约公共IP地址资源,特别是在IPv4地址短缺的情况下。
  2. 网络安全性提高: NAT机作为一个连接外部网络和内部网络的网关,隐藏了内部网络背后的私有IP地址,增加了一定的安全性。外部网络只能看到NAT机的公共IP地址,无法直接访问内部网络中的设备。
  3. 简化网络配置: 使用NAT机可以简化内部网络的配置。由于内部设备使用私有IP地址,无需向ISP申请和分配公共IP地址,减少了网络配置的复杂性和管理工作量。

优点 VPS:

  1. 独立性和灵活性: VPS提供了一个独立的虚拟服务器环境,用户可以享受与物理服务器相似的完整控制权和自定义配置。每个VPS都有自己的操作系统、资源和独立的网络连接,用户可以根据需求自由选择和配置应用程序和服务。
  2. 高性能和可扩展性: VPS通常部署在强大的物理服务器上,可以获得更好的计算和存储性能。此外,VPS还具有可扩展性,可以随着业务需求增长而灵活地调整资源,无需购买新的硬件设备。
  3. 多样化操作系统支持: VPS支持安装不同类型的操作系统,如Windows、Linux等,使用户可以根据自己的需要选择合适的操作系统。

综上所述,NAT机和VPS各自有其优势。NAT机适合于简单的网络共享和资源节约,而VPS则提供了更多的独立性、灵活性和性能优势,适合于个人或企业需要更多自主控制和定制化的应用场景。选择使用哪种技术取决于具体需求和预期的使用效果。 NAT机允许多个设备共享一个公共IP地址,通过将内部私有IP地址映射到公共IP地址,使得内网设备可以访问互联网。这样可以有效地节约公共IP地址资源,特别是在IPv4地址短缺的情况下。

3 NAT虚拟化技术区别

目前,NAT机虚拟化技术主要有三种:KVM(Kernel-based Virtual Machine)、LXC(Linux Containers)和 OpenVZ(Open Virtuozzo)是三种不同的虚拟化技术,它们各有特点和应用场景。

总的来说,要买NAT机,首先考虑KVM虚拟化技术!!!LXC虚拟化很容易仰卧起坐!!!OpenVZ虚拟化现在比较少见!

以下是它们之间的主要区别:

3.1 KVM(Kernel-based Virtual Machine)

概述:

  • KVM 是一种硬件虚拟化技术,是 Linux 内核的一部分。
  • 它允许在物理服务器上运行多个虚拟机,每个虚拟机都具有独立的操作系统和资源。

特点:

  • 虚拟化类型: 完全虚拟化(Full Virtualization)。每个虚拟机都有自己的操作系统内核,与主机操作系统隔离。
  • 支持操作系统: 可以运行各种操作系统,包括不同版本的 Linux 和 Windows。
  • 性能: 接近原生性能,因为 KVM 利用硬件虚拟化扩展(如 Intel VT-x 或 AMD-V)。
  • 资源隔离: 虚拟机之间完全隔离,每个虚拟机有自己的虚拟硬件。

优点:

  • 灵活性高,支持多种操作系统。
  • 可以利用硬件虚拟化扩展,性能接近原生。
  • 适合需要强隔离和高安全性的环境。

缺点:

  • 相比于容器技术,开销较大,因为每个虚拟机需要运行完整的操作系统。

3.2 LXC(Linux Containers)

概述:

  • LXC 是一种操作系统级虚拟化技术,也称为容器虚拟化。
  • 它提供了类似于虚拟机的环境,但容器共享主机操作系统的内核。

特点:

  • 虚拟化类型: 操作系统级虚拟化(OS-level Virtualization)。容器共享主机内核,但每个容器有自己的用户空间。
  • 支持操作系统: 主要支持 Linux 系统,因为它利用 Linux 内核特性(如 cgroups 和 namespaces)来实现隔离。
  • 性能: 性能开销小,因为容器共享主机内核,无需模拟硬件。
  • 资源隔离: 容器之间隔离,但共享主机操作系统内核。

优点:

  • 启动速度快,资源消耗少。
  • 高效的资源利用,因为容器共享主机内核。
  • 适合轻量级应用和开发测试环境。

缺点:

  • 操作系统隔离不如虚拟机强,所有容器共享主机内核,可能会有安全隐患。
  • 不支持非 Linux 操作系统。

3.3 OpenVZ(Open Virtuozzo)

概述:

  • OpenVZ 是一种开源的操作系统级虚拟化技术,基于 Linux 内核。
  • 它允许在单一的 Linux 内核上运行多个隔离的 Linux 系统实例,称为容器。

特点:

  • 虚拟化类型: 操作系统级虚拟化。所有容器共享一个内核,但每个容器有自己的文件系统、进程列表和网络堆栈。
  • 支持操作系统: 主要支持 Linux 系统。
  • 性能: 高效,因为所有容器共享一个内核,没有硬件虚拟化开销。
  • 资源隔离: 容器之间高度隔离,但仍共享内核。

优点:

  • 高效和低开销,适合大规模部署。
  • 容器启动速度快,资源利用率高。

缺点:

  • 需要相同的内核版本和操作系统版本,灵活性低于完全虚拟化。
  • 由于共享内核,安全隔离性较差。

3.4 总结

  • KVM: 适合需要强隔离和支持多种操作系统的环境,性能接近原生,但开销较大。
  • LXC: 适合需要高效、快速启动的环境,资源开销小,但只支持 Linux 系统,隔离性不如虚拟机。
  • OpenVZ: 适合大规模、高效的 Linux 环境,资源开销小,但安全隔离性较差,灵活性低。

根据你的需求和应用场景,你可以选择最适合的虚拟化技术。

4 购买NAT机

NAT机一般比VPS较为便宜,是搭建科学上网节点的一种好选择。这里主要推荐便宜的NAT机:

注意:这里所推荐的都是花费较少,不是第二天就跑路的商家。如果需要更好的机器,建议购买VPS!!!

4.0 Akile

购买地址

image-20240805211603375

4.1 ByteVirt

ByteVirt(无aff):KVM、LXC推荐

KVM

image-20240805201051148

LXC

image-20240805201126415

优化线路KVM:

优化线路一般指其线路比较好,比如移动的CMIN2、联通的4837、电信的CN2线路。网络走这些线路会更快,所搭建的节点延迟较低,可直连。

image-20240805201703591

SG测评地址

KR测评地址

4.2 酷雪云

酷雪云提供了LXC、KVM,在加拿大、法国、德国、芬兰、英国、香港、日本、美西均有售:

注意:该商家不提供Nat端口!!!

点击跳转到购买地址(无aff)

image-20240805202533289

CA测评FR测评DE测评

4.3 三金云

如果想点亮探针,又想体验一下大厂的机器,三金云是个不错的选择:

购买地址(无aff)

其中有AWS、龟壳、Akari等等大厂机器。

image-20240805205518541

4.4 KhanWebHost

注意:该机器为OpenVZ架构!!!

购买地址(无aff)注意:该机器为OpenVZ架构!!!

包括的位置(DE,PK,SE,SG,JP,TR,IN,USA,UK,CA,TW,HK)

image-20240805210240338

购买地址(无aff)KVM机器:

image-20240805210531817

但是这家有些奇葩,购买之后IPv6老是出现不通的情况。购买之后出现测试不通的情况记得发工单!

4.5 AC云

AC云大多数都是DO的拼车,价格较为优惠~

购买地址

image-20240805210824350

4.6 虚妄猫

购买地址

image-20240805211135040

当然这些便宜的机子难免的可能出现跑路情况。

5 NAT机必做项

5.1 NAT机连接

①查看NAT信息

情况1:一般商家都会把NAT的SSH端口、可用端口号在产品管理中可以查看到:

image.png

情况2:也有商家会直接给你发送邮箱信息中:

image-20240805213124292

情况3:也有商家直接提供IPv6,没有IPv4端口:

image-20240805213530450

情况4:你需要自己进行NAT转发:

image-20240805213735383

其中外网端口是填10000以上的端口号,内网端口即你NAT机器需要的端口号:如上外网13140,内网22。我可以通过IPv4+13140 从而连接到该NAT机器。

image-20240805213811014

②连接NAT

情况1:IPv4未被墙:NAT机一般IPv4都是被墙的,但也有意外。

测试公网的IPv4是否被墙地址:https://ping.pe

image.png

通过测试可以发现机子IP并没有被墙。可以直接通过Finalshell进行连接:

image.png

或采用Termius进行连接:填写主机IP,SSH端口号,root,密码

image-20240805212620061

情况2:IPv4被墙,且本地无IPv6环境。

如果机子IP被墙在FindShell中,设置代理服务器或者开启智能加速:

image.png

在Termius中,需要添加一个跳板机,该跳板机需要IPv4未墙。

image-20240805214611628

使用webssh进行连接:

image-20240805215310873

使用hax.co.id,进行IPv6转为IPv4。

情况3:本地有IPv6

直接填写IPv6地址、22、root、密码即可。

image-20240805215053502

5.2 NAT机开机必做

第一步:更新包

系统为Debian、ubuntu

Terminal window
apt update && apt install curl

系统为apline

Terminal window
apk add curl && apk add bash

融合怪脚本测试:

Terminal window
curl -L https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh

选择1.顺序测试:

image-20240805215834482

①开启BBR

信息1:查看TCP加速方式

image-20240805220215980 image-20240805220640648

使用科技Lion脚本:

Terminal window
curl -sS -O https://raw.githubusercontent.com/kejilion/sh/main/kejilion.sh && chmod +x kejilion.sh && ./kejilion.sh
image-20240805220841145

选择5:

image-20240805221217423

如果这里没有安装BBR内核,则选择1进行安装,安装完毕后需要重启,重启之后再选择11,进行加速。

image-20240805221324820

②开启warp

Terminal window
wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh
image-20240805222241204 image-20240805222257015

我们可以看到该Nat没有IPv6,我们可以通过Warp,为其开启IPv6网络接口,选择2。

如果你的NAT没有IPv4,可以选择为IPv6 only添加v4。如下图所示:

image-20240806082103796

以下均默认即可:

image-20240805222509126 image-20240805222605612

这样我们的NAT也有了IPv6的出口。

image-20240806082258270

没有IPv4的也获得了IPv4出口。

接着进行IP质量检测:

Terminal window
bash <(curl -Ls IP.Check.Place)
image-20240805222946476 image-20240805223057078