<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>网络 on 吾爱主机</title><link>https://blog.waihost.com/tags/%E7%BD%91%E7%BB%9C/</link><description>Recent content in 网络 on 吾爱主机</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 21 Jul 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://blog.waihost.com/tags/%E7%BD%91%E7%BB%9C/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker 桥接网络与嵌入式 DNS：原理、连通性与工程实践</title><link>https://blog.waihost.com/posts/docker-bridge-network-embedded-dns/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0800</pubDate><guid>https://blog.waihost.com/posts/docker-bridge-network-embedded-dns/</guid><description>&lt;img src="https://blog.waihost.com/images/covers/docker-bridge-network-embedded-dns.svg" alt="Featured image of post Docker 桥接网络与嵌入式 DNS：原理、连通性与工程实践" /&gt;&lt;p&gt;本地 &lt;code&gt;docker run&lt;/code&gt; 能通、Compose 里服务名却解析失败；两个容器“看起来在同一台机器”却互 ping 不通；或者明明没 &lt;code&gt;-p&lt;/code&gt;，却发现同网段容器已经能访问全部端口——这些日常问题，大多不是“Docker 坏了”，而是 &lt;strong&gt;bridge 网络模型 + DNS 解析路径&lt;/strong&gt; 理解不到位。&lt;/p&gt;
&lt;p&gt;本文基于 Docker 官方 &lt;em&gt;Networking overview&lt;/em&gt;、&lt;em&gt;Bridge network driver&lt;/em&gt;、&lt;em&gt;Packet filtering and firewalls&lt;/em&gt;、&lt;em&gt;Networking in Compose&lt;/em&gt; 与 &lt;em&gt;Legacy container links&lt;/em&gt;，把 &lt;strong&gt;默认 bridge 与用户自定义 bridge 的差异、嵌入式 DNS（&lt;code&gt;127.0.0.11&lt;/code&gt;）、端口可达性、防火墙/iptables 协作，以及可复现的连通性实验&lt;/strong&gt; 讲清楚，方便你在排障时按机制定位。&lt;/p&gt;
&lt;h2 id="一问题背景容器眼里只有网卡没有魔法互联"&gt;&lt;a href="#%e4%b8%80%e9%97%ae%e9%a2%98%e8%83%8c%e6%99%af%e5%ae%b9%e5%99%a8%e7%9c%bc%e9%87%8c%e5%8f%aa%e6%9c%89%e7%bd%91%e5%8d%a1%e6%b2%a1%e6%9c%89%e9%ad%94%e6%b3%95%e4%ba%92%e8%81%94" class="header-anchor"&gt;&lt;/a&gt;一、问题背景：容器眼里只有网卡，没有“魔法互联”
&lt;/h2&gt;&lt;p&gt;从容器视角看，网络很朴素：一张网卡、一个 IP、默认网关、路由表和 DNS。容器并不知道对端是不是另一个 Docker 容器，也不知道自己挂在 default bridge 还是自定义网络上。&lt;/p&gt;
&lt;p&gt;因此，工程里真正要掌握的是 &lt;strong&gt;Docker 如何在宿主机上拼出这张网&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用哪种 &lt;strong&gt;network driver&lt;/strong&gt; 创建隔离域；&lt;/li&gt;
&lt;li&gt;容器如何获得 IP，以及如何访问外网（masquerading）；&lt;/li&gt;
&lt;li&gt;同网/跨网时，&lt;strong&gt;哪些端口天然可达，哪些必须 publish&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;名字解析走 &lt;strong&gt;宿主 &lt;code&gt;/etc/resolv.conf&lt;/code&gt; 拷贝&lt;/strong&gt;，还是 Docker &lt;strong&gt;嵌入式 DNS&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;把这四条对齐后，再看 &lt;code&gt;docker network inspect&lt;/code&gt; 和 &lt;code&gt;cat /etc/resolv.conf&lt;/code&gt;，排障会快很多。&lt;/p&gt;
&lt;h2 id="二核心机制bridge-网络在做什么"&gt;&lt;a href="#%e4%ba%8c%e6%a0%b8%e5%bf%83%e6%9c%ba%e5%88%b6bridge-%e7%bd%91%e7%bb%9c%e5%9c%a8%e5%81%9a%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;二、核心机制：bridge 网络在做什么
&lt;/h2&gt;&lt;h3 id="21-软件桥与隔离边界"&gt;&lt;a href="#21-%e8%bd%af%e4%bb%b6%e6%a1%a5%e4%b8%8e%e9%9a%94%e7%a6%bb%e8%be%b9%e7%95%8c" class="header-anchor"&gt;&lt;/a&gt;2.1 软件桥与隔离边界
&lt;/h3&gt;&lt;p&gt;Bridge 驱动在 Linux 上使用软件网桥：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一 bridge 网络内的容器可互通；&lt;/li&gt;
&lt;li&gt;默认阻止来自其他 bridge 网络、以及 Docker 宿主机之外的直接访问；&lt;/li&gt;
&lt;li&gt;通过 &lt;strong&gt;masquerading（源地址伪装）&lt;/strong&gt; 让容器出网时，外部只看到宿主机 IP；&lt;/li&gt;
&lt;li&gt;支持 &lt;strong&gt;port publishing&lt;/strong&gt;，把容器端口映射到宿主机地址，供外部或其他网络访问。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方明确：bridge 面向 &lt;strong&gt;同一 Docker daemon 主机&lt;/strong&gt; 上的容器；跨主机通信需要 OS 级路由或 &lt;strong&gt;overlay&lt;/strong&gt; 等方案。&lt;/p&gt;
&lt;h3 id="22-内置驱动速览选型锚点"&gt;&lt;a href="#22-%e5%86%85%e7%bd%ae%e9%a9%b1%e5%8a%a8%e9%80%9f%e8%a7%88%e9%80%89%e5%9e%8b%e9%94%9a%e7%82%b9" class="header-anchor"&gt;&lt;/a&gt;2.2 内置驱动速览（选型锚点）
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Driver&lt;/th&gt;
					&lt;th&gt;典型用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;bridge&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;默认驱动；同机容器互联（本文重点）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;host&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;去掉网络隔离，直接用宿主机网络栈&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;none&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;完全隔离，无网络&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;overlay&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;多 daemon / Swarm 跨节点&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;macvlan&lt;/code&gt; / &lt;code&gt;ipvlan&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;让容器更像“物理网”上的设备 / VLAN 集成&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;没有特殊需求时，应用栈优先用 &lt;strong&gt;用户自定义 bridge&lt;/strong&gt;，而不是长期堆在 default &lt;code&gt;bridge&lt;/code&gt; 上。&lt;/p&gt;
