Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

admin 2024年5月6日15:26:22评论0 views字数 5966阅读19分53秒阅读模式

Linux 网络 ELI5 — 第 1 部分,网络和接口

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

将 HTTP 请求从我的 Raspberry Pi(左)发送到我的 Cloud Ubuntu 实例(右)

大家好!在本文中,我们将从上次中断的地方继续我们的 Linux 网络之旅。之前,我们对网络、接口和基本的 Linux 命令进行了简单的介绍。现在,在本文中,我们将更深入地介绍网络本身,并讨论 IP 地址、NAT、DHCP 等。

如果你还没有读过第一部分,我强烈建议你快速浏览一下。

相关教程

linux程序设计与安全开发教程

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • windows

  • Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • windows()

  • Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • USB()

  • Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • ()

  • Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • ios

  • Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • windbg

  • Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • ()

  • Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCPLinux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCPLinux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

顶级域名;

IP Address: Unique set of characters that is used to identify computers in a network
IPv4 (protocol): A version of the IP address (legacy)
IPv6 (protocol): A version of the IP address (modern)

NAT: A solution method that connects two networks via private/public IP addresses
Private IP Address: An IP address used inside a closed network (ex. home, company)
Public IP Address: An IP address used outside the closed network (ex. internet)

Ping: A tool that send packets to the destination IP address (used for testing)

Static IP Configuration: A term for manually assigning IP address
Dynamic IP Configuration: A term for automatically assigning IP addressess
DHCP: A server that handles dynamic IP configuration inside a network

设置

由于网络需要多个设备相互连接,因此我设置了一个示例网络。这样我就可以给出更好的视觉示例,并在这段旅程中为您提供帮助。

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

我的基本网络设置

我有两台本地计算机通过我的家庭路由器相互连接。一台机器是运行 macOS Ventura 13.1 的 Apple Macbook Pro,另一台是我忠实的 Raspberry Pi 4b,运行 Ubuntu Server 22.04。

我还有一台运行 Ubuntu Server 22.04 的 Oracle Cloud 机器,与我的 Raspberry 相同。出于隐私和安全考虑,我隐藏了它的公共 IP 地址。

事不宜迟,让我们从IP开始。

IP地址

现在,我们拥有所有这些很酷的网络;本地网络、专用网络和公共网络。然而,在我们加入他们并开始玩乐之前,我们首先需要一些非常重要的东西。IP 地址。

IP 地址是一组唯一的字符,用于标识网络中的计算机。我们可以将它们视为我们的用户名、国民身份证或家庭住址。

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

IP地址可以与邮件地址进行比较 — 来源:Oleksandr Gamaniuk unsplash.com

目前有两种类型的 IP 地址。一种称为 IPv4,另一种称为 IPv6。在旧的网络时代,人们使用一个简单的 IP 地址,即 IPv4。但是,这个旧协议仅支持大约 43 亿 (2^32) 个不同的地址。

您可以看到 IPv4 是 2023 年的一个主要问题,因为有超过 43 亿台设备连接到互联网(约 140 亿台设备)。那么,如何才能让一切正常工作而不会崩溃呢?

这个问题有两个答案:IPv6 和 NAT。

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

示例 IP 地址' (IPv4 abd IPv6) — 来源:stackscale.com

IPv6 是一个已有 25 年历史的协议,旨在取代传统的 IPv4。从上图可以看出,它要大得多(32 位对 128 位),因此能够支持 340 万亿兆 (2^128) 设备。是的,你没看错!它几乎是无限的。

IPv6 解决了我们的大部分问题,但为什么大家还在使用 IPv4?主要有两个原因。

  1. 从 IPv4 迁移到 IPv6 的成本很高(时间和金钱)。对于大多数公司和个人来说,这是不值得的。NAT是“足够好”的。

  2. 大多数网络工具和硬件尚未支持或针对 IPv6 进行优化。

尽管 IPv4(在 NAT 的帮助下)已经足够好了,但迁移到 IPv6 是不可避免的,无论我们喜欢与否,它都会发生。从它逃跑。IPv6 仍然会到来。

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

大多数人讨厌IPv6,但这是不可避免的!来源:forwardingplane.net

好的,我们已经提到了 NAT。让我们来了解一下它的全部内容。

NAT 网络

网络地址转换 (NAT) 基本上是本地网络(如家庭网络)上的设备共享单个公共 IP 地址(ISP 提供给您的 IP 地址)以连接到互联网的一种方式。

