当我运行一个在线 IP 查找工具时,比如https://whatismyipaddress.com/,我得到一个像 24.253.65.208 这样的 IP 地址。
但是我已经将我的家庭路由器设置为 DHCP 服务器,并在一定范围内分配了静态 IP 地址,如下图所示:
如果我ifconfig
在笔记本电脑上运行,我会看到它的以太网 NIC 分配了 IP 地址 10.0.0.2:
$ ifconfig
br-fbff3346e4d9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.49.1 netmask 255.255.255.0 broadcast 192.168.49.255
inet6 fe79::42:e9fe:ff10:c35d prefixlen 64 scopeid 0x20<link>
ether 02:43:e9:10:c4:5e txqueuelen 0 (Ethernet)
RX packets 522576 bytes 24843001 (24.8 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 680143 bytes 1914033742 (1.9 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 30455 bytes 3345251 (3.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 30455 bytes 3345251 (3.3 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
veth84aa4c6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::f8a6:1dff:fea5:7eae prefixlen 64 scopeid 0x20<link>
ether fb:b6:1d:b5:7e:be txqueuelen 0 (Ethernet)
RX packets 505519 bytes 30297179 (30.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 661456 bytes 1855293659 (1.8 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.2 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::5f9c:c301:a6a3:6e36 prefixlen 64 scopeid 0x20<link>
ether f8:59:72:01:69:cf txqueuelen 1000 (Ethernet)
RX packets 4847088 bytes 6757721096 (6.7 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1937921 bytes 256121852 (256.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
但如您所见,没有24.253.65.208的迹象。
所以我的问题是: 24.253.65.208 - 外界似乎看到 - 和10.0.0.2之间的关系是什么,我的网卡实际上是分配的?
我想某些软件/硬件正在24.253.65.208和10.0.0.2之间“转换” ——但那是谁?我的路由器?
如果未选中用户路由器作为 DHCP 服务器框会有什么不同?如果未选中该框,我的网络中的各种设备将如何分配 IP 地址?
它通常是你的路由器,是的。除了常规 IP 路由外,所有家用路由器都具有 NAT 功能——大多数 ISP 只能为每位客户提供一个公共 IP 地址,并且您不能直接在多个设备之间共享该地址(即不能简单地
ifconfig
通过一次),因此地址被分配给路由器的“WAN”接口,它成为路由器的工作,将整个 LAN 的私有地址“伪装”为公共地址。如果你在路由器本身上运行
ifconfig
,ip addr
它可能看起来像这样(我做了它,接口可能不称为“wan0”和“lan0”,但你明白了):地址转换不是路由的内置部分,而是作为一个单独的功能完成的(并且可以与路由分开启用/禁用)。由于许多家庭路由器在内部运行 Linux 的变体,因此 NAT 功能通常通过标准 Linux iptables 实现——您可以在网上找到各种 iptables
SNAT
和规则示例。MASQUERADE
你可以想象路由器有这样的东西:但请注意,最近,随着一些 ISP 的 IP 地址用尽,并因此实施 CGNAT(“运营商级”NAT),到公共地址的转换可能由路由器(或专用 NAT 设备)在ISP 代替。更准确地说,CGNAT ISP 有两层转换——你的路由器仍然像以前一样有 NAT,将你的整个 LAN 伪装成一个 IP 地址,但它不再是公共地址;ISP 添加了提供公共地址的第二个转换层。这有点难看。
但另一方面,许多 ISP 现在正在向客户部署 IPv6——您还没有(至少在 ifconfig 输出中没有看到),但是如果您确实有 IPv6,那么您确实会发现您的计算机拥有自己的公共IP地址直接在其“wlan0”接口上,路由器就是这样,一个转发数据包而不进行任何地址转换的路由器。(也就是说,它仍然会为 IPv4 做 NAT,但不再为 IPv6 做。)
您的设备将不再自动分配 IP 地址,但除此之外没有任何变化。他们仍然应该像以前一样在路由器的“LAN”范围内拥有 IP 地址。如果您想在单独的系统上设置自己的 DHCP 服务器,同时仍使用与现在相同的路由器,或者如果您希望避免 DHCP 并完全依赖静态 IP 配置,则可以使用此选项。
此复选框不会禁用 NAT 或路由;路由器的 LAN 和 WAN 接口保持独立的 LAN 和 WAN 接口。如果您想完全绕过路由器(例如,在路由器具有内置 DSL 调制解调器并且您仍然需要“调制解调器”部分的情况下),您会寻找“桥接”模式。
不,不应该。在通常情况下,您的家庭路由器直接与您的家庭 LAN和ISP 的网络接壤——调制解调器根本不参与 IP,它只是转换较低层的信号。
虽然所谓的“调制解调器”通常是一个单元中的调制解调器和家庭路由器,但在这种情况下,它确实可以创建额外的路由和NAT 层——完全有可能链接多层 NAT 设备,而不是你应该,但它可能发生。
在这种情况下,最外面的家庭路由器(例如内置于调制解调器中的路由器)将被分配公共 IP 地址。
不,通常只有一个这样的层(除非您链接多个家庭路由器并且它们都被配置为认为它们中的每一个都直接连接到 ISP)。
一个数据包确实要经过很多网络和很多路由器,但作为一般规则,路由器不转换 IP 地址——它们只转发数据包。您的家庭路由器进行 NAT 是一个例外,而不是默认设置。
附带说明一下,不要依赖
ifconfig
Linux 系统来始终正确地报告事情。虽然它在大多数情况下都有效,但有时同一接口上可能有多个 IPv4 地址,但 ifconfig仍然没有更新为显示超过第一个地址(20 年后?),这可能会引起很多混乱。虽然 ifconfig 仍然是 BSD 系统上的主要工具,但“当前的”Linux 命令是ip a[ddr]
列出 IP 地址(可能ip -br a
是“简短的”每行一个接口的列表)并ip -s -h l[ink]
获取统计信息。是的,就是这样。事实上,它被称为网络地址转换 (NAT),它的存在是为了让您的网络上只有一个公共 IP 地址,但有多个私有地址。
您的公共地址与分配给您的内部设备的地址之间没有实际关联。内置 DHCP 服务器的家庭路由器几乎总是使用以下范围之一来分配地址:
10.0.0.1 - 10.255.255.254
172.16.0.1 - 172.31.255.254
192.168.0.1 - 192.168.255.254
这些范围被留作专用地址。
如果您关闭了路由器的 DHCP 功能,则您的设备在开机时将无法获取 IP 地址 - 除非以下情况之一为真:
您的网络上运行着另一台 DHCP 服务器,
或者您为每台设备分配了静态地址
这通常会列在 WAN 下。
是的。您的路由器在您的家庭网络和您的 ISP 网络之间路由流量。
您的 ISP 通过他们自己的路由器在他们的网络和互联网的其余部分之间路由流量。
您可以将 ISP/WAN 和家庭/LAN 视为路由器在其间传递信息的两个独立网络。
本地网络上的设备不会被分配与路由器位于同一子网的地址。
结果,他们将无法与您的路由器通信或通过您的路由器访问互联网。
半随机,取决于设备软件,如果设备设置为通过 DHCP 获取其 IP 地址,或者如果您已将它们配置为使用静态 IP 地址,则取决于设备软件。