&lt;h3 id="23-默认-bridge-vs-用户自定义-bridge必须分清"&gt;&lt;a href="#23-%e9%bb%98%e8%ae%a4-bridge-vs-%e7%94%a8%e6%88%b7%e8%87%aa%e5%ae%9a%e4%b9%89-bridge%e5%bf%85%e9%a1%bb%e5%88%86%e6%b8%85" class="header-anchor"&gt;&lt;/a&gt;2.3 默认 bridge vs 用户自定义 bridge（必须分清）
&lt;/h3&gt;&lt;p&gt;Docker 首次启动会自动创建名为 &lt;code&gt;bridge&lt;/code&gt; 的 &lt;strong&gt;default bridge&lt;/strong&gt;。未指定 &lt;code&gt;--network&lt;/code&gt; 的容器会连上它。&lt;/p&gt;
&lt;p&gt;官方对用户自定义 bridge 的结论很直接：&lt;strong&gt;User-defined bridge networks are superior to the default bridge network.&lt;/strong&gt; 关键差异如下。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;default bridge&lt;/th&gt;
					&lt;th&gt;用户自定义 bridge&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;名字解析&lt;/td&gt;
					&lt;td&gt;默认只能靠 IP；&lt;code&gt;--link&lt;/code&gt; 为 legacy&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;自动 DNS&lt;/strong&gt;：可用容器名/别名互访&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;隔离&lt;/td&gt;
					&lt;td&gt;未指定网络的容器都挤在一起，无关栈可能互通&lt;/td&gt;
					&lt;td&gt;只有加入该网络的容器互通，作用域清晰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;热插拔&lt;/td&gt;
					&lt;td&gt;要从 default bridge 换走，通常需停容器重建&lt;/td&gt;
					&lt;td&gt;运行中可用 &lt;code&gt;docker network connect/disconnect&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;配置粒度&lt;/td&gt;
					&lt;td&gt;全局一份（常需改 daemon 并重启）&lt;/td&gt;
					&lt;td&gt;每个网络可独立 &lt;code&gt;docker network create&lt;/code&gt; 配置&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;生产建议&lt;/td&gt;
					&lt;td&gt;官方视为 legacy 细节，&lt;strong&gt;不建议生产依赖&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;推荐作为同机服务互联默认选择&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;同一用户自定义 bridge 内的容器，&lt;strong&gt;彼此相当于暴露全部端口&lt;/strong&gt;；若要对其他网络或宿主机外访问，才需要 &lt;code&gt;-p/--publish&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="24-嵌入式-dns1270011"&gt;&lt;a href="#24-%e5%b5%8c%e5%85%a5%e5%bc%8f-dns1270011" class="header-anchor"&gt;&lt;/a&gt;2.4 嵌入式 DNS：&lt;code&gt;127.0.0.11&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;DNS 是 default bridge 与自定义网络最容易踩坑的分界线：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;default bridge&lt;/strong&gt;：容器通常拿到宿主 &lt;code&gt;/etc/resolv.conf&lt;/code&gt; 的&lt;strong&gt;拷贝&lt;/strong&gt;，按宿主配置解析公网名；&lt;strong&gt;默认不能靠容器名互访&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自定义网络（含 Compose 默认项目网络）&lt;/strong&gt;：使用 Docker &lt;strong&gt;embedded DNS&lt;/strong&gt;。