想象一下,您家里有一台路由器和 3 台想要访问互联网的设备(iPhone、笔记本电脑和智能电视)。如果没有 NAT,每个设备都需要自己的 IP 地址,这将是昂贵且不切实际的(还记得 IPv4 吗?由于我们还没有使用IPv6,我们必须使用NAT来帮助我们。

基本上,NAT 允许网络上的多个设备共享单个公共 IP 地址并访问互联网,同时隐藏其私有 IP 地址。下图完美地说明了什么是 NAT。

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

私有 IP 与公共 IP — 来源:avg.com

为了更好地理解NAT是什么,我们还应该了解前面已经提到的两个新东西:私有IP地址和公共IP地址。

私有 IP 地址

这种 IP 地址用于在本地/专用网络中识别您的身份。例如;连接到家庭 Wi-Fi 的设备。或者连接到公司网络的工作计算机。

专用 IP 地址不是全局唯一的。这意味着,您的 iPhone 可以在您的家中和您朋友的家中使用相同的私人 IP。

大多数专用 IP 地址使用以下 IPv4 格式:192.168.x.x

本地/专用网络中的所有设备都使用彼此的专用 IP 地址相互通信(这包括您的家庭路由器/调制解调器)。让我们用我的网络设置举一个实际的例子。

我有两台机器(Macbook 和 Raspberry Pi)通过我的家庭路由器连接。因此,总共有三个网络设备,每个设备都有唯一的私有 IP 地址。请看下图。

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

我的本地网络设置

您可以看到我的每台设备都有自己的私有 IP 地址。甚至我的路由器也有一个!那是因为它仍然是网络中的设备,需要有一个 IP 才能与他人交谈。

大多数家用路由器和调制解调器的专用 IP 设置为 192.168.1.1。但是,您仍然可以使用 Linux 命令检查您的路由器 IP(稍后会详细介绍)

如果您想在 Linux 中学习自己的私有 IP,可以使用以下命令进行学习。

# I can choose not to specify <INTERFACE>, but then all interfaces will be displayed
$ ip addr show <INTERFACE>

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

由于我使用的是 wlan0 网络接口,因此我需要寻找它的私有 IP。我有两个私有 IP:IPv4 和 IPv6。

如果我想学习我的IPv4(192.168.1.31),那么我需要查看“inet”

或者,如果我想学习IPv6(fe80::e65f:1ff:fe47:8da1),我需要查看“inet6”

公共 IP 地址

您猜对了,此 IP 地址用于公共网络(又名 Internet)。这个很特别,因为它可以在整个公共网络上识别您。这意味着,网络中的每个人都可以使用此地址与您“通信”。

使用 NAT 时,您的公共 IP 地址不会直接指向您。它指向您的路由器或 NAT 设备。

这很重要,因为 NAT 允许多个设备共享同一个公共 IP 地址。

公共 IP 地址由您的 ISP 或您公司的 IT 部门提供给您。由于几乎每个人都使用 IPv4,因此只有少数数量的公共 IP 地址。这使它们变得有价值,并开辟了一个全新的赚钱市场。

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

您可以查看您的公共 IP 地址属于哪个 ISP 以及使用它的计算机的位置

如何了解您的公共 IP 地址有点棘手。没有合适的 Linux 方法,因为公共 IP 不直接存储在您的机器上。它存储在您的路由器、调制解调器或其他一些特殊设备(又名您的 NAT 设备)中。

以下命令是了解公共 IP 地址的常用方法之一。

# 'curl' is a command that is used to transfer/retrieve data from URLs
$ curl ifconfig.co

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

我的两台设备都具有相同的公共 IP 地址(因为 NAT)

本地网络上的每台设备共享相同的公共 IP 地址。例如;您的笔记本电脑、iPhone 和电视都具有相同的公共 IP 地址。所以,如果你的妹妹被英雄联盟封禁了IP,那么你也会被封禁(因为你们俩都有相同的公共IP)。

现在,在我们进一步讨论 IP 地址之前,我想介绍一下术语“ping”。Ping 是一种测试两个设备是否可以使用其 IP 地址在网络上相互通信的方法。

以下命令将包裹发送到目标地址。如果成功,那么您就知道两台机器已连接!

$ ping <DESTINATION_IP>

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

Ping 我的 Raspberry Pi (私有 IP) — Ping Google (Public IP)

我能够在不指定其公共 IP 地址的情况下 ping Google,因为我的机器使用的是 DNS。

我们现在需要知道的关于DNS的只是它将人类可读的地址(www.google.com)转换为计算机可读的(216.239.38.120)地址。在我们的 cace 中,这与 ping 216.239.38.120 是一回事

如何更改 IP 地址?- 私人和公共

好的,我们现在知道 IP 地址了。让我们尝试学习如何使用它们。首先,这里有一个您以前肯定听说过的流行术语:分配 IP 地址。这是什么意思?分配和更改 IP 地址有什么区别?

分配 IP 地址意味着您正在添加新的 IP 地址。

更改 IP 地址意味着您正在将当前使用的 IP 地址替换为新 IP 地址。

您应该知道的重要一点是,您可以通过分配拥有多个 IP 地址。(取决于您的操作系统和硬件。

现在,您的私有 IP 和公共 IP 都可以静态或动态更改。您也可以为两者分配新的!

静态 IP 地址

静态 IP 地址意味着您的 IP 地址不会随时间而改变,并保留...嗯,静态。这是使用 IP 地址的最基本和最简单的方法。

在 Linux 中分配新的私有 IP 地址是通过使用“ip”命令完成的。让我们来看看。

$ ip addr add <IP>/<NETMASK> dev <INTERFACE>

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

Ping 新 192.168.1.47(左)— 分配 192.168.1.47(右)

请看上图。您可以看到,在我分配新 IP 地址:192.168.1.47 之前,我无法 ping 它。但是,在使用“ip addr add”命令后,我成功地ping了它。这意味着,新IP有效!

另请注意,我有两个 IP 地址(请参阅右侧终端)。这意味着我可以在单个网络接口上使用多个 IP 地址。

您也可以删除 IP 地址。请看下面的命令。

$ ip addr del <IP>/<NETMASK> dev <INTERFACE>

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

我的IP消失了,化为灰烬

您可能会开始看到,通过分配新的 IP 地址然后删除旧的 IP 地址,我可以更改我的 IP 地址。这是更改 IP 地址的“现代 Linux”方法:通过添加新地址并删除旧地址。

现在我们知道了如何分配和更改我们的私有 IP 地址,让我们学习如何在公共领域(或不)执行相同的操作。

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

IP 地址可能令人困惑 — 来源:devRant.com

分配新的公共 IP 地址有点棘手。分配新的公共 IP 并不像使用简单的 Linux 命令那样简单。您需要从 ISP 购买静态 IP 或使用第三方服务。

从技术上讲,您不能“购买”公共 IP 地址,因为它们是公共资源,由大当局管理。

以下是一些可以隐喻性地“更改”静态公共 IP 地址的方法。

  1. 联系您的 ISP。(你需要从他们那里“购买”一个)

  2. 购买DNS服务(这是使用主机名的解决方法)

  3. 购买/使用 VPN(同样,使用“NAT 技术”的解决方法)

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

NordVPN是为数不多的提供静态/专用IP的服务之一

动态 IP 地址

动态 IP 地址意味着您的 IP 会随时间而变化。这意味着有一天您可能使用的是 192.168.1.5,而另一天您可能使用的是 192.168.1.43。

由于动态 IP 地址会随着时间的推移而变化,因此需要有人跟踪所有可用的 IP 地址并分配它们。那个人是谁?一个朋友叫DHCP。

专用网络和公共网络都可以使用 DHCP 服务器来分配动态 IP 地址。

DHCP 是动态分配 IP 地址的必备条件。

DHCP (英语)

动态主机配置协议 (DHCP) 是一种软件程序,负责为网络中的设备提供(分配)IP 地址。

当设备连接到网络时,它会发送请求 IP 地址的广播消息。DHCP 服务器通常在路由器或专用服务器上运行,接收请求并为设备分配可用的 IP 地址。

大多数现代路由器内部都内置了DHCP服务器。您可以通过进入路由器的配置页面(主要是通过在网络浏览器中键入 192.168.1.1)来检查您的。

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

我的路由器的DHCP设置页面

您可以看到我可以配置我的DHCP服务器。例如,我可以设置要提供给设备的 IP 地址范围。或者我的“租期”,这基本上意味着何时释放未使用的 IP 地址并使其可供其他人使用。

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

当你想到它时,DHCP 服务器非常慷慨——来源:mememaker.com

DHCP服务器非常强大。您可以使用DHCP服务器为您提供动态IP地址,也可以通过“ip addr”命令静态设置IP地址。但是有一种更好的方法可以通过专用来使您的 IP 静态。

在使用DHCP服务器时,您可以将IP地址专用于您自己,并且仅将您自己专用。您需要做的就是:将您的MAC地址与路由器配置页面中所需的IP地址相关联。

Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

在这里,我可以通过我的MAC地址获得专用IP

而且,如果您也想动态更改您的公共 IP 地址,那么您很幸运!因为你不需要做任何事情。每次重新启动路由器/调制解调器时,您的 ISP 都会为您提供一个新的公共 IP 地址。他们还可以随机更改您的公共 IP。

坏消息。没有人确切知道 ISP 何时会为您提供新的公共 IP。由于公共 IP 地址是有限的,他们会在需要/想要的时候发布并为您提供新的 IP。

结束语

在这一部分中,我们更多地了解了 IP 地址,例如它们的用途和不同的协议(IPv4 与 IPv6)。传统的 IPv4 协议向我们表明,仅靠它不足以支持现代互联网,因此将我们引向了 NAT。在讨论 NAT 时,我们了解了什么是私有 IP 地址和公共 IP 地址以及它们之间的区别。

最后,我们讨论了在 Linux 中分配新 IP 地址的不同方法。这些是静态的(使用“ip”命令)和动态的(使用路由器的DHCP服务器)。

在下一部分中,我们将深入探讨网络的软件方面。我主要要讨论的是端口、防火墙和路由表。

原文始发于微信公众号(安全狗的自我修养):Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCP

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月6日15:26:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux 网络 ELI5 — 第 2 部分,IP、NAT 和 DHCPhttps://cn-sec.com/archives/2711134.html

发表评论

匿名网友 填写信息