&lt;ul&gt;
&lt;li&gt;地址固定为 &lt;strong&gt;&lt;code&gt;127.0.0.11&lt;/code&gt;&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;没有 IPv6 等价地址&lt;/strong&gt;，IPv6-only 容器仍用该 IPv4 地址；&lt;/li&gt;
&lt;li&gt;容器名/别名解析在嵌入式 DNS 完成；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;外部域名查询会转发到宿主上配置的 DNS&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;若应用硬编码了 DNS 服务器地址，官方建议写 &lt;strong&gt;&lt;code&gt;127.0.0.11&lt;/code&gt;&lt;/strong&gt;（在自定义网络场景下），而不是宿主上的 &lt;code&gt;8.8.8.8&lt;/code&gt; 之类——后者会绕过容器名解析。&lt;/p&gt;
&lt;p&gt;可用标志（&lt;code&gt;docker run&lt;/code&gt; / &lt;code&gt;docker create&lt;/code&gt;）：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;标志&lt;/th&gt;
					&lt;th&gt;作用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;--dns&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;指定 DNS 服务器；注意解析发生在&lt;strong&gt;容器网络命名空间&lt;/strong&gt;，&lt;code&gt;--dns=127.0.0.1&lt;/code&gt; 指容器自己的 loopback&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;--dns-search&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;搜索域&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;--dns-opt&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;resolv.conf&lt;/code&gt; 选项&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;--hostname&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;容器主机名（默认多为容器 ID）&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;宿主 &lt;code&gt;/etc/hosts&lt;/code&gt; 的自定义条目&lt;strong&gt;不会自动继承&lt;/strong&gt;进容器；额外主机名用 &lt;code&gt;--add-host&lt;/code&gt; / Compose &lt;code&gt;extra_hosts&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="25-端口可达性与防火墙协作"&gt;&lt;a href="#25-%e7%ab%af%e5%8f%a3%e5%8f%af%e8%be%be%e6%80%a7%e4%b8%8e%e9%98%b2%e7%81%ab%e5%a2%99%e5%8d%8f%e4%bd%9c" class="header-anchor"&gt;&lt;/a&gt;2.5 端口可达性与防火墙协作
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;同 bridge 网络：容器端口对&lt;strong&gt;宿主&lt;/strong&gt;及&lt;strong&gt;同网其他容器&lt;/strong&gt;可达；&lt;/li&gt;
&lt;li&gt;默认配置下，&lt;strong&gt;其他 bridge 网络&lt;/strong&gt;或&lt;strong&gt;宿主机外&lt;/strong&gt;访问需要 publish；&lt;/li&gt;
&lt;li&gt;Linux 上 Docker 会创建防火墙规则以实现隔离、端口发布与 NAT；&lt;strong&gt;不要随意改 Docker 生成的规则&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;默认后端多为 &lt;strong&gt;iptables&lt;/strong&gt;，也支持 &lt;strong&gt;nftables&lt;/strong&gt;；bridge 上两者功能等价；&lt;/li&gt;
&lt;li&gt;对 &lt;code&gt;ipvlan&lt;/code&gt; / &lt;code&gt;macvlan&lt;/code&gt; / &lt;code&gt;host&lt;/code&gt;，Docker &lt;strong&gt;不创建&lt;/strong&gt;这套 bridge 规则；&lt;/li&gt;
&lt;li&gt;Docker 常会打开 IP 转发，并可能把转发默认策略设为 drop（防止宿主机无意变成路由器）；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker 与 ufw 不兼容的常见根因&lt;/strong&gt;：Docker 在 &lt;code&gt;nat&lt;/code&gt; 表改写流量，可能在 ufw 的 INPUT/OUTPUT 之前分流，导致“ufw 规则像没生效”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;常用网络级选项（&lt;code&gt;docker network create --opt&lt;/code&gt;）：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Option&lt;/th&gt;
					&lt;th&gt;默认&lt;/th&gt;
					&lt;th&gt;含义&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;com.docker.network.bridge.enable_ip_masquerade&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;出网伪装&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;com.docker.network.bridge.enable_icc&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;同网容器互通；可关以强制“只经代理/发布口访问”&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;com.docker.network.bridge.host_binding_ipv4&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;全部地址&lt;/td&gt;
					&lt;td&gt;未写主机 IP 时的默认绑定地址&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;com.docker.network.driver.mtu&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;0&lt;/code&gt;（不限制）&lt;/td&gt;
					&lt;td&gt;MTU&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="26-compose-如何落地同一套模型"&gt;&lt;a href="#26-compose-%e5%a6%82%e4%bd%95%e8%90%bd%e5%9c%b0%e5%90%8c%e4%b8%80%e5%a5%97%e6%a8%a1%e5%9e%8b" class="header-anchor"&gt;&lt;/a&gt;2.6 Compose 如何落地同一套模型
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;docker compose up&lt;/code&gt; 默认会创建名为 &lt;strong&gt;&lt;code&gt;&amp;lt;project-name&amp;gt;_default&lt;/code&gt;&lt;/strong&gt; 的 bridge 网络，服务全部加入，并向内部 DNS 注册&lt;strong&gt;服务名&lt;/strong&gt;。因此 Compose 里写 &lt;code&gt;http://api:8080&lt;/code&gt; 往往能通，而“裸 default bridge 起两个容器却写容器名”会失败——这不是 Compose 魔法，而是 &lt;strong&gt;自定义网络 + 嵌入式 DNS&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;还可声明 &lt;code&gt;internal: true&lt;/code&gt; 的网络（无默认出网网关），把数据库等后端放在“只能被同项目服务访问”的网段上。&lt;/p&gt;
&lt;h2 id="三实践可复现的连通性与-dns-实验"&gt;&lt;a href="#%e4%b8%89%e5%ae%9e%e8%b7%b5%e5%8f%af%e5%a4%8d%e7%8e%b0%e7%9a%84%e8%bf%9e%e9%80%9a%e6%80%a7%e4%b8%8e-dns-%e5%ae%9e%e9%aa%8c" class="header-anchor"&gt;&lt;/a&gt;三、实践：可复现的连通性与 DNS 实验
&lt;/h2&gt;&lt;p&gt;下面命令假定本机已安装 Docker Engine。若无 &lt;code&gt;alpine&lt;/code&gt; 镜像，会自动拉取。&lt;/p&gt;
&lt;h3 id="31-观察-default-bridge能通-ip不能靠名字"&gt;&lt;a href="#31-%e8%a7%82%e5%af%9f-default-bridge%e8%83%bd%e9%80%9a-ip%e4%b8%8d%e8%83%bd%e9%9d%a0%e5%90%8d%e5%ad%97" class="header-anchor"&gt;&lt;/a&gt;3.1 观察 default bridge：能通 IP，不能靠名字
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 两个容器都挂在 default bridge（未指定 --network）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d --name dns-a alpine sleep &lt;span class="m"&gt;3600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d --name dns-b alpine sleep &lt;span class="m"&gt;3600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 看 IP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker inspect -f &lt;span class="s1"&gt;&amp;#39;{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}&amp;#39;&lt;/span&gt; dns-a
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;IP_A&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;docker inspect -f &lt;span class="s1"&gt;&amp;#39;{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}&amp;#39;&lt;/span&gt; dns-a&lt;span class="k"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# IP 互通通常成功&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; dns-b ping -c1 &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="nv"&gt;$IP_A&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 名字解析：在 default bridge 上通常失败（无嵌入式 DNS 的容器名互访）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; dns-b ping -c1 dns-a &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;name resolve failed as expected on default bridge&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 看 resolv.conf：往往是宿主 DNS 拷贝，而不是 127.0.0.11&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; dns-b cat /etc/resolv.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;清理：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker rm -f dns-a dns-b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="32-用户自定义-bridge容器名解析--1270011"&gt;&lt;a href="#32-%e7%94%a8%e6%88%b7%e8%87%aa%e5%ae%9a%e4%b9%89-bridge%e5%ae%b9%e5%99%a8%e5%90%8d%e8%a7%a3%e6%9e%90--1270011" class="header-anchor"&gt;&lt;/a&gt;3.2 用户自定义 bridge：容器名解析 + &lt;code&gt;127.0.0.11&lt;/code&gt;
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker network create demo-net
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d --name web --network demo-net alpine sleep &lt;span class="m"&gt;3600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d --name db --network demo-net alpine sleep &lt;span class="m"&gt;3600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 名字应可解析&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; web ping -c1 db
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; db ping -c1 web
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 嵌入式 DNS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; web cat /etc/resolv.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 期望 nameserver 为 127.0.0.11&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 同网端口：无需 -p，另一容器即可访问（这里用 nc 示意）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; -d db sh -c &lt;span class="s1"&gt;&amp;#39;echo hi | nc -l -p 9000&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; web sh -c &lt;span class="s1"&gt;&amp;#39;nc -w 2 db 9000&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;运行中热挂网络：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d --name side alpine sleep &lt;span class="m"&gt;3600&lt;/span&gt; &lt;span class="c1"&gt;# 先在 default bridge&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker network connect demo-net side
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; side ping -c1 web
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker network disconnect demo-net side
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;清理：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker rm -f web db side
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker network rm demo-net
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="33-前后端分离网络拓扑多网卡容器"&gt;&lt;a href="#33-%e5%89%8d%e5%90%8e%e7%ab%af%e5%88%86%e7%a6%bb%e7%bd%91%e7%bb%9c%e6%8b%93%e6%89%91%e5%a4%9a%e7%bd%91%e5%8d%a1%e5%ae%b9%e5%99%a8" class="header-anchor"&gt;&lt;/a&gt;3.3 “前后端分离网络”拓扑（多网卡容器）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker network create frontend
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker network create --internal backend &lt;span class="c1"&gt;# 无默认出网，适合数据库平面&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d --name api --network frontend alpine sleep &lt;span class="m"&gt;3600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker network connect backend api
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d --name pg --network backend alpine sleep &lt;span class="m"&gt;3600&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# api 能访问 pg（同 backend）；pg 默认不应依赖出网&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; api ping -c1 pg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 可选：限制默认绑定，仅本机可访问已发布端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker network create &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --opt com.docker.network.bridge.host_binding_ipv4&lt;span class="o"&gt;=&lt;/span&gt;127.0.0.1 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; local-only
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="34-compose-最小可运行示意"&gt;&lt;a href="#34-compose-%e6%9c%80%e5%b0%8f%e5%8f%af%e8%bf%90%e8%a1%8c%e7%a4%ba%e6%84%8f" class="header-anchor"&gt;&lt;/a&gt;3.4 Compose 最小可运行示意
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# compose.yaml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;web&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;alpine&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;command&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;sleep 3600&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;depends_on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;api]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;api&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;alpine&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;command&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;sleep 3600&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;default, backend]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;alpine&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;command&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;sleep 3600&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;backend]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;networks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;backend&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;internal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose &lt;span class="nb"&gt;exec&lt;/span&gt; web ping -c1 api &lt;span class="c1"&gt;# 服务名 DNS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose &lt;span class="nb"&gt;exec&lt;/span&gt; api ping -c1 db
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker compose down
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="35-关闭-icc强制不能随意横穿"&gt;&lt;a href="#35-%e5%85%b3%e9%97%ad-icc%e5%bc%ba%e5%88%b6%e4%b8%8d%e8%83%bd%e9%9a%8f%e6%84%8f%e6%a8%aa%e7%a9%bf" class="header-anchor"&gt;&lt;/a&gt;3.5 关闭 ICC（强制“不能随意横穿”）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker network create &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --opt com.docker.network.bridge.enable_icc&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;false&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; no-icc-net
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 同网容器在 ICC 关闭后，默认相互连通会被限制&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 常用于强制流量只经反向代理或显式发布路径（结合具体策略验证）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker network rm no-icc-net
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="四常见坑与排查清单"&gt;&lt;a href="#%e5%9b%9b%e5%b8%b8%e8%a7%81%e5%9d%91%e4%b8%8e%e6%8e%92%e6%9f%a5%e6%b8%85%e5%8d%95" class="header-anchor"&gt;&lt;/a&gt;四、常见坑与排查清单
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;症状&lt;/th&gt;
					&lt;th&gt;优先检查&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;容器名 ping 不通&lt;/td&gt;
					&lt;td&gt;是否挂在 &lt;strong&gt;default bridge&lt;/strong&gt;？自定义网络里 &lt;code&gt;cat /etc/resolv.conf&lt;/code&gt; 是否为 &lt;code&gt;127.0.0.11&lt;/code&gt;？&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Compose 服务名不通&lt;/td&gt;
					&lt;td&gt;是否在同一 project 网络？服务是否显式挂到不同 network 且未共享？&lt;code&gt;docker network inspect &amp;lt;project&amp;gt;_default&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;外网不能访问容器&lt;/td&gt;
					&lt;td&gt;是否 &lt;code&gt;-p/--publish&lt;/code&gt;？安全组/云防火墙？绑定是否被 &lt;code&gt;host_binding_ipv4=127.0.0.1&lt;/code&gt; 限制在本机？&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;容器不能出网&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;enable_ip_masquerade&lt;/code&gt;？宿主 IP 转发？DNS 是否异常？&lt;code&gt;iptables=false&lt;/code&gt; 是否误关 Docker 防火墙规则？&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;ufw “放行了仍异常”&lt;/td&gt;
					&lt;td&gt;已知 Docker 与 ufw 规则路径冲突，publish 流量可能绕过 ufw 链&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;--link&lt;/code&gt; 老项目&lt;/td&gt;
					&lt;td&gt;官方标为 &lt;strong&gt;legacy&lt;/strong&gt;，推荐迁移到 user-defined networks；环境变量共享改用 env/volume/Compose&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;单网容器极多不稳定&lt;/td&gt;
					&lt;td&gt;内核限制：单 bridge 约 &lt;strong&gt;1000+&lt;/strong&gt; 容器时可能不稳定（见 moby#44973）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;多网卡默认路由怪&lt;/td&gt;
					&lt;td&gt;多网络时默认网关可能变化；可用 &lt;code&gt;gw-priority&lt;/code&gt; 指定优先网关&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;宿主 hosts 改了容器不生效&lt;/td&gt;
					&lt;td&gt;宿主 &lt;code&gt;/etc/hosts&lt;/code&gt; 不继承；用 &lt;code&gt;--add-host&lt;/code&gt; / &lt;code&gt;extra_hosts&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;推荐排查命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker network ls
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker network inspect &amp;lt;net&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker inspect -f &lt;span class="s1"&gt;&amp;#39;{{json .NetworkSettings.Networks}}&amp;#39;&lt;/span&gt; &amp;lt;ctr&amp;gt; &lt;span class="p"&gt;|&lt;/span&gt; jq .
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; &amp;lt;ctr&amp;gt; cat /etc/resolv.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; &amp;lt;ctr&amp;gt; ip route
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; &amp;lt;ctr&amp;gt; getent hosts &amp;lt;peer-name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 宿主侧（Linux）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ip link show &lt;span class="nb"&gt;type&lt;/span&gt; bridge
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 注意：不要随手 flush Docker 管理的 iptables 链&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="五工程建议可直接落到规范"&gt;&lt;a href="#%e4%ba%94%e5%b7%a5%e7%a8%8b%e5%bb%ba%e8%ae%ae%e5%8f%af%e7%9b%b4%e6%8e%a5%e8%90%bd%e5%88%b0%e8%a7%84%e8%8c%83" class="header-anchor"&gt;&lt;/a&gt;五、工程建议（可直接落到规范）
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;新项目默认创建用户自定义 bridge&lt;/strong&gt;（或直接用 Compose 项目网络），避免依赖 default bridge 与 &lt;code&gt;--link&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;服务发现用名字，不写死容器 IP&lt;/strong&gt;；IP 会随重建变化，DNS 是稳定契约。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;前后端分层网络&lt;/strong&gt;：对外服务进可出网网络，数据库进 &lt;code&gt;internal&lt;/code&gt; 网络；需要两边都通的 BFF/API 同时 attach。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;只 publish 必要端口&lt;/strong&gt;，生产优先绑定具体主机地址，避免 &lt;code&gt;0.0.0.0&lt;/code&gt; 无脑暴露。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不要手改 Docker 生成的防火墙规则&lt;/strong&gt;；若必须对接企业防火墙，走官方允许的集成方式，而不是 &lt;code&gt;iptables=false&lt;/code&gt; 一刀切。&lt;/li&gt;
&lt;li&gt;应用若强制配置 DNS，自定义网络场景优先 &lt;strong&gt;&lt;code&gt;127.0.0.11&lt;/code&gt;&lt;/strong&gt;，以免丢掉容器名解析。&lt;/li&gt;
&lt;li&gt;跨主机通信升级到 &lt;strong&gt;overlay / 服务网格 / 云网络&lt;/strong&gt;，不要指望单机 bridge “自动跨机”。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="六总结"&gt;&lt;a href="#%e5%85%ad%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;六、总结
&lt;/h2&gt;&lt;p&gt;Docker 单机互联的主干是 &lt;strong&gt;bridge&lt;/strong&gt;：软件桥提供 L2 邻接与隔离，masquerade 解决出网，publish 解决入站，&lt;strong&gt;嵌入式 DNS（&lt;code&gt;127.0.0.11&lt;/code&gt;）&lt;/strong&gt; 解决自定义网络上的名字发现。default bridge 适合“随手跑个容器”，但缺少容器名 DNS、隔离弱、配置粗，官方更推荐 &lt;strong&gt;user-defined bridge&lt;/strong&gt;；Compose 的服务名互通，本质上就是把这套模型产品化了。&lt;/p&gt;
&lt;p&gt;记住一条排障主线：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;先看容器挂在哪张网 → 再看 &lt;code&gt;/etc/resolv.conf&lt;/code&gt; 是不是 &lt;code&gt;127.0.0.11&lt;/code&gt; → 再判断该不该有 publish → 最后才怀疑防火墙/宿主路由。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;按这条线做，大部分“容器网络玄学”都会变成可验证的配置问题。&lt;/p&gt;
&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Docker Docs — &lt;a class="link" href="https://docs.docker.com/engine/network/" target="_blank" rel="noopener"
 &gt;Networking overview&lt;/a&gt;（官方；DNS / default bridge / drivers）&lt;/li&gt;
&lt;li&gt;Docker Docs — &lt;a class="link" href="https://docs.docker.com/engine/network/drivers/bridge/" target="_blank" rel="noopener"
 &gt;Bridge network driver&lt;/a&gt;（官方；default vs user-defined、选项表、ICC/masquerade）&lt;/li&gt;
&lt;li&gt;Docker Docs — &lt;a class="link" href="https://docs.docker.com/engine/network/drivers/" target="_blank" rel="noopener"
 &gt;Network drivers&lt;/a&gt;（官方；bridge/host/overlay/macvlan 等选型）&lt;/li&gt;
&lt;li&gt;Docker Docs — &lt;a class="link" href="https://docs.docker.com/engine/network/packet-filtering-firewalls/" target="_blank" rel="noopener"
 &gt;Packet filtering and firewalls&lt;/a&gt;（官方；iptables/nftables、ufw 注意点）&lt;/li&gt;
&lt;li&gt;Docker Docs — &lt;a class="link" href="https://docs.docker.com/compose/how-tos/networking/" target="_blank" rel="noopener"
 &gt;Networking in Compose&lt;/a&gt;（官方；项目默认网络与服务名 DNS）&lt;/li&gt;
&lt;li&gt;Docker Docs — &lt;a class="link" href="https://docs.docker.com/engine/network/links/" target="_blank" rel="noopener"
 &gt;Legacy container links&lt;/a&gt;（官方；&lt;code&gt;--link&lt;/code&gt; legacy 与迁移建议）&lt;/li&gt;
&lt;li&gt;源码文档镜像（核验用）：&lt;a class="link" href="https://github.com/docker/docs/tree/main/content/manuals/engine/network" target="_blank" rel="noopener"
 &gt;docker/docs &lt;code&gt;content/manuals/engine/network/&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Proxmox VE (PVE) 配置 NAT IPv4 及独立 IPv6 完整教程</title><link>https://blog.waihost.com/posts/proxmox-nat-ipv4-ipv6/</link><pubDate>Sun, 04 May 2025 14:05:11 +0800</pubDate><guid>https://blog.waihost.com/posts/proxmox-nat-ipv4-ipv6/</guid><description>&lt;img src="https://blog.waihost.com/images/covers/proxmox-nat-ipv4-ipv6.svg" alt="Featured image of post Proxmox VE (PVE) 配置 NAT IPv4 及独立 IPv6 完整教程" /&gt;&lt;hr&gt;
&lt;h3 id="proxmox-ve-pve-配置-nat-ipv4-及独立-ipv6-完整教程"&gt;&lt;a href="#proxmox-ve-pve-%e9%85%8d%e7%bd%ae-nat-ipv4-%e5%8f%8a%e7%8b%ac%e7%ab%8b-ipv6-%e5%ae%8c%e6%95%b4%e6%95%99%e7%a8%8b" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;Proxmox VE (PVE) 配置 NAT IPv4 及独立 IPv6 完整教程&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;支持 DHCPv4 自动分配内网 IPv4 及 DHCPv6/SLAAC 分配公网 IPv6&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="一环境准备"&gt;&lt;a href="#%e4%b8%80%e7%8e%af%e5%a2%83%e5%87%86%e5%a4%87" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;一、环境准备&lt;/strong&gt;
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;网络要求&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;宿主机拥有 &lt;strong&gt;1 个公网 IPv4&lt;/strong&gt; 和 &lt;strong&gt;1 个 /64 的 IPv6 子网&lt;/strong&gt;（例如 &lt;code&gt;2001:db8:1234::/64&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;示例参数：
&lt;ul&gt;
&lt;li&gt;IPv4 公网地址：&lt;code&gt;203.0.113.2/24&lt;/code&gt;，网关 &lt;code&gt;203.0.113.1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;IPv6 地址：&lt;code&gt;2001:db8:1234::1/64&lt;/code&gt;，网关 &lt;code&gt;fe80::1%vmbr0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;内网 NAT IPv4 子网：&lt;code&gt;192.168.100.0/24&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;宿主机网卡信息&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;物理网卡：&lt;code&gt;eth0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;虚拟网桥：&lt;code&gt;vmbr0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3 id="二宿主机网络配置"&gt;&lt;a href="#%e4%ba%8c%e5%ae%bf%e4%b8%bb%e6%9c%ba%e7%bd%91%e7%bb%9c%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;二、宿主机网络配置&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="1-编辑网络配置文件"&gt;&lt;a href="#1-%e7%bc%96%e8%be%91%e7%bd%91%e7%bb%9c%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;1. 编辑网络配置文件&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano /etc/network/interfaces
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="2-配置"&gt;&lt;a href="#2-%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;2. 配置 &lt;code&gt;vmbr0&lt;/code&gt; 网桥&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;auto lo
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iface lo inet loopback
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 主网桥配置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;auto vmbr0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iface vmbr0 inet static
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; address 203.0.113.2/24 # 宿主机公网 IPv4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gateway 203.0.113.1 # IPv4 网关
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bridge-ports eth0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bridge-stp off
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bridge-fd 0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # IPv4 NAT 配置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; post-up echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; post-up iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o vmbr0 -j MASQUERADE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; post-down iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o vmbr0 -j MASQUERADE
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # 添加 NAT 子网网关
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; post-up ip addr add 192.168.100.1/24 dev vmbr0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; post-down ip addr del 192.168.100.1/24 dev vmbr0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 配置 IPv6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iface vmbr0 inet6 static
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; address 2001:db8:1234::1/64 # 宿主机 IPv6 地址
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; gateway fe80::1%vmbr0 # IPv6 网关（根据实际修改）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; post-up sysctl -w net.ipv6.conf.vmbr0.accept_ra=2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; post-up sysctl -w net.ipv6.conf.vmbr0.autoconf=0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; post-up sysctl -w net.ipv6.conf.vmbr0.forwarding=1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="3-启用内核转发"&gt;&lt;a href="#3-%e5%90%af%e7%94%a8%e5%86%85%e6%a0%b8%e8%bd%ac%e5%8f%91" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;3. 启用内核转发&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano /etc/sysctl.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;添加以下内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;net.ipv4.ip_forward=1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;net.ipv6.conf.all.forwarding=1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;net.ipv6.conf.default.forwarding=1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;应用配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sysctl -p
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="三配置-dhcpv4-和-dhcpv6-服务器dnsmasq"&gt;&lt;a href="#%e4%b8%89%e9%85%8d%e7%bd%ae-dhcpv4-%e5%92%8c-dhcpv6-%e6%9c%8d%e5%8a%a1%e5%99%a8dnsmasq" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;三、配置 DHCPv4 和 DHCPv6 服务器（dnsmasq）&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="1-安装-dnsmasq"&gt;&lt;a href="#1-%e5%ae%89%e8%a3%85-dnsmasq" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;1. 安装 dnsmasq&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt update &amp;amp;&amp;amp; apt install dnsmasq
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="2-配置-dnsmasq"&gt;&lt;a href="#2-%e9%85%8d%e7%bd%ae-dnsmasq" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;2. 配置 dnsmasq&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano /etc/dnsmasq.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;添加以下内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 绑定到 vmbr0 接口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;interface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;vmbr0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# DHCPv4 配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dhcp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;100.100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;100.200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;255.255&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;255.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dhcp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;option&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;option&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;router&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;192.168&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;100.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dhcp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;option&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;option&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;dns&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;8.8&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;8.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;8.8&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;4.4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dhcp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;authoritative&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# DHCPv6 配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;enable&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;ra&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dhcp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;::,&lt;/span&gt;&lt;span class="n"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;vmbr0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;ra&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;stateless&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;ra&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dhcp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2001&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;db8&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1234&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2001&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;db8&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1234&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dhcp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;option&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;option6&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;dns&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2001&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4860&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4860&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="mi"&gt;8888&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2001&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4860&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4860&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="mi"&gt;8844&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="3-重启-dnsmasq"&gt;&lt;a href="#3-%e9%87%8d%e5%90%af-dnsmasq" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;3. 重启 dnsmasq&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl restart dnsmasq
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="四配置-ipv6-路由和-ndp-代理"&gt;&lt;a href="#%e5%9b%9b%e9%85%8d%e7%bd%ae-ipv6-%e8%b7%af%e7%94%b1%e5%92%8c-ndp-%e4%bb%a3%e7%90%86" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;四、配置 IPv6 路由和 NDP 代理&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="1-安装-ndppd"&gt;&lt;a href="#1-%e5%ae%89%e8%a3%85-ndppd" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;1. 安装 ndppd&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;apt install ndppd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="2-配置-ndppd"&gt;&lt;a href="#2-%e9%85%8d%e7%bd%ae-ndppd" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;2. 配置 ndppd&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano /etc/ndppd.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;添加以下内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;route-ttl 30000
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;proxy eth0 {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; rule 2001:db8:1234::/64 {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; static
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="3-启动-ndppd"&gt;&lt;a href="#3-%e5%90%af%e5%8a%a8-ndppd" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;3. 启动 ndppd&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;systemctl restart ndppd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="五防火墙规则"&gt;&lt;a href="#%e4%ba%94%e9%98%b2%e7%81%ab%e5%a2%99%e8%a7%84%e5%88%99" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;五、防火墙规则&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="1-允许-ipv4-转发"&gt;&lt;a href="#1-%e5%85%81%e8%ae%b8-ipv4-%e8%bd%ac%e5%8f%91" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;1. 允许 IPv4 转发&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iptables -A FORWARD -i vmbr0 -j ACCEPT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="2-允许-ipv6-转发"&gt;&lt;a href="#2-%e5%85%81%e8%ae%b8-ipv6-%e8%bd%ac%e5%8f%91" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;2. 允许 IPv6 转发&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ip6tables -A FORWARD -i vmbr0 -j ACCEPT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="3-保存防火墙规则"&gt;&lt;a href="#3-%e4%bf%9d%e5%ad%98%e9%98%b2%e7%81%ab%e5%a2%99%e8%a7%84%e5%88%99" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;3. 保存防火墙规则&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iptables-save &amp;gt; /etc/iptables/rules.v4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ip6tables-save &amp;gt; /etc/iptables/rules.v6
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="六虚拟机网络配置"&gt;&lt;a href="#%e5%85%ad%e8%99%9a%e6%8b%9f%e6%9c%ba%e7%bd%91%e7%bb%9c%e9%85%8d%e7%bd%ae" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;六、虚拟机网络配置&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="1-创建虚拟机"&gt;&lt;a href="#1-%e5%88%9b%e5%bb%ba%e8%99%9a%e6%8b%9f%e6%9c%ba" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;1. 创建虚拟机&lt;/strong&gt;
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;在 PVE Web 界面创建虚拟机时，网络设备选择 &lt;code&gt;vmbr0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键步骤&lt;/strong&gt;：勾选 &lt;strong&gt;“自动生成 MAC 地址”&lt;/strong&gt;（避免克隆时重复）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="2-虚拟机内部配置以-debian-12-为例"&gt;&lt;a href="#2-%e8%99%9a%e6%8b%9f%e6%9c%ba%e5%86%85%e9%83%a8%e9%85%8d%e7%bd%ae%e4%bb%a5-debian-12-%e4%b8%ba%e4%be%8b" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;2. 虚拟机内部配置（以 Debian 12 为例）&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 编辑网络配置文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano /etc/network/interfaces
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 配置 DHCPv4 和 IPv6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;auto ens18
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iface ens18 inet dhcp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;iface ens18 inet6 auto
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="3-验证网络"&gt;&lt;a href="#3-%e9%aa%8c%e8%af%81%e7%bd%91%e7%bb%9c" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;3. 验证网络&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 查看 IPv4 地址
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ip addr show ens18 | grep &amp;#34;inet &amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 查看 IPv6 地址
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ip -6 addr show ens18 | grep &amp;#34;inet6 2001:db8:1234&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 测试外网连通性
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ping 8.8.8.8
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ping6 ipv6.google.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="七故障排查"&gt;&lt;a href="#%e4%b8%83%e6%95%85%e9%9a%9c%e6%8e%92%e6%9f%a5" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;七、故障排查&lt;/strong&gt;
&lt;/h3&gt;&lt;h4 id="1-检查-dhcp-服务"&gt;&lt;a href="#1-%e6%a3%80%e6%9f%a5-dhcp-%e6%9c%8d%e5%8a%a1" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;1. 检查 DHCP 服务&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 查看 dnsmasq 日志&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;journalctl&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt; &lt;span class="n"&gt;dnsmasq&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;since&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;5 minutes ago&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 检查租约文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;misc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dnsmasq&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;leases&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="2-验证-ipv6-路由"&gt;&lt;a href="#2-%e9%aa%8c%e8%af%81-ipv6-%e8%b7%af%e7%94%b1" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;2. 验证 IPv6 路由&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 查看 IPv6 路由表
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ip -6 route show
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 测试 NDP 代理
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ndp -n
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="3-抓包分析"&gt;&lt;a href="#3-%e6%8a%93%e5%8c%85%e5%88%86%e6%9e%90" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;3. 抓包分析&lt;/strong&gt;
&lt;/h4&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 抓取 DHCP 流量
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tcpdump -i vmbr0 -nn -vvv port 67 or port 68
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# 抓取 IPv6 流量
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tcpdump -i vmbr0 -nn -vvv icmp6
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="八总结"&gt;&lt;a href="#%e5%85%ab%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;八、总结&lt;/strong&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NAT IPv4&lt;/strong&gt;：虚拟机通过 &lt;code&gt;192.168.100.0/24&lt;/code&gt; 子网共享宿主机 IPv4 出口。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;独立 IPv6&lt;/strong&gt;：虚拟机直接分配公网 IPv6 地址，无需 NAT。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DHCP 支持&lt;/strong&gt;：通过 &lt;code&gt;dnsmasq&lt;/code&gt; 实现 IPv4 和 IPv6 的自动分配。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;适用场景&lt;/strong&gt;：适用于仅有少量公网 IPv4 但拥有充足 IPv6 地址的环境（如 VPS 服务器）。&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>