<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://md5.pw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ZhiChao</id>
	<title>md5.pw - 用户贡献 [zh]</title>
	<link rel="self" type="application/atom+xml" href="https://md5.pw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ZhiChao"/>
	<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=Special:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/ZhiChao"/>
	<updated>2026-04-12T18:49:58Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D_Docker_%E7%AB%AF%E5%8F%A3%E6%84%8F%E5%A4%96%E6%9A%B4%E9%9C%B2&amp;diff=1888</id>
		<title>如何避免 Docker 端口意外暴露</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D_Docker_%E7%AB%AF%E5%8F%A3%E6%84%8F%E5%A4%96%E6%9A%B4%E9%9C%B2&amp;diff=1888"/>
		<updated>2026-04-12T15:43:28Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 前言 ==&lt;br /&gt;
刚接触 Docker 或者平常只使用 1Panel 这类面板的小白用户，最常遇到的问题应该就是明明 UFW 里没开放端口，但公网却可以直接通过端口访问容器。&lt;br /&gt;
&lt;br /&gt;
以 1Panel 为例，如果你在应用商店安装应用时，勾选了“端口外部访问”，此时的容器就会监听 &amp;lt;code&amp;gt;0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:Bwh-docker-port-1.webp|center]]&lt;br /&gt;
无论你有没有在 UFW 中开放这个端口，它都已经暴露到了公网。&lt;br /&gt;
[[File:Bwh-docker-port-2.webp|center]]&lt;br /&gt;
这个“陈年老坑”的原理很简单，因为 Docker 会直接修改 Linux 的 &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; 规则，而这些规则的优先级高于 UFW，并且在 UFW 中也不会显示 Docker 添加的规则。&lt;br /&gt;
&lt;br /&gt;
要想解决这个问题并不难，下面介绍一下最常见的几种解决方法。&lt;br /&gt;
&lt;br /&gt;
== 解决方法 ==&lt;br /&gt;
&lt;br /&gt;
=== 禁用 iptables（不推荐） ===&lt;br /&gt;
既然 Docker 会直接修改 iptables 绕过 UFW ，那直接禁用掉 iptables 自动配置，不就轻松秒杀了吗？&lt;br /&gt;
&lt;br /&gt;
在 &amp;lt;code&amp;gt;/etc/docker/daemon.json&amp;lt;/code&amp;gt; 中添加：&amp;lt;code&amp;gt;{&amp;quot;iptables&amp;quot;: false}&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:Bwh-docker-port-3.webp|center]]&lt;br /&gt;
相信你看到过网上许多的“庸医”教程就是这么教的，虽然说能够解决端口意外暴露的问题，但禁用 iptables 自动配置的同时还可能导致容器无法访问外部网络或容器间通信失败。&lt;br /&gt;
&lt;br /&gt;
因此&#039;&#039;&#039;非常不推荐&#039;&#039;&#039;直接禁用 iptables。&lt;br /&gt;
&lt;br /&gt;
=== 安全组（暂不支持） ===&lt;br /&gt;
如果你买的服务器有安全组功能，这个问题解决起来就非常的简单了，只要在后台的安全组中禁用端口，Docker 无论如何也不可能绕过安全组。&lt;br /&gt;
&lt;br /&gt;
但是可惜&#039;&#039;&#039;搬瓦工&#039;&#039;&#039;暂时还不支持类似安全组的外置防火墙，可以接着看下面的解决方案，通过合理配置 Docker 和 iptables 来解决这个问题。&lt;br /&gt;
&lt;br /&gt;
=== 监听 127.0.0.1（推荐） ===&lt;br /&gt;
对于大多数用户，端口映射时监听本地 &amp;lt;code&amp;gt;127.0.0.1:8080:80&amp;lt;/code&amp;gt; 是最好的解决方法，对应 1Panel 中就是不勾选“端口外部访问”。&lt;br /&gt;
&lt;br /&gt;
==== Docker ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
-p 127.0.0.1:8080:80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Docker Compose ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
ports:&lt;br /&gt;
  - &amp;quot;127.0.0.1:8080:80&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;本机&#039;&#039;&#039;的其他应用可以正常通过端口访问到容器，而外部访问不了，如果是 Web 应用可以直接用 Nginx 反向代理。&lt;br /&gt;
&lt;br /&gt;
但这个方法也不是完美的，当你想用&#039;&#039;&#039;另一台&#039;&#039;&#039;服务器反向代理时，监听 &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; 会导致装有 Nginx 的服务器也访问不到容器。&lt;br /&gt;
&lt;br /&gt;
=== host 模式 ===&lt;br /&gt;
直接使用 host 模式也是一个比较常用的解决方案，在 host 模式下，容器不会获得独立的网络命名空间，而是直接共享宿主机的 IP 和端口，自然就可以用 UFW 来控制端口是否开放。&lt;br /&gt;
&lt;br /&gt;
==== Docker ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
--network&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Docker Compose ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
network_mode: &amp;quot;host&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;但&#039;&#039;&#039;缺点&#039;&#039;&#039;也非常的明显，共享宿主机的网络会导致网络没有隔离、端口冲突等一系列副作用。例如，几个容器的端口都为 80，就没法同时运行了。&lt;br /&gt;
&lt;br /&gt;
=== 虚拟局域网 ===&lt;br /&gt;
如果你有用&#039;&#039;&#039;另一台&#039;&#039;&#039;服务器反代的需求，又不希望使用 host 模式，可以用 ZeroTier、Tailscale 之类的组网工具，给两台服务器组一个虚拟局域网，也是个不错的解决方案。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;当然如果你两台服务器都是搬瓦工的并且位于同一个机房，可以直接利用 Private Network 开启内网，可以省去组建虚拟局域网的步骤&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
可以参考这篇文章 [[搬瓦工进阶教程：利用 Private Network 构建高速内网集群]]&lt;br /&gt;
&lt;br /&gt;
在容器映射端口时，除了映射本机的 &amp;lt;code&amp;gt;127.0.0.0.1:8080:80&amp;lt;/code&amp;gt;，再加上一条虚拟局域网的 IP，如 &amp;lt;code&amp;gt;192.168.100.1:8080:80&amp;lt;/code&amp;gt;，另一台服务器反代时，填写 &amp;lt;code&amp;gt;192.168.100.1:8080&amp;lt;/code&amp;gt; 即可。&lt;br /&gt;
&lt;br /&gt;
==== Docker ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
-p 127.0.0.1:8080:80 \&lt;br /&gt;
-p 192.168.100.1:8080:80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Docker Compose ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
ports:&lt;br /&gt;
  - &amp;quot;127.0.0.1:8080:80&amp;quot; # 仅本机访问&lt;br /&gt;
  - &amp;quot;192.168.100.1:8080:80&amp;quot; # 仅通过特定局域网 IP 访问&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw-docker（推荐） ===&lt;br /&gt;
要是你既不想用组网工具，又不想（或不能）用 host 模式，还想用另一台服务器的 Nginx 来反代容器，有没有&#039;&#039;&#039;更完美&#039;&#039;&#039;的解决方法呢？&lt;br /&gt;
&lt;br /&gt;
有的，兄弟有的。&lt;br /&gt;
&lt;br /&gt;
ufw-docker 是 GitHub 上开源的一个解决方案，具体原理可以查看仓库的 README，我们这里简单介绍一下如何使用。&lt;br /&gt;
&lt;br /&gt;
==== 手动配置 ====&lt;br /&gt;
修改 UFW 的配置文件 &amp;lt;code&amp;gt;/etc/ufw/after.rules&amp;lt;/code&amp;gt;，在最后添加上如下规则：&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# BEGIN UFW AND DOCKER&lt;br /&gt;
*filter&lt;br /&gt;
:ufw-user-forward - [0:0]&lt;br /&gt;
:ufw-docker-logging-deny - [0:0]&lt;br /&gt;
:DOCKER-USER - [0:0]&lt;br /&gt;
-A DOCKER-USER -j ufw-user-forward&lt;br /&gt;
&lt;br /&gt;
-A DOCKER-USER -m conntrack --ctstate RELATED,ESTABLISHED -j RETURN&lt;br /&gt;
-A DOCKER-USER -m conntrack --ctstate INVALID -j DROP&lt;br /&gt;
-A DOCKER-USER -i docker0 -o docker0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
-A DOCKER-USER -j RETURN -s 10.0.0.0/8&lt;br /&gt;
-A DOCKER-USER -j RETURN -s 172.16.0.0/12&lt;br /&gt;
-A DOCKER-USER -j RETURN -s 192.168.0.0/16&lt;br /&gt;
&lt;br /&gt;
-A DOCKER-USER -j ufw-docker-logging-deny -m conntrack --ctstate NEW -d 10.0.0.0/8&lt;br /&gt;
-A DOCKER-USER -j ufw-docker-logging-deny -m conntrack --ctstate NEW -d 172.16.0.0/12&lt;br /&gt;
-A DOCKER-USER -j ufw-docker-logging-deny -m conntrack --ctstate NEW -d 192.168.0.0/16&lt;br /&gt;
&lt;br /&gt;
-A DOCKER-USER -j RETURN&lt;br /&gt;
&lt;br /&gt;
-A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix &amp;quot;[UFW DOCKER BLOCK] &amp;quot;&lt;br /&gt;
-A ufw-docker-logging-deny -j DROP&lt;br /&gt;
&lt;br /&gt;
COMMIT&lt;br /&gt;
# END UFW AND DOCKER&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;接着重启 UFW &amp;lt;code&amp;gt;systemctl restart ufw&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
此时即便你的容器监听的是 &amp;lt;code&amp;gt;0.0.0.0&amp;lt;/code&amp;gt;，外部也是无法访问的，同时也不会影响 Docker 容器内部网络以及容器之间的通信。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039;如果重启 UFW 仍不生效，可能需要重启服务器。&amp;lt;/blockquote&amp;gt;假设现在有一个监听了 &amp;lt;code&amp;gt;0.0.0.0:8080:80&amp;lt;/code&amp;gt; 的容器，私有地址为 &amp;lt;code&amp;gt;172.17.0.2&amp;lt;/code&amp;gt;，如果要开放端口可以执行以下命令：&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039;&amp;lt;code&amp;gt;port&amp;lt;/code&amp;gt; 为内部的 80 端口，并非映射的 8080 端口&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw route allow proto tcp from any to 172.17.0.2 port 80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
如果没有填写私有地址 &amp;lt;code&amp;gt;172.17.0.2&amp;lt;/code&amp;gt;，则会开放所有内部端口为 80 的容器&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw route allow proto tcp from any to any port 80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;如果你有大量容器需要让另一台服务器反代，可以直接对那台服务器的 IP 开放&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw route allow proto tcp from x.x.x.x to any&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
想要查看或删除规则，可以执行&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw status numbered&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
删除只需要执行 &amp;lt;code&amp;gt;ufw delete&amp;lt;/code&amp;gt; + 编号&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw delete 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 工具 ====&lt;br /&gt;
如果觉得以上操作过于繁琐，也没关系，ufw-docker 还提供了&#039;&#039;&#039;工具&#039;&#039;&#039;简化所有操作&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 wget -O /usr/local/bin/ufw-docker \&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;https://github.com/chaifeng/ufw-docker/raw/master/ufw-docker&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 chmod +x /usr/local/bin/ufw-docker&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
使用以下命令可以一键修改 UFW 的 &amp;lt;code&amp;gt;after.rules&amp;lt;/code&amp;gt; 文件&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw-docker install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
具体的操作可以通过 &amp;lt;code&amp;gt;ufw-docker help&amp;lt;/code&amp;gt; 查看，这里就不过多介绍了。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw-docker allow mysql 3306/tcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ​ufw-docker delete allow mysql 3306/tcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:500 常见应用指南 — Application Guides]]&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D_Docker_%E7%AB%AF%E5%8F%A3%E6%84%8F%E5%A4%96%E6%9A%B4%E9%9C%B2&amp;diff=1887</id>
		<title>如何避免 Docker 端口意外暴露</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D_Docker_%E7%AB%AF%E5%8F%A3%E6%84%8F%E5%A4%96%E6%9A%B4%E9%9C%B2&amp;diff=1887"/>
		<updated>2026-04-12T15:42:07Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 前言 ==&lt;br /&gt;
刚接触 Docker 或者平常只使用 1Panel 这类面板的小白用户，最常遇到的问题应该就是明明 UFW 里没开放端口，但公网却可以直接通过端口访问容器。&lt;br /&gt;
&lt;br /&gt;
以 1Panel 为例，如果你在应用商店安装应用时，勾选了“端口外部访问”，此时的容器就会监听 &amp;lt;code&amp;gt;0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:Bwh-docker-port-1.webp|center]]&lt;br /&gt;
无论你有没有在 UFW 中开放这个端口，它都已经暴露到了公网。&lt;br /&gt;
[[File:Bwh-docker-port-2.webp|center]]&lt;br /&gt;
这个“陈年老坑”的原理很简单，因为 Docker 会直接修改 Linux 的 &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; 规则，而这些规则的优先级高于 UFW，并且在 UFW 中也不会显示 Docker 添加的规则。&lt;br /&gt;
&lt;br /&gt;
要想解决这个问题并不难，下面介绍一下最常见的几种解决方法。&lt;br /&gt;
&lt;br /&gt;
== 解决方法 ==&lt;br /&gt;
&lt;br /&gt;
=== 禁用 iptables（不推荐） ===&lt;br /&gt;
既然 Docker 会直接修改 iptables 绕过 UFW ，那直接禁用掉 iptables 自动配置，不就轻松秒杀了吗？&lt;br /&gt;
&lt;br /&gt;
在 &amp;lt;code&amp;gt;/etc/docker/daemon.json&amp;lt;/code&amp;gt; 中添加：&amp;lt;code&amp;gt;{&amp;quot;iptables&amp;quot;: false}&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:Bwh-docker-port-3.webp|center]]&lt;br /&gt;
相信你看到过网上许多的“庸医”教程就是这么教的，虽然说能够解决端口意外暴露的问题，但禁用 iptables 自动配置的同时还可能导致容器无法访问外部网络或容器间通信失败。&lt;br /&gt;
&lt;br /&gt;
因此&#039;&#039;&#039;非常不推荐&#039;&#039;&#039;直接禁用 iptables。&lt;br /&gt;
&lt;br /&gt;
=== 安全组（暂不支持） ===&lt;br /&gt;
如果你买的服务器有安全组功能，这个问题解决起来就非常的简单了，只要在后台的安全组中禁用端口，Docker 无论如何也不可能绕过安全组。&lt;br /&gt;
&lt;br /&gt;
但是可惜&#039;&#039;&#039;搬瓦工&#039;&#039;&#039;暂时还不支持类似安全组的外置防火墙，可以接着看下面的解决方案，通过合理配置 Docker 和 iptables 来解决这个问题。&lt;br /&gt;
&lt;br /&gt;
=== 监听 127.0.0.1（推荐） ===&lt;br /&gt;
对于大多数用户，端口映射时监听本地 &amp;lt;code&amp;gt;127.0.0.1:8080:80&amp;lt;/code&amp;gt; 是最好的解决方法，对应 1Panel 中就是不勾选“端口外部访问”。&lt;br /&gt;
&lt;br /&gt;
==== Docker ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
-p 127.0.0.1:8080:80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Docker Compose ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
ports:&lt;br /&gt;
  - &amp;quot;127.0.0.1:8080:80&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;本机&#039;&#039;&#039;的其他应用可以正常通过端口访问到容器，而外部访问不了，如果是 Web 应用可以直接用 Nginx 反向代理。&lt;br /&gt;
&lt;br /&gt;
但这个方法也不是完美的，当你想用&#039;&#039;&#039;另一台&#039;&#039;&#039;服务器反向代理时，监听 &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; 会导致装有 Nginx 的服务器也访问不到容器。&lt;br /&gt;
&lt;br /&gt;
=== host 模式 ===&lt;br /&gt;
直接使用 host 模式也是一个比较常用的解决方案，在 host 模式下，容器不会获得独立的网络命名空间，而是直接共享宿主机的 IP 和端口，自然就可以用 UFW 来控制端口是否开放。&lt;br /&gt;
&lt;br /&gt;
==== Docker ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
--network&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Docker Compose ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
network_mode: &amp;quot;host&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;但&#039;&#039;&#039;缺点&#039;&#039;&#039;也非常的明显，共享宿主机的网络会导致网络没有隔离、端口冲突等一系列副作用。例如，几个容器的端口都为 80，就没法同时运行了。&lt;br /&gt;
&lt;br /&gt;
=== 虚拟局域网 ===&lt;br /&gt;
如果你有用&#039;&#039;&#039;另一台&#039;&#039;&#039;服务器反代的需求，又不希望使用 host 模式，可以用 ZeroTier、Tailscale 之类的组网工具，给两台服务器组一个虚拟局域网，也是个不错的解决方案。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;当然如果你两台服务器都是搬瓦工的并且位于同一个机房，可以直接利用 Private Network 开启内网，可以省去组建虚拟局域网的步骤&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
可以参考这篇文章 [[搬瓦工进阶教程：利用 Private Network 构建高速内网集群]]&lt;br /&gt;
&lt;br /&gt;
在容器映射端口时，除了映射本机的 &amp;lt;code&amp;gt;127.0.0.0.1:8080:80&amp;lt;/code&amp;gt;，再加上一条虚拟局域网的 IP，如 &amp;lt;code&amp;gt;192.168.100.1:8080:80&amp;lt;/code&amp;gt;，另一台服务器反代时，填写 &amp;lt;code&amp;gt;192.168.100.1:8080&amp;lt;/code&amp;gt; 即可。&lt;br /&gt;
&lt;br /&gt;
==== Docker ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
-p 127.0.0.1:8080:80 \&lt;br /&gt;
-p 192.168.100.1:8080:80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Docker Compose ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
ports:&lt;br /&gt;
  - &amp;quot;127.0.0.1:8080:80&amp;quot; # 仅本机访问&lt;br /&gt;
  - &amp;quot;192.168.100.1:8080:80&amp;quot; # 仅通过特定局域网 IP 访问&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw-docker（推荐） ===&lt;br /&gt;
要是你既不想用组网工具，又不想（或不能）用 host 模式，还想用另一台服务器的 Nginx 来反代容器，有没有&#039;&#039;&#039;更完美&#039;&#039;&#039;的解决方法呢？&lt;br /&gt;
&lt;br /&gt;
有的，兄弟有的。&lt;br /&gt;
&lt;br /&gt;
ufw-docker 是 GitHub 上开源的一个解决方案，具体原理可以查看仓库的 README，我们这里简单介绍一下如何使用。&lt;br /&gt;
&lt;br /&gt;
==== 手动配置 ====&lt;br /&gt;
修改 UFW 的配置文件 &amp;lt;code&amp;gt;/etc/ufw/after.rules&amp;lt;/code&amp;gt;，在最后添加上如下规则：&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# BEGIN UFW AND DOCKER&lt;br /&gt;
*filter&lt;br /&gt;
:ufw-user-forward - [0:0]&lt;br /&gt;
:ufw-docker-logging-deny - [0:0]&lt;br /&gt;
:DOCKER-USER - [0:0]&lt;br /&gt;
-A DOCKER-USER -j ufw-user-forward&lt;br /&gt;
&lt;br /&gt;
-A DOCKER-USER -m conntrack --ctstate RELATED,ESTABLISHED -j RETURN&lt;br /&gt;
-A DOCKER-USER -m conntrack --ctstate INVALID -j DROP&lt;br /&gt;
-A DOCKER-USER -i docker0 -o docker0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
-A DOCKER-USER -j RETURN -s 10.0.0.0/8&lt;br /&gt;
-A DOCKER-USER -j RETURN -s 172.16.0.0/12&lt;br /&gt;
-A DOCKER-USER -j RETURN -s 192.168.0.0/16&lt;br /&gt;
&lt;br /&gt;
-A DOCKER-USER -j ufw-docker-logging-deny -m conntrack --ctstate NEW -d 10.0.0.0/8&lt;br /&gt;
-A DOCKER-USER -j ufw-docker-logging-deny -m conntrack --ctstate NEW -d 172.16.0.0/12&lt;br /&gt;
-A DOCKER-USER -j ufw-docker-logging-deny -m conntrack --ctstate NEW -d 192.168.0.0/16&lt;br /&gt;
&lt;br /&gt;
-A DOCKER-USER -j RETURN&lt;br /&gt;
&lt;br /&gt;
-A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix &amp;quot;[UFW DOCKER BLOCK] &amp;quot;&lt;br /&gt;
-A ufw-docker-logging-deny -j DROP&lt;br /&gt;
&lt;br /&gt;
COMMIT&lt;br /&gt;
# END UFW AND DOCKER&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;接着重启 UFW &amp;lt;code&amp;gt;systemctl restart ufw&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
此时即便你的容器监听的是 &amp;lt;code&amp;gt;0.0.0.0&amp;lt;/code&amp;gt;，外部也是无法访问的，同时也不会影响 Docker 容器内部网络以及容器之间的通信。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039;如果重启 UFW 仍不生效，可能需要重启服务器。&amp;lt;/blockquote&amp;gt;假设现在有一个监听了 &amp;lt;code&amp;gt;0.0.0.0:8080:80&amp;lt;/code&amp;gt; 的容器，私有地址为 &amp;lt;code&amp;gt;172.17.0.2&amp;lt;/code&amp;gt;，如果要开放端口可以执行以下命令：&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039;&amp;lt;code&amp;gt;port&amp;lt;/code&amp;gt; 为内部的 80 端口，并非映射的 8080 端口&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw route allow proto tcp from any to 172.17.0.2 port 80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
如果没有填写私有地址 &amp;lt;code&amp;gt;172.17.0.2&amp;lt;/code&amp;gt;，则会开放所有内部端口为 80 的容器&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw route allow proto tcp from any to any port 80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;如果你有大量容器需要让另一台服务器反代，可以直接对那台服务器的 IP 开放&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw route allow proto tcp from x.x.x.x to any&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
想要查看或删除规则，可以执行&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw status numbered&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
删除只需要执行 &amp;lt;code&amp;gt;ufw delete&amp;lt;/code&amp;gt; + 编号&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw delete 2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 工具 ====&lt;br /&gt;
如果觉得以上操作过于繁琐，也没关系，ufw-docker 还提供了&#039;&#039;&#039;工具&#039;&#039;&#039;简化所有操作&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 wget -O /usr/local/bin/ufw-docker \&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;https://github.com/chaifeng/ufw-docker/raw/master/ufw-docker&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 chmod +x /usr/local/bin/ufw-docker&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
使用以下命令可以一键修改 UFW 的 &amp;lt;code&amp;gt;after.rules&amp;lt;/code&amp;gt; 文件&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw-docker install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
具体的操作可以通过 &amp;lt;code&amp;gt;ufw-docker help&amp;lt;/code&amp;gt; 查看，这里就不过多介绍了。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ufw-docker allow mysql 3306/tcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot;&amp;gt;&lt;br /&gt;
 ​ufw-docker delete allow mysql 3306/tcp&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[index.php?title=Category:500 常见应用指南 — Application Guides]]&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D_Docker_%E7%AB%AF%E5%8F%A3%E6%84%8F%E5%A4%96%E6%9A%B4%E9%9C%B2&amp;diff=1886</id>
		<title>如何避免 Docker 端口意外暴露</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D_Docker_%E7%AB%AF%E5%8F%A3%E6%84%8F%E5%A4%96%E6%9A%B4%E9%9C%B2&amp;diff=1886"/>
		<updated>2026-04-12T15:35:27Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​创建页面，内容为“== 前言 == 刚接触 Docker 或者平常只使用 1Panel 这类面板的小白用户，最常遇到的问题应该就是明明 UFW 里没开放端口，但公网却可以直接通过端口访问容器。  以 1Panel 为例，如果你在应用商店安装应用时，勾选了“端口外部访问”，此时的容器就会监听 &amp;lt;code&amp;gt;0.0.0.0&amp;lt;/code&amp;gt; center 无论你有没有在 UFW 中开放这个端口，它都已经暴露到…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 前言 ==&lt;br /&gt;
刚接触 Docker 或者平常只使用 1Panel 这类面板的小白用户，最常遇到的问题应该就是明明 UFW 里没开放端口，但公网却可以直接通过端口访问容器。&lt;br /&gt;
&lt;br /&gt;
以 1Panel 为例，如果你在应用商店安装应用时，勾选了“端口外部访问”，此时的容器就会监听 &amp;lt;code&amp;gt;0.0.0.0&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:Bwh-docker-port-1.webp|center]]&lt;br /&gt;
无论你有没有在 UFW 中开放这个端口，它都已经暴露到了公网。&lt;br /&gt;
[[File:Bwh-docker-port-2.webp|center]]&lt;br /&gt;
这个“陈年老坑”的原理很简单，因为 Docker 会直接修改 Linux 的 &amp;lt;code&amp;gt;iptables&amp;lt;/code&amp;gt; 规则，而这些规则的优先级高于 UFW，并且在 UFW 中也不会显示 Docker 添加的规则。&lt;br /&gt;
&lt;br /&gt;
要想解决这个问题并不难，下面介绍一下最常见的几种解决方法。&lt;br /&gt;
&lt;br /&gt;
== 解决方法 ==&lt;br /&gt;
&lt;br /&gt;
=== 禁用 iptables（不推荐） ===&lt;br /&gt;
既然 Docker 会直接修改 iptables 绕过 UFW ，那直接禁用掉 iptables 自动配置，不就轻松秒杀了吗？&lt;br /&gt;
&lt;br /&gt;
在 &amp;lt;code&amp;gt;/etc/docker/daemon.json&amp;lt;/code&amp;gt; 中添加：&amp;lt;code&amp;gt;{&amp;quot;iptables&amp;quot;: false}&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:Bwh-docker-port-3.webp|center]]&lt;br /&gt;
相信你看到过网上许多的“庸医”教程就是这么教的，虽然说能够解决端口意外暴露的问题，但禁用 iptables 自动配置的同时还可能导致容器无法访问外部网络或容器间通信失败。&lt;br /&gt;
&lt;br /&gt;
因此&#039;&#039;&#039;非常不推荐&#039;&#039;&#039;直接禁用 iptables。&lt;br /&gt;
&lt;br /&gt;
=== 安全组（暂不支持） ===&lt;br /&gt;
如果你买的服务器有安全组功能，这个问题解决起来就非常的简单了，只要在后台的安全组中禁用端口，Docker 无论如何也不可能绕过安全组。&lt;br /&gt;
&lt;br /&gt;
但是可惜&#039;&#039;&#039;搬瓦工&#039;&#039;&#039;暂时还不支持类似安全组的外置防火墙，可以接着看下面的解决方案，通过合理配置 Docker 和 iptables 来解决这个问题。&lt;br /&gt;
&lt;br /&gt;
=== 监听 127.0.0.1（推荐） ===&lt;br /&gt;
对于大多数用户，端口映射时监听本地 &amp;lt;code&amp;gt;127.0.0.1:8080:80&amp;lt;/code&amp;gt; 是最好的解决方法，对应 1Panel 中就是不勾选“端口外部访问”。&lt;br /&gt;
&lt;br /&gt;
==== Docker ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
-p 127.0.0.1:8080:80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Docker Compose ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
ports:&lt;br /&gt;
  - &amp;quot;127.0.0.1:8080:80&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;本机&#039;&#039;&#039;的其他应用可以正常通过端口访问到容器，而外部访问不了，如果是 Web 应用可以直接用 Nginx 反向代理。&lt;br /&gt;
&lt;br /&gt;
但这个方法也不是完美的，当你想用&#039;&#039;&#039;另一台&#039;&#039;&#039;服务器反向代理时，监听 &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; 会导致装有 Nginx 的服务器也访问不到容器。&lt;br /&gt;
&lt;br /&gt;
=== host 模式 ===&lt;br /&gt;
直接使用 host 模式也是一个比较常用的解决方案，在 host 模式下，容器不会获得独立的网络命名空间，而是直接共享宿主机的 IP 和端口，自然就可以用 UFW 来控制端口是否开放。&lt;br /&gt;
&lt;br /&gt;
==== Docker ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
--network&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Docker Compose ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
network_mode: &amp;quot;host&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;但&#039;&#039;&#039;缺点&#039;&#039;&#039;也非常的明显，共享宿主机的网络会导致网络没有隔离、端口冲突等一系列副作用。例如，几个容器的端口都为 80，就没法同时运行了。&lt;br /&gt;
&lt;br /&gt;
=== 虚拟局域网 ===&lt;br /&gt;
如果你有用&#039;&#039;&#039;另一台&#039;&#039;&#039;服务器反代的需求，又不希望使用 host 模式，可以用 ZeroTier、Tailscale 之类的组网工具，给两台服务器组一个虚拟局域网，也是个不错的解决方案。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;当然如果你两台服务器都是搬瓦工的并且位于同一个机房，可以直接利用 Private Network 开启内网，可以省去组建虚拟局域网的步骤&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
可以参考这篇文章 [[搬瓦工进阶教程：利用 Private Network 构建高速内网集群]]&lt;br /&gt;
&lt;br /&gt;
在容器映射端口时，除了映射本机的 &amp;lt;code&amp;gt;127.0.0.0.1:8080:80&amp;lt;/code&amp;gt;，再加上一条虚拟局域网的 IP，如 &amp;lt;code&amp;gt;192.168.100.1:8080:80&amp;lt;/code&amp;gt;，另一台服务器反代时，填写 &amp;lt;code&amp;gt;192.168.100.1:8080&amp;lt;/code&amp;gt; 即可。&lt;br /&gt;
&lt;br /&gt;
==== Docker ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sh&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
-p 127.0.0.1:8080:80 \&lt;br /&gt;
-p 192.168.100.1:8080:80&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Docker Compose ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
ports:&lt;br /&gt;
  - &amp;quot;127.0.0.1:8080:80&amp;quot; # 仅本机访问&lt;br /&gt;
  - &amp;quot;192.168.100.1:8080:80&amp;quot; # 仅通过特定局域网 IP 访问&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ufw-docker（推荐） ===&lt;br /&gt;
要是你既不想用组网工具，又不想（或不能）用 host 模式，还想用另一台服务器的 Nginx 来反代容器，有没有&#039;&#039;&#039;更完美&#039;&#039;&#039;的解决方法呢？&lt;br /&gt;
&lt;br /&gt;
有的，兄弟有的。&lt;br /&gt;
&lt;br /&gt;
ufw-docker 是 GitHub 上开源的一个解决方案，具体原理可以查看仓库的 README，我们这里简单介绍一下如何使用。&lt;br /&gt;
&lt;br /&gt;
==== 手动配置 ====&lt;br /&gt;
修改 UFW 的配置文件 &amp;lt;code&amp;gt;/etc/ufw/after.rules&amp;lt;/code&amp;gt;，在最后添加上如下规则：&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
# BEGIN UFW AND DOCKER&lt;br /&gt;
*filter&lt;br /&gt;
:ufw-user-forward - [0:0]&lt;br /&gt;
:ufw-docker-logging-deny - [0:0]&lt;br /&gt;
:DOCKER-USER - [0:0]&lt;br /&gt;
-A DOCKER-USER -j ufw-user-forward&lt;br /&gt;
&lt;br /&gt;
-A DOCKER-USER -m conntrack --ctstate RELATED,ESTABLISHED -j RETURN&lt;br /&gt;
-A DOCKER-USER -m conntrack --ctstate INVALID -j DROP&lt;br /&gt;
-A DOCKER-USER -i docker0 -o docker0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
-A DOCKER-USER -j RETURN -s 10.0.0.0/8&lt;br /&gt;
-A DOCKER-USER -j RETURN -s 172.16.0.0/12&lt;br /&gt;
-A DOCKER-USER -j RETURN -s 192.168.0.0/16&lt;br /&gt;
&lt;br /&gt;
-A DOCKER-USER -j ufw-docker-logging-deny -m conntrack --ctstate NEW -d 10.0.0.0/8&lt;br /&gt;
-A DOCKER-USER -j ufw-docker-logging-deny -m conntrack --ctstate NEW -d 172.16.0.0/12&lt;br /&gt;
-A DOCKER-USER -j ufw-docker-logging-deny -m conntrack --ctstate NEW -d 192.168.0.0/16&lt;br /&gt;
&lt;br /&gt;
-A DOCKER-USER -j RETURN&lt;br /&gt;
&lt;br /&gt;
-A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix &amp;quot;[UFW DOCKER BLOCK] &amp;quot;&lt;br /&gt;
-A ufw-docker-logging-deny -j DROP&lt;br /&gt;
&lt;br /&gt;
COMMIT&lt;br /&gt;
# END UFW AND DOCKER&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;接着重启 UFW &amp;lt;code&amp;gt;systemctl restart ufw&amp;lt;/code&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
此时即便你的容器监听的是 &amp;lt;code&amp;gt;0.0.0.0&amp;lt;/code&amp;gt;，外部也是无法访问的，同时也不会影响 Docker 容器内部网络以及容器之间的通信。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039;如果重启 UFW 仍不生效，可能需要重启服务器。&amp;lt;/blockquote&amp;gt;假设现在有一个监听了 &amp;lt;code&amp;gt;0.0.0.0:8080:80&amp;lt;/code&amp;gt; 的容器，私有地址为 &amp;lt;code&amp;gt;172.17.0.2&amp;lt;/code&amp;gt;，如果要开放端口可以执行以下命令：&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039;&amp;lt;code&amp;gt;port&amp;lt;/code&amp;gt; 为内部的 80 端口，并非映射的 8080 端口&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
 ufw route allow proto tcp from any to 172.17.0.2 port 80&lt;br /&gt;
如果没有填写私有地址 &amp;lt;code&amp;gt;172.17.0.2&amp;lt;/code&amp;gt;，则会开放所有内部端口为 80 的容器&lt;br /&gt;
 ufw route allow proto tcp from any to any port 80&lt;br /&gt;
&#039;&#039;&#039;如果你有大量容器需要让另一台服务器反代，可以直接对那台服务器的 IP 开放&#039;&#039;&#039;&lt;br /&gt;
 ufw route allow proto tcp from x.x.x.x to any&lt;br /&gt;
想要查看或删除规则，可以执行&lt;br /&gt;
 ufw status numbered&lt;br /&gt;
删除只需要执行 &amp;lt;code&amp;gt;ufw delete&amp;lt;/code&amp;gt; + 编号&lt;br /&gt;
 ufw delete 2&lt;br /&gt;
&lt;br /&gt;
==== 工具 ====&lt;br /&gt;
如果觉得以上操作过于繁琐，也没关系，ufw-docker 还提供了&#039;&#039;&#039;工具&#039;&#039;&#039;简化所有操作&lt;br /&gt;
 wget -O /usr/local/bin/ufw-docker \&lt;br /&gt;
   &amp;lt;nowiki&amp;gt;https://github.com/chaifeng/ufw-docker/raw/master/ufw-docker&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 chmod +x /usr/local/bin/ufw-docker&lt;br /&gt;
使用以下命令可以一键修改 UFW 的 &amp;lt;code&amp;gt;after.rules&amp;lt;/code&amp;gt; 文件&lt;br /&gt;
 ufw-docker install&lt;br /&gt;
具体的操作可以通过 &amp;lt;code&amp;gt;ufw-docker help&amp;lt;/code&amp;gt; 查看，这里就不过多介绍了。&lt;br /&gt;
 ufw-docker allow mysql 3306/tcp&lt;br /&gt;
&lt;br /&gt;
 ​ufw-docker delete allow mysql 3306/tcp&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-docker-port-3.webp&amp;diff=1885</id>
		<title>File:Bwh-docker-port-3.webp</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-docker-port-3.webp&amp;diff=1885"/>
		<updated>2026-04-12T15:28:43Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;禁用 iptabls&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-docker-port-2.webp&amp;diff=1884</id>
		<title>File:Bwh-docker-port-2.webp</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-docker-port-2.webp&amp;diff=1884"/>
		<updated>2026-04-12T15:28:07Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;nmap 测试&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-docker-port-1.webp&amp;diff=1883</id>
		<title>File:Bwh-docker-port-1.webp</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-docker-port-1.webp&amp;diff=1883"/>
		<updated>2026-04-12T15:27:15Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;端口外部访问&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=Affiliate_%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D&amp;diff=449</id>
		<title>Affiliate 项目介绍</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=Affiliate_%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D&amp;diff=449"/>
		<updated>2025-11-23T15:46:24Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 简介 ==&lt;br /&gt;
加入推广计划完全是自愿的。当有用户通过你的&#039;&#039;&#039;推广链接&#039;&#039;&#039;成功下单时，你将获得订单金额 &#039;&#039;&#039;22% 的佣金&#039;&#039;&#039;。&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;搬瓦工的佣金比例是业内最高水平之一。&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;更重要的是，这是&#039;&#039;&#039;循环佣金&#039;&#039;&#039;：当该用户进入下一个计费周期并完成续费，你仍然可以获得续费金额 &#039;&#039;&#039;22% 的佣金&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
== 推广规则 ==&lt;br /&gt;
如果你决定参与，为确保能够正常获得佣金，你&#039;&#039;&#039;必须遵守&#039;&#039;&#039;以下规则：&lt;br /&gt;
&lt;br /&gt;
=== 基本规则 ===&lt;br /&gt;
&lt;br /&gt;
* 推广链接必须由&#039;&#039;&#039;真实用户&#039;&#039;&#039;在正常浏览你的&#039;&#039;&#039;博客、网站&#039;&#039;&#039;时点击。&lt;br /&gt;
* 可以使用&#039;&#039;&#039;短链接&#039;&#039;&#039;或&#039;&#039;&#039;隐藏链接&#039;&#039;&#039;的方式推广，但必须保证用户是&#039;&#039;&#039;自愿点击&#039;&#039;&#039;，而非被误导或混淆。&lt;br /&gt;
* 我们可能会检查推广链接的来源情况，以确保符合规定。如果我们无法确认点击来源，可能会&#039;&#039;&#039;拒绝&#039;&#039;&#039;你的提现请求。&lt;br /&gt;
&lt;br /&gt;
=== 严格禁止 ===&lt;br /&gt;
以下行为严格禁止，一经发现将&#039;&#039;&#039;永久禁止参与推广计划&#039;&#039;&#039;：&lt;br /&gt;
&lt;br /&gt;
* 通过 &#039;&#039;&#039;Cookie 填充&#039;&#039;&#039;（如隐藏的图片）等方式偷偷加载推广链接。&lt;br /&gt;
* 任何&#039;&#039;&#039;人为增加&#039;&#039;&#039;推广链接访问量的行为（例如互相点击等）&lt;br /&gt;
* 在电子邮件、论坛帖子、私信、即时通信软件等&#039;&#039;&#039;未经允许&#039;&#039;&#039;的沟通中发送推广链接。&lt;br /&gt;
* 用推广链接为&#039;&#039;&#039;自己、家人&#039;&#039;&#039;或&#039;&#039;&#039;代替他人&#039;&#039;&#039;购买服务。&lt;br /&gt;
* 冒充&#039;&#039;&#039;搬瓦工官方&#039;&#039;&#039;（Bandwagon Host），以任何方式&#039;&#039;&#039;假装代表&#039;&#039;&#039;搬瓦工官方（Bandwagon Host）进行推广，包括但不限于使用官方 Logo，模仿网站设计等。&lt;br /&gt;
* 通过&#039;&#039;&#039;返利&#039;&#039;&#039;来诱导他人点击你的推广链接。&lt;br /&gt;
&lt;br /&gt;
== 佣金发放 ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;获得佣金&#039;&#039;&#039;：用户支付订单后，你将立刻可以在 Affiliate 页面查看到&#039;&#039;&#039;待处理佣金&#039;&#039;&#039;；如用户购买的服务未发生退款，&#039;&#039;&#039;31 天&#039;&#039;&#039;后你将可以提取该佣金。&lt;br /&gt;
* &#039;&#039;&#039;最低提现金额&#039;&#039;&#039;：无门槛，&#039;&#039;&#039;$0.01&#039;&#039;&#039; 起！&lt;br /&gt;
* &#039;&#039;&#039;提现方式&#039;&#039;&#039;：&#039;&#039;&#039;PayPal&#039;&#039;&#039; 或 &#039;&#039;&#039;账户余额&#039;&#039;&#039;。&lt;br /&gt;
* &#039;&#039;&#039;提现时效&#039;&#039;&#039;：除&#039;&#039;&#039;首次提现&#039;&#039;&#039;需人工审核外，后续大部分提现为&#039;&#039;&#039;实时&#039;&#039;&#039;付款（无需等待付款处理）&lt;br /&gt;
&lt;br /&gt;
[[Category:800 推广与返利专区 — Affiliate Section]]&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=Affiliate_%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D&amp;diff=448</id>
		<title>Affiliate 项目介绍</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=Affiliate_%E9%A1%B9%E7%9B%AE%E4%BB%8B%E7%BB%8D&amp;diff=448"/>
		<updated>2025-11-23T15:43:59Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​创建页面，内容为“== 简介 == 加入推广计划完全是自愿的。当有用户通过你的&amp;#039;&amp;#039;&amp;#039;推广链接&amp;#039;&amp;#039;&amp;#039;成功下单时，你将获得订单金额 &amp;#039;&amp;#039;&amp;#039;22% 的佣金&amp;#039;&amp;#039;&amp;#039;。&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;搬瓦工的佣金比例是业内最高水平之一。&amp;#039;&amp;#039;&amp;#039;&amp;lt;/blockquote&amp;gt;更重要的是，这是&amp;#039;&amp;#039;&amp;#039;循环佣金&amp;#039;&amp;#039;&amp;#039;：当该用户进入下一个计费周期并完成续费，你仍然可以获得续费金额 &amp;#039;&amp;#039;&amp;#039;22% 的佣金&amp;#039;&amp;#039;&amp;#039;。  == 推广规则 == 如果你决定参与，为确保能够正…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 简介 ==&lt;br /&gt;
加入推广计划完全是自愿的。当有用户通过你的&#039;&#039;&#039;推广链接&#039;&#039;&#039;成功下单时，你将获得订单金额 &#039;&#039;&#039;22% 的佣金&#039;&#039;&#039;。&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;搬瓦工的佣金比例是业内最高水平之一。&#039;&#039;&#039;&amp;lt;/blockquote&amp;gt;更重要的是，这是&#039;&#039;&#039;循环佣金&#039;&#039;&#039;：当该用户进入下一个计费周期并完成续费，你仍然可以获得续费金额 &#039;&#039;&#039;22% 的佣金&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
== 推广规则 ==&lt;br /&gt;
如果你决定参与，为确保能够正常获得佣金，你&#039;&#039;&#039;必须遵守&#039;&#039;&#039;以下规则：&lt;br /&gt;
&lt;br /&gt;
=== 基本规则 ===&lt;br /&gt;
&lt;br /&gt;
* 推广链接必须由&#039;&#039;&#039;真实用户&#039;&#039;&#039;在正常浏览你的&#039;&#039;&#039;博客、网站&#039;&#039;&#039;时点击。&lt;br /&gt;
* 可以使用&#039;&#039;&#039;短链接&#039;&#039;&#039;或&#039;&#039;&#039;隐藏链接&#039;&#039;&#039;的方式推广，但必须保证用户是&#039;&#039;&#039;自愿点击&#039;&#039;&#039;，而非被误导或混淆。&lt;br /&gt;
* 我们可能会检查推广链接的来源情况，以确保符合规定。如果我们无法确认点击来源，可能会&#039;&#039;&#039;拒绝&#039;&#039;&#039;你的提现请求。&lt;br /&gt;
&lt;br /&gt;
=== 严格禁止 ===&lt;br /&gt;
以下行为严格禁止，一经发现将&#039;&#039;&#039;永久禁止参与推广计划&#039;&#039;&#039;：&lt;br /&gt;
&lt;br /&gt;
* 通过 &#039;&#039;&#039;Cookie 填充&#039;&#039;&#039;（如隐藏的图片）等方式偷偷加载推广链接。&lt;br /&gt;
* 任何&#039;&#039;&#039;人为增加&#039;&#039;&#039;推广链接访问量的行为（例如互相点击等）&lt;br /&gt;
* 在电子邮件、论坛帖子、私信、即时通信软件等&#039;&#039;&#039;未经允许&#039;&#039;&#039;的沟通中发送推广链接。&lt;br /&gt;
* 用推广链接为&#039;&#039;&#039;自己、家人&#039;&#039;&#039;或&#039;&#039;&#039;代替他人&#039;&#039;&#039;购买服务。&lt;br /&gt;
* 冒充&#039;&#039;&#039;搬瓦工官方&#039;&#039;&#039;（Bandwagon Host），以任何方式&#039;&#039;&#039;假装代表&#039;&#039;&#039;搬瓦工官方（Bandwagon Host）进行推广，包括但不限于使用官方 Logo，模仿网站设计等。&lt;br /&gt;
* 通过&#039;&#039;&#039;返利&#039;&#039;&#039;来诱导他人点击你的推广链接。&lt;br /&gt;
&lt;br /&gt;
== 佣金发放 ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;获得佣金&#039;&#039;&#039;：用户支付订单后，你将立刻可以在 Affiliate 页面查看到&#039;&#039;&#039;待处理佣金&#039;&#039;&#039;；如用户购买的服务未发生退款，&#039;&#039;&#039;31 天&#039;&#039;&#039;后你将可以提取该佣金。&lt;br /&gt;
* &#039;&#039;&#039;最低提现金额&#039;&#039;&#039;：无门槛，&#039;&#039;&#039;$0.01&#039;&#039;&#039; 起！&lt;br /&gt;
* &#039;&#039;&#039;提现方式&#039;&#039;&#039;：&#039;&#039;&#039;PayPal&#039;&#039;&#039; 或 &#039;&#039;&#039;账户余额&#039;&#039;&#039;。&lt;br /&gt;
* &#039;&#039;&#039;提现时效&#039;&#039;&#039;：除&#039;&#039;&#039;首次提现&#039;&#039;&#039;需人工审核外，后续大部分提现为&#039;&#039;&#039;实时&#039;&#039;&#039;付款（无需等待付款处理）&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[[Category:800 推广与返利专区 — Affiliate Section]]&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=Affiliate_%E9%93%BE%E6%8E%A5%E8%AE%BE%E7%BD%AE%E4%B8%8E%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98&amp;diff=277</id>
		<title>Affiliate 链接设置与常见问题</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=Affiliate_%E9%93%BE%E6%8E%A5%E8%AE%BE%E7%BD%AE%E4%B8%8E%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98&amp;diff=277"/>
		<updated>2025-11-20T05:50:50Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​创建页面，内容为“== 获取链接 ==  === 常规链接 === 进入 &amp;#039;&amp;#039;&amp;#039;Affiliates&amp;#039;&amp;#039;&amp;#039; 页面后，你会获得一条类似如下的推广链接：  &amp;lt;nowiki&amp;gt;https://bandwagonhost.com/aff.php?aff={AFF_ID}&amp;lt;/nowiki&amp;gt; 这个链接会将用户引导到搬瓦工的&amp;#039;&amp;#039;&amp;#039;主页&amp;#039;&amp;#039;&amp;#039;。  === 产品链接 === 如果你希望精准推广某个具体产品，可以在 URL 中拼接 &amp;lt;code&amp;gt;pid&amp;lt;/code&amp;gt; 参数，使链接&amp;#039;&amp;#039;&amp;#039;直达产品页面&amp;#039;&amp;#039;&amp;#039;：  &amp;lt;nowiki&amp;gt;https://bandwagonhost.com/aff.php?aff={AFF_ID}&amp;amp;…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 获取链接 ==&lt;br /&gt;
&lt;br /&gt;
=== 常规链接 ===&lt;br /&gt;
进入 &#039;&#039;&#039;Affiliates&#039;&#039;&#039; 页面后，你会获得一条类似如下的推广链接：&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;https://bandwagonhost.com/aff.php?aff={AFF_ID}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
这个链接会将用户引导到搬瓦工的&#039;&#039;&#039;主页&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
=== 产品链接 ===&lt;br /&gt;
如果你希望精准推广某个具体产品，可以在 URL 中拼接 &amp;lt;code&amp;gt;pid&amp;lt;/code&amp;gt; 参数，使链接&#039;&#039;&#039;直达产品页面&#039;&#039;&#039;：&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;https://bandwagonhost.com/aff.php?aff={AFF_ID}&amp;amp;pid={PID}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
对于产品的 PID，有两种方式可以获取：&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;方式一：&#039;&#039;&#039; 将鼠标悬停在页面上的 &#039;&#039;&#039;“Order”&#039;&#039;&#039; 按钮，浏览器左下角会显示对应链接，从中可以找到 &amp;lt;code&amp;gt;pid&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:Bwh-affiliate-link-1.png|border|center|1000x1000px]]&lt;br /&gt;
&#039;&#039;&#039;方式二：&#039;&#039;&#039; 使用 &#039;&#039;&#039;F12&#039;&#039;&#039; 打开浏览器开发者工具，定位到 “Order” 按钮的 &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; 标签，在 &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; 属性中找到包含的 &amp;lt;code&amp;gt;pid&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:Bwh-affiliate-link-2.png|center|1000x1000px]]&lt;br /&gt;
以图示套餐为例，其 &amp;lt;code&amp;gt;pid&amp;lt;/code&amp;gt; 为 &#039;&#039;&#039;87&#039;&#039;&#039;，因此完整的推广链接为：&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;https://bandwagonhost.com/aff.php?aff={AFF_ID}&amp;amp;pid=87&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 产品组链接 ===&lt;br /&gt;
除了单一产品以外，还可以通过在 URL 中拼接 &amp;lt;code&amp;gt;gid&amp;lt;/code&amp;gt; 的方式来&#039;&#039;&#039;直达&#039;&#039;&#039;某个产品组：&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;https://bandwagonhost.com/aff.php?aff={AFF_ID}&amp;amp;gid={GID}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
目前搬瓦工只有一个产品组，因此可以直接将 &amp;lt;code&amp;gt;gid&amp;lt;/code&amp;gt; 设置为 1，即可展示所有的产品：&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;https://bandwagonhost.com/aff.php?aff={AFF_ID}&amp;amp;gid=1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 注册链接 ===&lt;br /&gt;
对于推广新用户，也可以直接在 URL 中拼接 &amp;lt;code&amp;gt;register=true&amp;lt;/code&amp;gt; 直接将链接引导到&#039;&#039;&#039;注册页面&#039;&#039;&#039;：&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;https://bandwagonhost.com/aff.php?aff={AFF_ID}&amp;amp;register=true&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 常见问题 ==&lt;br /&gt;
&lt;br /&gt;
=== 无法访问 bandwagonhost.com ===&lt;br /&gt;
针对中国用户访问受限的问题，可以将 &amp;lt;code&amp;gt;bandwagonhost.com&amp;lt;/code&amp;gt; 替换为任一官方镜像站（例如 &amp;lt;code&amp;gt;bwh81.net&amp;lt;/code&amp;gt;），&#039;&#039;&#039;不会影响推广效果&#039;&#039;&#039;。&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;https://bandwagonhost.com/aff.php?aff={AFF_ID}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
等效于：&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;https://bwh81.net/aff.php?aff={AFF_ID}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 无法跳转具体产品链接 ===&lt;br /&gt;
如果拼接 &amp;lt;code&amp;gt;pid&amp;lt;/code&amp;gt; 时，输入了一个不存在的 &amp;lt;code&amp;gt;pid&amp;lt;/code&amp;gt; 的，那么将无法找到具体的产品，页面会引导到 &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://bandwagonhost.com/cart.php&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;，展示所有的产品。&lt;br /&gt;
&lt;br /&gt;
因此，在推广某一具体产品时，请务必确认 &amp;lt;code&amp;gt;pid&amp;lt;/code&amp;gt; 是否正确。&lt;br /&gt;
&lt;br /&gt;
=== 未追踪到订单 ===&lt;br /&gt;
搬瓦工 Affiliate 通过 Cookie 中的 &amp;lt;code&amp;gt;WHMCSAffiliateID&amp;lt;/code&amp;gt; 追踪订单。如果用户下单前发生以下情况，可能导致订单未被追踪：&lt;br /&gt;
&lt;br /&gt;
* 清理浏览器缓存，导致 Cookie 被删除&lt;br /&gt;
* 开启了广告屏蔽插件，屏蔽了该 Cookie 写入&lt;br /&gt;
* 点击过其他 Affiliate 成员的推广链接，Cookie 被覆盖为他人的 Affiliate ID&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-affiliate-link-2.png&amp;diff=276</id>
		<title>File:Bwh-affiliate-link-2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-affiliate-link-2.png&amp;diff=276"/>
		<updated>2025-11-20T05:47:52Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AFF 链接 2&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-affiliate-link-1.png&amp;diff=275</id>
		<title>File:Bwh-affiliate-link-1.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-affiliate-link-1.png&amp;diff=275"/>
		<updated>2025-11-20T05:47:29Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AFF 链接 1&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=Affiliate_%E6%8F%90%E7%8E%B0&amp;diff=274</id>
		<title>Affiliate 提现</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=Affiliate_%E6%8F%90%E7%8E%B0&amp;diff=274"/>
		<updated>2025-11-20T03:28:35Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 概念 ==&lt;br /&gt;
在开始提现之前，需要先简单了解几个与佣金相关的基础概念：&amp;lt;blockquote&amp;gt;⚠️ 温馨提示：以下金额示例 &#039;&#039;&#039;仅用于流程说明&#039;&#039;&#039;，请以实际金额为准。&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;佣金比例（Commission percentage）&#039;&#039;&#039;：搬瓦工的佣金比例为 &#039;&#039;&#039;22%&#039;&#039;&#039;。例如，当用户购买了价值 $&#039;&#039;&#039;100 USD&#039;&#039;&#039; 的服务，你将获得 $&#039;&#039;&#039;22 USD&#039;&#039;&#039; 的佣金。&lt;br /&gt;
* &#039;&#039;&#039;待处理佣金（Pending commission）&#039;&#039;&#039;：订单支付后的 31 天内，佣金处于&#039;&#039;&#039;待处理&#039;&#039;&#039;状态，此阶段&#039;&#039;&#039;无法提现&#039;&#039;&#039;。&lt;br /&gt;
* &#039;&#039;&#039;目前可提现（Currently available for withdrawal）&#039;&#039;&#039;：如果用户在 31 天内未取消服务，&#039;&#039;&#039;待处理佣金&#039;&#039;&#039;将转换为&#039;&#039;&#039;可提现佣金&#039;&#039;&#039;，此时可以发起提现。&lt;br /&gt;
* &#039;&#039;&#039;支付总额（Total amount paid）&#039;&#039;&#039;：已经成功提现到账的佣金总和。&lt;br /&gt;
&lt;br /&gt;
== 提现 ==&lt;br /&gt;
当你作为推广新人完成第一笔推广后，进入 &#039;&#039;&#039;Affiliates&#039;&#039;&#039; 页面会看到类似下图的界面：此时由于佣金仍处于&#039;&#039;&#039;待处理状态&#039;&#039;&#039;，页面上不会显示提现按钮，需要耐心等待 31 天。&lt;br /&gt;
[[File:Bwh-affiliate-withdrawal-1.png|center|1000x1000px]]&lt;br /&gt;
翻译可以参照下表：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Affiliate&lt;br /&gt;
!&#039;&#039;&#039;项目&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;数额&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|佣金比例&lt;br /&gt;
|22%&lt;br /&gt;
|-&lt;br /&gt;
|待处理佣金&lt;br /&gt;
|$22.00 USD&lt;br /&gt;
|-&lt;br /&gt;
|目前可提现&lt;br /&gt;
|$0.00 USD&lt;br /&gt;
|-&lt;br /&gt;
|支付总额&lt;br /&gt;
|$0.00 USD&lt;br /&gt;
|}&lt;br /&gt;
在此期间，只要用户未取消服务，佣金就会自动转换为&#039;&#039;&#039;可提现佣金&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
待处理佣金转为可提现佣金后，页面会显示一个绿色提示框，通知你可以发起提现操作。&lt;br /&gt;
[[File:Bwh-affiliate-withdrawal-2.png|center]]&lt;br /&gt;
你可以选择以下两种方式提现：&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;提现到 PayPal（To Paypal account）&#039;&#039;&#039;：填写你的 PayPal 邮箱即可（对于中国推广者，国区 PayPal 也是可以接收佣金的）&lt;br /&gt;
* &#039;&#039;&#039;提现到账户余额（To account balance, to be used to pay for services）&#039;&#039;&#039;：无需填写信息，佣金会直接进入账户余额，可用于购买或续费服务。&lt;br /&gt;
&lt;br /&gt;
在佣金满足搬瓦工&#039;&#039;&#039;推广要求&#039;&#039;&#039;的情况下，大多数提现申请都会由系统自动处理，通常几分钟即可到账。&lt;br /&gt;
&lt;br /&gt;
如果是&#039;&#039;&#039;首次提现&#039;&#039;&#039;或使用了&#039;&#039;&#039;新的 PayPal 地址&#039;&#039;&#039;，系统可能需要人工审核，处理时间约 &#039;&#039;&#039;3 个工作日&#039;&#039;&#039;。在此期间，你可能需要通过工单提供推广渠道信息（如网站、博客等）&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=Affiliate_%E6%8F%90%E7%8E%B0&amp;diff=273</id>
		<title>Affiliate 提现</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=Affiliate_%E6%8F%90%E7%8E%B0&amp;diff=273"/>
		<updated>2025-11-20T03:27:17Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​创建页面，内容为“ == 概念 == 在开始提现之前，需要先简单了解几个与佣金相关的基础概念：&amp;lt;blockquote&amp;gt;⚠ 温馨提示：以下金额示例 &amp;#039;&amp;#039;&amp;#039;仅用于流程说明&amp;#039;&amp;#039;&amp;#039;，请以实际金额为准。&amp;lt;/blockquote&amp;gt;  * &amp;#039;&amp;#039;&amp;#039;佣金比例（Commission percentage）&amp;#039;&amp;#039;&amp;#039;：搬瓦工的佣金比例为 &amp;#039;&amp;#039;&amp;#039;22%&amp;#039;&amp;#039;&amp;#039;。例如，当用户购买了价值 $&amp;#039;&amp;#039;&amp;#039;100 USD&amp;#039;&amp;#039;&amp;#039; 的服务，你将获得 $&amp;#039;&amp;#039;&amp;#039;22 USD&amp;#039;&amp;#039;&amp;#039; 的佣金。 * &amp;#039;&amp;#039;&amp;#039;待处理佣金（Pending commission）&amp;#039;&amp;#039;&amp;#039;：订…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== 概念 ==&lt;br /&gt;
在开始提现之前，需要先简单了解几个与佣金相关的基础概念：&amp;lt;blockquote&amp;gt;⚠ 温馨提示：以下金额示例 &#039;&#039;&#039;仅用于流程说明&#039;&#039;&#039;，请以实际金额为准。&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;佣金比例（Commission percentage）&#039;&#039;&#039;：搬瓦工的佣金比例为 &#039;&#039;&#039;22%&#039;&#039;&#039;。例如，当用户购买了价值 $&#039;&#039;&#039;100 USD&#039;&#039;&#039; 的服务，你将获得 $&#039;&#039;&#039;22 USD&#039;&#039;&#039; 的佣金。&lt;br /&gt;
* &#039;&#039;&#039;待处理佣金（Pending commission）&#039;&#039;&#039;：订单支付后的 31 天内，佣金处于&#039;&#039;&#039;待处理&#039;&#039;&#039;状态，此阶段&#039;&#039;&#039;无法提现&#039;&#039;&#039;。&lt;br /&gt;
* &#039;&#039;&#039;目前可提现（Currently available for withdrawal）&#039;&#039;&#039;：如果用户在 31 天内未取消服务，&#039;&#039;&#039;待处理佣金&#039;&#039;&#039;将转换为&#039;&#039;&#039;可提现佣金&#039;&#039;&#039;，此时可以发起提现。&lt;br /&gt;
* &#039;&#039;&#039;支付总额（Total amount paid）&#039;&#039;&#039;：已经成功提现到账的佣金总和。&lt;br /&gt;
&lt;br /&gt;
== 提现 ==&lt;br /&gt;
当你作为推广新人完成第一笔推广后，进入 &#039;&#039;&#039;Affiliates&#039;&#039;&#039; 页面会看到类似下图的界面：此时由于佣金仍处于&#039;&#039;&#039;待处理状态&#039;&#039;&#039;，页面上不会显示提现按钮，需要耐心等待 31 天。&lt;br /&gt;
[[File:Bwh-affiliate-withdrawal-1.png|center|1000x1000px]]&lt;br /&gt;
翻译可以参照下表：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Affiliate&lt;br /&gt;
!&#039;&#039;&#039;项目&#039;&#039;&#039;&lt;br /&gt;
!&#039;&#039;&#039;数额&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|佣金比例&lt;br /&gt;
|22%&lt;br /&gt;
|-&lt;br /&gt;
|待处理佣金&lt;br /&gt;
|$22.00 USD&lt;br /&gt;
|-&lt;br /&gt;
|目前可提现&lt;br /&gt;
|$0.00 USD&lt;br /&gt;
|-&lt;br /&gt;
|支付总额&lt;br /&gt;
|$0.00 USD&lt;br /&gt;
|}&lt;br /&gt;
在此期间，只要用户未取消服务，佣金就会自动转换为&#039;&#039;&#039;可提现佣金&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
待处理佣金转为可提现佣金后，页面会显示一个绿色提示框，通知你可以发起提现操作。&lt;br /&gt;
[[File:Bwh-affiliate-withdrawal-2.png|center]]&lt;br /&gt;
你可以选择以下两种方式提现：&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;提现到 PayPal（To Paypal account）&#039;&#039;&#039;：填写你的 PayPal 邮箱即可（对于中国推广者，国区 PayPal 也是可以接收佣金的）&lt;br /&gt;
* &#039;&#039;&#039;提现到账户余额（To account balance, to be used to pay for services）&#039;&#039;&#039;：无需填写信息，佣金会直接进入账户余额，可用于购买或续费服务。&lt;br /&gt;
&lt;br /&gt;
在佣金满足搬瓦工&#039;&#039;&#039;推广要求&#039;&#039;&#039;的情况下，大多数提现申请都会由系统自动处理，通常几分钟即可到账。&lt;br /&gt;
&lt;br /&gt;
如果是&#039;&#039;&#039;首次提现&#039;&#039;&#039;或使用了&#039;&#039;&#039;新的 PayPal 地址&#039;&#039;&#039;，系统可能需要人工审核，处理时间约 &#039;&#039;&#039;3 个工作日&#039;&#039;&#039;。在此期间，你可能需要通过工单提供推广渠道信息（如网站、博客等）&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-affiliate-withdrawal-2.png&amp;diff=272</id>
		<title>File:Bwh-affiliate-withdrawal-2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-affiliate-withdrawal-2.png&amp;diff=272"/>
		<updated>2025-11-20T03:24:54Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AFF 提现 - 步骤2&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-affiliate-withdrawal-1.png&amp;diff=271</id>
		<title>File:Bwh-affiliate-withdrawal-1.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-affiliate-withdrawal-1.png&amp;diff=271"/>
		<updated>2025-11-20T03:22:32Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AFF 提现 - 步骤1&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%BF%AB%E7%85%A7%E3%80%81%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D&amp;diff=270</id>
		<title>快照、备份与恢复</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%BF%AB%E7%85%A7%E3%80%81%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D&amp;diff=270"/>
		<updated>2025-11-18T07:22:39Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 介绍 ==&lt;br /&gt;
搬瓦工的 KiwiVM 面板提供了快照与备份功能，其创建与存储&#039;&#039;&#039;完全免费&#039;&#039;&#039;，无需支付任何额外费用。&lt;br /&gt;
&lt;br /&gt;
在面板中，你会看到 &#039;&#039;&#039;快照 Snapshots&#039;&#039;&#039; 和 &#039;&#039;&#039;备份 Backups&#039;&#039;&#039; 两个选项。它们的共同点都是用于数据备份，但有所区别：快照需要手动创建，而备份则会自动生成。&lt;br /&gt;
&lt;br /&gt;
=== 快照 Snapshots ===&lt;br /&gt;
&lt;br /&gt;
* 快照是虚拟机的&#039;&#039;&#039;完整副本&#039;&#039;&#039;，可用于备份，需要&#039;&#039;&#039;手动创建&#039;&#039;&#039;。&lt;br /&gt;
** 创建快照时，会保存当前的&#039;&#039;&#039;所有状态&#039;&#039;&#039;，包括系统、设置、文件以及安装的应用。&lt;br /&gt;
** 恢复快照时，会&#039;&#039;&#039;原封不动&#039;&#039;&#039;的将当前系统恢复到创建时的状态。&lt;br /&gt;
* 快照默认保存 &#039;&#039;&#039;30 天&#039;&#039;&#039;，超过时间会自动删除。&lt;br /&gt;
* 设置为置顶 &#039;&#039;&#039;set sticky&#039;&#039;&#039; 的快照不受时间限制，可&#039;&#039;&#039;长期保存&#039;&#039;&#039;，每台虚拟机最多可设置 &#039;&#039;&#039;2 个置顶快照&#039;&#039;&#039;。&lt;br /&gt;
* 若需要长期保存更多快照，可通过&#039;&#039;&#039;下载链接&#039;&#039;&#039;将其保存到本地，恢复时再从本地上传导入。&lt;br /&gt;
* 快照不仅可以导入当前虚拟机，还可以通过 &#039;&#039;&#039;export&#039;&#039;&#039; 功能导出到其他虚拟机，作为数据迁移的一种方式。&lt;br /&gt;
&lt;br /&gt;
=== 备份 Backups ===&lt;br /&gt;
&lt;br /&gt;
* 备份功能是 &#039;&#039;&#039;KiwiVM 面板自动进行&#039;&#039;&#039;的，频率大约在一周一次，无法控制具体备份的时间和频率。&lt;br /&gt;
* 备份时不会打断系统的运行，无需关机或重启。&lt;br /&gt;
* 备份会保留 3 ~ 4 份左右，当你想要恢复时，可以将其导入到快照中。&lt;br /&gt;
&lt;br /&gt;
== 快照 Snapshots ==&lt;br /&gt;
&lt;br /&gt;
=== 创建快照 ===&lt;br /&gt;
进入 KiwiVM 面板，在侧边栏中选择 &#039;&#039;&#039;“Snapshots”&#039;&#039;&#039; 选项卡，然后在右侧点击 &#039;&#039;&#039;“Create new snapshot”&#039;&#039;&#039;，即可进入快照创建页面。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039; 创建快照的过程中，虚拟机会&#039;&#039;&#039;自动重启&#039;&#039;&#039;！&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
[[File:Bwh-create-snapshots-1.png|center|1000x1000px]]&lt;br /&gt;
接下来，为快照添加一个简短的描述。建议用 “日期 + 操作” 来命名，方便后续识别和恢复，例如，&amp;lt;code&amp;gt;2025-11-06_nginx_installed&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
最后，点击右侧的 &#039;&#039;&#039;“Create new snapshot”&#039;&#039;&#039; 按钮，即可开始创建。&lt;br /&gt;
[[File:Bwh-create-snapshots-2.png|center|1000x1000px]]&lt;br /&gt;
根据虚拟机硬盘容量的不同，快照创建可能需要几分钟到一小时不等。过程中虚拟机会&#039;&#039;&#039;自动重启&#039;&#039;&#039;。&lt;br /&gt;
[[File:Bwh-create-snapshots-3.png|center|1000x1000px]]&lt;br /&gt;
当快照创建完成后，系统会自动向你的搬瓦工绑定的邮箱发送&#039;&#039;&#039;通知邮件&#039;&#039;&#039;。&lt;br /&gt;
[[File:Bwh-create-snapshots-4.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== 恢复快照 ===&lt;br /&gt;
在恢复快照之前，虚拟机必须处于&#039;&#039;&#039;关机&#039;&#039;&#039;状态。&lt;br /&gt;
&lt;br /&gt;
进入 KiwiVM 面板，在侧边栏中选择 &#039;&#039;&#039;“Main controls”&#039;&#039;&#039; 选项卡，然后在 “Actions” 区域点击 &#039;&#039;&#039;“Stop”&#039;&#039;&#039; 按钮关闭虚拟机。&lt;br /&gt;
[[File:Bwh-restore-snapshots-1.png|center|thumb|1000x1000px]]&lt;br /&gt;
关闭后，返回 &#039;&#039;&#039;“Snapshots”&#039;&#039;&#039; 选项卡，即可看到之前创建的快照。点击对应快照右侧的 &#039;&#039;&#039;“restore”&#039;&#039;&#039; 按钮，进入快照恢复流程。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039; 恢复快照后，虚拟机将回到快照创建时的状态。自那之后的所有更改都将被&#039;&#039;&#039;完全覆盖并丢失&#039;&#039;&#039;。&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
[[File:Bwh-restore-snapshots-2.png|center|thumb|1000x1000px]]&lt;br /&gt;
确认无误后，点击下方的 &#039;&#039;&#039;“I agree with full data overwrite, restore snapshot”&#039;&#039;&#039; 按钮，系统会开始执行恢复操作。&lt;br /&gt;
[[File:Bwh-restore-snapshots-3.png|border|center|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
=== 保存快照 ===&lt;br /&gt;
默认情况下，创建的快照会在 &#039;&#039;&#039;30 天后自动删除&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
如果希望长期保留某个快照，可以点击 &#039;&#039;&#039;“set sticky”&#039;&#039;&#039; 将其设置为&#039;&#039;&#039;置顶&#039;&#039;&#039;，置顶快照不会过期。每台虚拟机最多可置顶 &#039;&#039;&#039;2 个快照&#039;&#039;&#039;。&lt;br /&gt;
[[File:Bwh-sticky-snapshots.png|center|thumb|1000x1000px]]&lt;br /&gt;
若需要长期保留的快照超过 2 个，可以将其余快照&#039;&#039;&#039;下载到本地&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
在页面下方找到 &#039;&#039;&#039;“HTTP Download link”&#039;&#039;&#039; 或 &#039;&#039;&#039;“HTTPS Download link”&#039;&#039;&#039;，点击后方的 &#039;&#039;&#039;“Copy”&#039;&#039;&#039; 按钮复制下载链接，然后使用下载器将快照文件保存到本地。&lt;br /&gt;
[[File:Bwh-download-snapshots.png|center|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
=== 导出快照 ===&lt;br /&gt;
除了在当前虚拟机恢复快照外，你还可以点击 &#039;&#039;&#039;“export”&#039;&#039;&#039; 按钮，将此快照导出。&lt;br /&gt;
[[File:Bwh-export-snapshots-1.png|center|1000x1000px]]&lt;br /&gt;
导出快照后，你会获取到快照的 &amp;lt;code&amp;gt;VEID&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt; ，可以轻松实现多台虚拟机之间的&#039;&#039;&#039;数据迁移&#039;&#039;&#039;。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039; 请勿泄露 &amp;lt;code&amp;gt;VEID&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
[[File:Bwh-export-snapshots-2.png|center|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
=== 导入快照 ===&lt;br /&gt;
当你购置了新的搬瓦工虚拟机后，可以直接将旧虚拟机的快照导入实现&#039;&#039;&#039;数据迁移&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
进入 KiwiVM 面板，在侧边栏中选择 &#039;&#039;&#039;“Snapshots”&#039;&#039;&#039; 选项卡，然后在右侧点击 &#039;&#039;&#039;“Import a snapshot”&#039;&#039;&#039; 按钮。&lt;br /&gt;
[[File:Bwh-import-snapshots-1.png|center|1000x1000px]]&lt;br /&gt;
在新页面中，输入之前保存的 &amp;lt;code&amp;gt;VEID&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt;，然后点击下方的 &#039;&#039;&#039;“Import”&#039;&#039;&#039; 按钮开始导入。&lt;br /&gt;
&lt;br /&gt;
与创建快照的时候一样，快照导入完成后，系统也会自动向你搬瓦工绑定的邮箱发送&#039;&#039;&#039;通知邮件&#039;&#039;&#039;。&lt;br /&gt;
[[File:Bwh-import-snapshots-2.png|center|1000x1000px]]&lt;br /&gt;
导入成功后，即可按照前文“恢复快照”的步骤进行系统恢复。&lt;br /&gt;
&lt;br /&gt;
== 备份 Backups ==&lt;br /&gt;
备份功能是&#039;&#039;&#039;自动运行&#039;&#039;&#039;的，无需手动操作。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039;该功能无法保证备份的可用性或质量，请不要将此服务作为唯一的备份方案使用。使用本服务需自行承担风险。&amp;lt;/blockquote&amp;gt;进入 KiwiVM 面板，在侧边栏中选择 &#039;&#039;&#039;“Backups”&#039;&#039;&#039; 选项卡，即可查看系统近期自动创建的备份。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039;如果你是刚购买的搬瓦工虚拟机，此时备份还未创建，不显示内容是正常的&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
[[File:Bwh-auto-backups-1.png|center|1000x1000px]]&lt;br /&gt;
当需要恢复时，点击下方的 &#039;&#039;&#039;“Import to my Snapshots”&#039;&#039;&#039; 按钮，将备份导入到快照中，随后即可按照前文介绍的快照恢复方式进行系统恢复。&lt;br /&gt;
[[File:Bwh-auto-backups-2.png|center|1000x1000px]]&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-auto-backups-2.png&amp;diff=269</id>
		<title>File:Bwh-auto-backups-2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-auto-backups-2.png&amp;diff=269"/>
		<updated>2025-11-18T07:17:35Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;自动备份 - 步骤2&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-auto-backups-1.png&amp;diff=268</id>
		<title>File:Bwh-auto-backups-1.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-auto-backups-1.png&amp;diff=268"/>
		<updated>2025-11-18T07:16:52Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;自动备份 - 步骤1&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-import-snapshots-2.png&amp;diff=267</id>
		<title>File:Bwh-import-snapshots-2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-import-snapshots-2.png&amp;diff=267"/>
		<updated>2025-11-18T07:14:51Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;导入快照 - 步骤2&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-import-snapshots-1.png&amp;diff=266</id>
		<title>File:Bwh-import-snapshots-1.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-import-snapshots-1.png&amp;diff=266"/>
		<updated>2025-11-18T07:14:21Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;导入快照 - 步骤1&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-export-snapshots-2.png&amp;diff=265</id>
		<title>File:Bwh-export-snapshots-2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-export-snapshots-2.png&amp;diff=265"/>
		<updated>2025-11-18T07:13:16Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;导出快照 - 步骤2&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-export-snapshots-1.png&amp;diff=264</id>
		<title>File:Bwh-export-snapshots-1.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-export-snapshots-1.png&amp;diff=264"/>
		<updated>2025-11-18T07:12:07Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;导出快照 - 步骤1&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-download-snapshots.png&amp;diff=263</id>
		<title>File:Bwh-download-snapshots.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-download-snapshots.png&amp;diff=263"/>
		<updated>2025-11-18T07:09:43Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;下载快照&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-sticky-snapshots.png&amp;diff=262</id>
		<title>File:Bwh-sticky-snapshots.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-sticky-snapshots.png&amp;diff=262"/>
		<updated>2025-11-18T07:09:08Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;置顶快照&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-restore-snapshots-3.png&amp;diff=261</id>
		<title>File:Bwh-restore-snapshots-3.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-restore-snapshots-3.png&amp;diff=261"/>
		<updated>2025-11-18T07:08:36Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;恢复快照 - 步骤3&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-restore-snapshots-2.png&amp;diff=260</id>
		<title>File:Bwh-restore-snapshots-2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-restore-snapshots-2.png&amp;diff=260"/>
		<updated>2025-11-18T07:07:58Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;恢复快照 - 步骤2&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-restore-snapshots-1.png&amp;diff=259</id>
		<title>File:Bwh-restore-snapshots-1.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-restore-snapshots-1.png&amp;diff=259"/>
		<updated>2025-11-18T07:06:51Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;恢复快照 - 步骤1&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-create-snapshots-4.png&amp;diff=258</id>
		<title>File:Bwh-create-snapshots-4.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-create-snapshots-4.png&amp;diff=258"/>
		<updated>2025-11-18T07:04:56Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;创建快照 - 步骤4&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-create-snapshots-3.png&amp;diff=257</id>
		<title>File:Bwh-create-snapshots-3.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-create-snapshots-3.png&amp;diff=257"/>
		<updated>2025-11-18T07:04:27Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;创建快照 - 步骤3&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-create-snapshots-2.png&amp;diff=256</id>
		<title>File:Bwh-create-snapshots-2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-create-snapshots-2.png&amp;diff=256"/>
		<updated>2025-11-18T07:03:23Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;创建快照 - 步骤2&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-create-snapshots-1.png&amp;diff=255</id>
		<title>File:Bwh-create-snapshots-1.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-create-snapshots-1.png&amp;diff=255"/>
		<updated>2025-11-18T07:00:11Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;创建快照 - 步骤1&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%90%AF%E7%94%A8_KiwiVM_%E9%9D%A2%E6%9D%BF_2FA&amp;diff=254</id>
		<title>启用 KiwiVM 面板 2FA</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%90%AF%E7%94%A8_KiwiVM_%E9%9D%A2%E6%9D%BF_2FA&amp;diff=254"/>
		<updated>2025-11-18T04:27:27Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 双因素验证 &#039;&#039;&#039;2FA&#039;&#039;&#039; ==&lt;br /&gt;
默认情况下，从搬瓦工后台进入 KiwiVM 面板时&#039;&#039;&#039;无需额外验证&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
这意味着，一旦攻击者能够登录搬瓦工后台，就能直接进入 KiwiVM 面板，获得虚拟机的&#039;&#039;&#039;全部操作权限&#039;&#039;&#039;，甚至可以访问和读取其中的数据。&lt;br /&gt;
&lt;br /&gt;
开启双因素验证 &#039;&#039;&#039;2FA&#039;&#039;&#039; 后，从搬瓦工后台进入 KiwiVM 面板时，还需要额外输入一组 &#039;&#039;&#039;6 位动态验证码&#039;&#039;&#039;进行验证。&lt;br /&gt;
&lt;br /&gt;
该动态验证码存储在手机的身份验证器 &#039;&#039;&#039;Authenticator App&#039;&#039;&#039; 中，每 &#039;&#039;&#039;30s&#039;&#039;&#039; 自动更新一次。即使验证码被截图或他人看到，&#039;&#039;&#039;30 秒后也会立即失效&#039;&#039;&#039;，从而有效提升账户安全性。&lt;br /&gt;
&lt;br /&gt;
== 下载身份验证器 ==&lt;br /&gt;
要想开启 2FA，需要在你的手机中下载一个身份验证器 App 用于存放动态验证码。&lt;br /&gt;
&lt;br /&gt;
在应用商店中搜索 Authenticator，挑选一个你喜欢的 App 下载，例如 Microsoft Authenticator 或者 Google 身份验证器。&lt;br /&gt;
[[File:Bwh-authenticator-app.png|center]]&lt;br /&gt;
&lt;br /&gt;
== 开启 2FA ==&lt;br /&gt;
来到 KiwiVM 面板中，在左侧选项卡中找到 &#039;&#039;&#039;“Two-factor authentication”&#039;&#039;&#039;，然后点击右侧的 &#039;&#039;&#039;“I understand, continue...”&#039;&#039;&#039;。&lt;br /&gt;
[[File:Bwh-2fa-enable-1.png|center|thumb|1000x1000px]]&lt;br /&gt;
在新的页面中，你会看到一个二维码和一串密钥 Key，如果你安装的身份验证器 App 支持&#039;&#039;&#039;扫码&#039;&#039;&#039;，可以直接扫描下方的二维码来添加动态验证码；如果你正在 PC 等不支持扫码的设备上使用身份验证器 App，则需要手动输入这一串 Key 进行添加。&lt;br /&gt;
[[File:Bwh-2fa-enable-2.png|center|1000x1000px]]&lt;br /&gt;
添加完成后，你会在身份验证器上看到一组 &#039;&#039;&#039;6 位动态验证码&#039;&#039;&#039;，将其填写到最后的输入框中，点击 &#039;&#039;&#039;“Complete setup”&#039;&#039;&#039;&lt;br /&gt;
[[File:Bwh-2fa-enable-3.png|center|1000x1000px]]&lt;br /&gt;
开启 2FA 后，会显示一个备用密钥 &#039;&#039;&#039;backup key&#039;&#039;&#039;，建议将其将它保存到安全的地方（如抄写在笔记本中），当无法使用手机或身份验证器 App 损坏时，可以用这个备用密钥 &#039;&#039;&#039;backup key&#039;&#039;&#039; 进入到 KiwiVM 面板中。&lt;br /&gt;
[[File:Bwh-2fa-enable-4.png|center|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== 验证 2FA ==&lt;br /&gt;
为了验证 2FA 是否已成功开启，可重新尝试进入 KiwiVM 面板。与之前不同，这次系统不会直接进入面板，而是会弹出一个验证窗口。&lt;br /&gt;
&lt;br /&gt;
在该窗口中输入身份验证器 App 中显示的 &#039;&#039;&#039;6 位动态验证码&#039;&#039;&#039;，验证通过后即可正常访问 KiwiVM 面板。&lt;br /&gt;
[[File:Bwh-2fa-test.png|center]]&lt;br /&gt;
如果你的身份验证器 App 损坏了，无法获取到 &#039;&#039;&#039;6 位动态验证码&#039;&#039;&#039;，则可以在验证框中直接输入保存的&#039;&#039;&#039;备用密钥&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
== 绑定手机号 ==&lt;br /&gt;
如果你是个非常粗心的人，&#039;&#039;&#039;强烈建议&#039;&#039;&#039;你同时绑定上手机号，即便是&#039;&#039;&#039;身份验证器 App&#039;&#039;&#039; 与&#039;&#039;&#039;备用密钥&#039;&#039;&#039;同时丢失了，你也可以通过短信的方式来获取备用密钥。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039;未绑定手机号时，如果&#039;&#039;&#039;身份验证器 App&#039;&#039;&#039; 与&#039;&#039;&#039;备用密钥&#039;&#039;&#039;同时丢失，将无法在&#039;&#039;&#039;保留数据&#039;&#039;&#039;的情况下恢复对该服务的访问。&amp;lt;/blockquote&amp;gt;返回 KiwiVM 面板中，在左侧选项卡中找到 &#039;&#039;&#039;“Two-factor authentication”&#039;&#039;&#039;，然后点击右侧的 &#039;&#039;&#039;“Add phone”&#039;&#039;&#039;。&lt;br /&gt;
[[File:Bwh-2fa-phone-1.png|center|1000x1000px]]&lt;br /&gt;
在新的页面中，填写&#039;&#039;&#039;备份密钥&#039;&#039;&#039;以及&#039;&#039;&#039;完整手机号&#039;&#039;&#039;（带国际区号），例如国内手机号需要以 &amp;lt;code&amp;gt;+86&amp;lt;/code&amp;gt; 开头。&lt;br /&gt;
[[File:Bwh-2fa-phone-2.png|center|1000x1000px]]&lt;br /&gt;
接着你的手机会收到一条短信验证码，将验证码填写到输入框中，点击 &#039;&#039;&#039;“Verify”&#039;&#039;&#039;。&lt;br /&gt;
[[File:Bwh-2fa-phone-3.png|border|center|1000x1000px]]&lt;br /&gt;
最后提示 &#039;&#039;&#039;“Success: Phone has been added”&#039;&#039;&#039; 就添加成功了。&lt;br /&gt;
[[File:Bwh-2fa-phone-4.png|center|1000x1000px]]&lt;br /&gt;
&lt;br /&gt;
== 关闭 2FA ==&lt;br /&gt;
如果你不再需要 2FA，可以返回到选项卡中找到 &#039;&#039;&#039;“Two-factor authentication”&#039;&#039;&#039;，然后点击右侧的 &#039;&#039;&#039;“Unlink phone”&#039;&#039;&#039;，先将手机号移除。&lt;br /&gt;
[[File:Bwh-2fa-disable-1.png|border|center|1000x1000px]]&lt;br /&gt;
在下一个页面中点击 &#039;&#039;&#039;“I confirm”&#039;&#039;&#039; 确认将手机号移除。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039;移除手机号前，请确保&#039;&#039;&#039;身份验证器 App&#039;&#039;&#039; 能正常工作&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
[[File:Bwh-2fa-disable-2.png|center|thumb|1000x1000px]]&lt;br /&gt;
如果你没有绑定过手机号，则可以直接点击右侧的 &#039;&#039;&#039;“Deactivate”&#039;&#039;&#039;。&lt;br /&gt;
[[File:Bwh-2fa-disable-3.png|center|1000x1000px]]&lt;br /&gt;
接着在新页面中，填写 &#039;&#039;&#039;6 位动态验证码&#039;&#039;&#039;后，点击 &#039;&#039;&#039;“Disable”&#039;&#039;&#039; 即可将其关闭。&lt;br /&gt;
[[File:Bwh-2fa-disable-4.png|center|1000x1000px]]&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-disable-4.png&amp;diff=253</id>
		<title>File:Bwh-2fa-disable-4.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-disable-4.png&amp;diff=253"/>
		<updated>2025-11-18T04:08:05Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;关闭 2FA - 步骤4&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-disable-3.png&amp;diff=252</id>
		<title>File:Bwh-2fa-disable-3.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-disable-3.png&amp;diff=252"/>
		<updated>2025-11-18T04:07:42Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;关闭 2FA - 步骤3&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-disable-2.png&amp;diff=251</id>
		<title>File:Bwh-2fa-disable-2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-disable-2.png&amp;diff=251"/>
		<updated>2025-11-18T04:06:51Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;关闭 2FA - 步骤2&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-disable-1.png&amp;diff=250</id>
		<title>File:Bwh-2fa-disable-1.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-disable-1.png&amp;diff=250"/>
		<updated>2025-11-18T04:06:25Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;关闭 2FA - 步骤1&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-phone-4.png&amp;diff=249</id>
		<title>File:Bwh-2fa-phone-4.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-phone-4.png&amp;diff=249"/>
		<updated>2025-11-18T04:05:36Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2FA 绑定手机号 - 步骤4&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-phone-3.png&amp;diff=248</id>
		<title>File:Bwh-2fa-phone-3.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-phone-3.png&amp;diff=248"/>
		<updated>2025-11-18T04:04:47Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2FA 绑定手机号 - 步骤3&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-phone-2.png&amp;diff=247</id>
		<title>File:Bwh-2fa-phone-2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-phone-2.png&amp;diff=247"/>
		<updated>2025-11-18T04:04:17Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2FA 绑定手机号 - 步骤2&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-phone-1.png&amp;diff=246</id>
		<title>File:Bwh-2fa-phone-1.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-phone-1.png&amp;diff=246"/>
		<updated>2025-11-18T04:03:53Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2FA 绑定手机号 - 步骤1&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-test.png&amp;diff=245</id>
		<title>File:Bwh-2fa-test.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-test.png&amp;diff=245"/>
		<updated>2025-11-18T04:02:17Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;验证 2FA&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-enable-4.png&amp;diff=244</id>
		<title>File:Bwh-2fa-enable-4.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-enable-4.png&amp;diff=244"/>
		<updated>2025-11-18T03:29:31Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;开启 2FA - 步骤4&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-enable-3.png&amp;diff=243</id>
		<title>File:Bwh-2fa-enable-3.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-enable-3.png&amp;diff=243"/>
		<updated>2025-11-18T03:28:58Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;开启 2FA - 步骤3&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-enable-2.png&amp;diff=242</id>
		<title>File:Bwh-2fa-enable-2.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-enable-2.png&amp;diff=242"/>
		<updated>2025-11-18T03:27:00Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;开启 2FA - 步骤2&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-2fa-enable-1.png&amp;diff=241</id>
		<title>File:Bwh-2fa-enable-1.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-2fa-enable-1.png&amp;diff=241"/>
		<updated>2025-11-18T03:24:13Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;开启 2FA - 步骤1&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%BF%AB%E7%85%A7%E3%80%81%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D&amp;diff=174</id>
		<title>快照、备份与恢复</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%BF%AB%E7%85%A7%E3%80%81%E5%A4%87%E4%BB%BD%E4%B8%8E%E6%81%A2%E5%A4%8D&amp;diff=174"/>
		<updated>2025-11-11T02:51:38Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​创建页面，内容为“== 介绍 == 搬瓦工的 KiwiVM 面板提供了快照与备份功能，其创建与存储&amp;#039;&amp;#039;&amp;#039;完全免费&amp;#039;&amp;#039;&amp;#039;，无需支付任何额外费用。  在面板中，你会看到 &amp;#039;&amp;#039;&amp;#039;快照 Snapshots&amp;#039;&amp;#039;&amp;#039; 和 &amp;#039;&amp;#039;&amp;#039;备份 Backups&amp;#039;&amp;#039;&amp;#039; 两个选项。它们的共同点都是用于数据备份，但有所区别：快照需要手动创建，而备份则会自动生成。  === 快照 Snapshots ===  * 快照是虚拟机的&amp;#039;&amp;#039;&amp;#039;完整副本&amp;#039;&amp;#039;&amp;#039;，可用于备份，需要&amp;#039;&amp;#039;&amp;#039;手动创…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 介绍 ==&lt;br /&gt;
搬瓦工的 KiwiVM 面板提供了快照与备份功能，其创建与存储&#039;&#039;&#039;完全免费&#039;&#039;&#039;，无需支付任何额外费用。&lt;br /&gt;
&lt;br /&gt;
在面板中，你会看到 &#039;&#039;&#039;快照 Snapshots&#039;&#039;&#039; 和 &#039;&#039;&#039;备份 Backups&#039;&#039;&#039; 两个选项。它们的共同点都是用于数据备份，但有所区别：快照需要手动创建，而备份则会自动生成。&lt;br /&gt;
&lt;br /&gt;
=== 快照 Snapshots ===&lt;br /&gt;
&lt;br /&gt;
* 快照是虚拟机的&#039;&#039;&#039;完整副本&#039;&#039;&#039;，可用于备份，需要&#039;&#039;&#039;手动创建&#039;&#039;&#039;。&lt;br /&gt;
** 创建快照时，会保存当前的&#039;&#039;&#039;所有状态&#039;&#039;&#039;，包括系统、设置、文件以及安装的应用。&lt;br /&gt;
** 恢复快照时，会&#039;&#039;&#039;原封不动&#039;&#039;&#039;的将当前系统恢复到创建时的状态。&lt;br /&gt;
* 快照默认保存 &#039;&#039;&#039;30 天&#039;&#039;&#039;，超过时间会自动删除。&lt;br /&gt;
* 设置为置顶 &#039;&#039;&#039;set sticky&#039;&#039;&#039; 的快照不受时间限制，可&#039;&#039;&#039;长期保存&#039;&#039;&#039;，每台虚拟机最多可设置 &#039;&#039;&#039;2 个置顶快照&#039;&#039;&#039;。&lt;br /&gt;
* 若需要长期保存更多快照，可通过&#039;&#039;&#039;下载链接&#039;&#039;&#039;将其保存到本地，恢复时再从本地上传导入。&lt;br /&gt;
&lt;br /&gt;
* 快照不仅可以导入当前虚拟机，还可以通过 &#039;&#039;&#039;export&#039;&#039;&#039; 功能导出到其他虚拟机，作为数据迁移的一种方式。&lt;br /&gt;
&lt;br /&gt;
=== 备份 Backups ===&lt;br /&gt;
&lt;br /&gt;
* 备份功能是 &#039;&#039;&#039;KiwiVM 面板自动进行&#039;&#039;&#039;的，频率大约在一周一次，无法控制具体备份的时间和频率。&lt;br /&gt;
* 备份时不会打断系统的运行，无需关机或重启。&lt;br /&gt;
* 备份会保留 3 份，当你想要恢复时，可以将其导入到快照中。&lt;br /&gt;
&lt;br /&gt;
== 快照 Snapshots ==&lt;br /&gt;
&lt;br /&gt;
=== 创建快照 ===&lt;br /&gt;
进入 KiwiVM 面板，在侧边栏中选择 &#039;&#039;&#039;“Snapshots”&#039;&#039;&#039; 选项卡，然后在右侧点击 &#039;&#039;&#039;“Create new snapshot”&#039;&#039;&#039;，即可进入快照创建页面。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039; 创建快照的过程中，虚拟机会&#039;&#039;&#039;自动重启&#039;&#039;&#039;！&amp;lt;/blockquote&amp;gt;[图]&lt;br /&gt;
&lt;br /&gt;
接下来，为快照添加一个简短的描述。建议用 “日期 + 操作” 来命名，方便后续识别和恢复，例如，&amp;lt;code&amp;gt;2025-11-06_nginx_installed&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[图]&lt;br /&gt;
&lt;br /&gt;
最后，点击右侧的 &#039;&#039;&#039;“Create new snapshot”&#039;&#039;&#039; 按钮，即可开始创建。&lt;br /&gt;
&lt;br /&gt;
根据虚拟机硬盘容量的不同，快照创建可能需要几分钟到一小时不等。过程中虚拟机会&#039;&#039;&#039;自动重启&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
当快照创建完成后，系统会自动向你的搬瓦工注册邮箱发送&#039;&#039;&#039;通知邮件&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
[图]&lt;br /&gt;
&lt;br /&gt;
=== 恢复快照 ===&lt;br /&gt;
在恢复快照之前，虚拟机必须处于&#039;&#039;&#039;关机&#039;&#039;&#039;状态。&lt;br /&gt;
&lt;br /&gt;
进入 KiwiVM 面板，在侧边栏中选择 &#039;&#039;&#039;“Main controls”&#039;&#039;&#039; 选项卡，然后在 “Actions” 区域点击 &#039;&#039;&#039;“Stop”&#039;&#039;&#039; 按钮关闭虚拟机。&lt;br /&gt;
&lt;br /&gt;
[图]&lt;br /&gt;
&lt;br /&gt;
关闭后，返回 &#039;&#039;&#039;“Snapshots”&#039;&#039;&#039; 选项卡，即可看到之前创建的快照。点击对应快照右侧的 &#039;&#039;&#039;“Restore”&#039;&#039;&#039; 按钮，进入快照恢复流程。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039; 恢复快照后，虚拟机将回到快照创建时的状态。自那之后的所有更改都将被&#039;&#039;&#039;完全覆盖并丢失&#039;&#039;&#039;。&amp;lt;/blockquote&amp;gt;确认无误后，点击下方的 &#039;&#039;&#039;“I agree with full data overwrite, restore snapshot”&#039;&#039;&#039; 按钮，系统会开始执行恢复操作。&lt;br /&gt;
&lt;br /&gt;
[图]&lt;br /&gt;
&lt;br /&gt;
=== 保存快照 ===&lt;br /&gt;
默认情况下，创建的快照会在 &#039;&#039;&#039;30 天后自动删除&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
如果希望长期保留某个快照，可以点击 &#039;&#039;&#039;“set sticky”&#039;&#039;&#039; 将其设置为&#039;&#039;&#039;置顶&#039;&#039;&#039;，置顶快照不会过期。每台虚拟机最多可置顶 &#039;&#039;&#039;2 个快照&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
[图]&lt;br /&gt;
&lt;br /&gt;
若需要长期保留的快照超过 2 个，可以将其余快照&#039;&#039;&#039;下载到本地&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
在页面下方找到 &#039;&#039;&#039;“HTTP Download link”&#039;&#039;&#039; 或 &#039;&#039;&#039;“HTTPS Download link”&#039;&#039;&#039;，点击后方的 &#039;&#039;&#039;“Copy”&#039;&#039;&#039; 按钮复制下载链接，然后使用下载器将快照文件保存到本地。&lt;br /&gt;
&lt;br /&gt;
[图]&lt;br /&gt;
&lt;br /&gt;
=== 导出快照 ===&lt;br /&gt;
除了在当前虚拟机恢复快照外，你还可以点击 &#039;&#039;&#039;“export”&#039;&#039;&#039; 按钮，获取到快照的 &amp;lt;code&amp;gt;VEID&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt; 将此快照导出。&lt;br /&gt;
&lt;br /&gt;
通过导出快照的方式，可以轻松实现多台虚拟机之间的&#039;&#039;&#039;数据迁移&#039;&#039;&#039;。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039; 请勿泄露 &amp;lt;code&amp;gt;VEID&amp;lt;/code&amp;gt; 与 &amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt;&amp;lt;/blockquote&amp;gt;[图]&lt;br /&gt;
&lt;br /&gt;
=== 导入快照 ===&lt;br /&gt;
当你购置了新的搬瓦工虚拟机后，可以直接将旧虚拟机的快照导入实现&#039;&#039;&#039;数据迁移&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
进入 KiwiVM 面板，在侧边栏中选择 &#039;&#039;&#039;“Snapshots”&#039;&#039;&#039; 选项卡，然后在右侧点击 &#039;&#039;&#039;“Import a snapshot”&#039;&#039;&#039; 按钮。&lt;br /&gt;
&lt;br /&gt;
[图]&lt;br /&gt;
&lt;br /&gt;
在新页面中，输入之前保存的 &amp;lt;code&amp;gt;VEID&amp;lt;/code&amp;gt; 和 &amp;lt;code&amp;gt;TOKEN&amp;lt;/code&amp;gt;，然后点击下方的 &#039;&#039;&#039;“Import”&#039;&#039;&#039; 按钮开始导入。&lt;br /&gt;
&lt;br /&gt;
与创建快照的时候一样，快照导入完成后，系统也会自动向你的搬瓦工注册邮箱发送&#039;&#039;&#039;通知邮件&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
[图]&lt;br /&gt;
&lt;br /&gt;
导入成功后，即可按照前文“恢复快照”的步骤进行系统恢复。&lt;br /&gt;
&lt;br /&gt;
== 备份 Backups ==&lt;br /&gt;
备份功能是&#039;&#039;&#039;自动运行&#039;&#039;&#039;的，无需手动操作。&amp;lt;blockquote&amp;gt;⚠️ &#039;&#039;&#039;注意：&#039;&#039;&#039;该功能无法保证备份的可用性或质量，请不要将此服务作为唯一的备份方案使用。使用本服务需自行承担风险。&amp;lt;/blockquote&amp;gt;进入 KiwiVM 面板，在侧边栏中选择 &#039;&#039;&#039;“Backups”&#039;&#039;&#039; 选项卡，即可查看系统近期自动创建的备份。&lt;br /&gt;
&lt;br /&gt;
当需要恢复时，点击下方的 &#039;&#039;&#039;“Import to my Snapshots”&#039;&#039;&#039; 按钮，将备份导入到快照中，随后即可按照前文介绍的快照恢复方式进行系统恢复。&lt;br /&gt;
&lt;br /&gt;
[图]&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=%E5%90%AF%E7%94%A8_KiwiVM_%E9%9D%A2%E6%9D%BF_2FA&amp;diff=173</id>
		<title>启用 KiwiVM 面板 2FA</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=%E5%90%AF%E7%94%A8_KiwiVM_%E9%9D%A2%E6%9D%BF_2FA&amp;diff=173"/>
		<updated>2025-11-11T02:34:49Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​创建页面，内容为“== 双因素验证 &amp;#039;&amp;#039;&amp;#039;2FA&amp;#039;&amp;#039;&amp;#039; == 默认情况下，从搬瓦工后台进入 KiwiVM 面板时&amp;#039;&amp;#039;&amp;#039;无需额外验证&amp;#039;&amp;#039;&amp;#039;。  这意味着，一旦攻击者能够登录搬瓦工后台，就能直接进入 KiwiVM 面板，获得虚拟机的&amp;#039;&amp;#039;&amp;#039;全部操作权限&amp;#039;&amp;#039;&amp;#039;，甚至可以访问和读取其中的数据。  开启双因素验证 &amp;#039;&amp;#039;&amp;#039;2FA&amp;#039;&amp;#039;&amp;#039; 后，从搬瓦工后台进入 KiwiVM 面板时，还需要额外输入一组 &amp;#039;&amp;#039;&amp;#039;6 位动态验证码&amp;#039;&amp;#039;&amp;#039;进行验证。  该…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 双因素验证 &#039;&#039;&#039;2FA&#039;&#039;&#039; ==&lt;br /&gt;
默认情况下，从搬瓦工后台进入 KiwiVM 面板时&#039;&#039;&#039;无需额外验证&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
这意味着，一旦攻击者能够登录搬瓦工后台，就能直接进入 KiwiVM 面板，获得虚拟机的&#039;&#039;&#039;全部操作权限&#039;&#039;&#039;，甚至可以访问和读取其中的数据。&lt;br /&gt;
&lt;br /&gt;
开启双因素验证 &#039;&#039;&#039;2FA&#039;&#039;&#039; 后，从搬瓦工后台进入 KiwiVM 面板时，还需要额外输入一组 &#039;&#039;&#039;6 位动态验证码&#039;&#039;&#039;进行验证。&lt;br /&gt;
&lt;br /&gt;
该动态验证码存储在手机的身份验证器 &#039;&#039;&#039;Authenticator App&#039;&#039;&#039; 中，每 &#039;&#039;&#039;30s&#039;&#039;&#039; 自动更新一次。即使验证码被截图或他人看到，&#039;&#039;&#039;30 秒后也会立即失效&#039;&#039;&#039;，从而有效提升账户安全性。&lt;br /&gt;
&lt;br /&gt;
== 下载身份验证器 ==&lt;br /&gt;
要想开启 2FA，需要在你的手机中下载一个身份验证器 App 用于存放动态验证码。&lt;br /&gt;
&lt;br /&gt;
在应用商店中搜索 Authenticator，挑选一个你喜欢的 App 下载，例如 Microsoft Authenticator 或者 Google 身份验证器。&lt;br /&gt;
[[File:Bwh-authenticator-app.png|center]]&lt;br /&gt;
&lt;br /&gt;
== 开启 2FA ==&lt;br /&gt;
来到 KiwiVM 面板中，在左侧选项卡中找到 &#039;&#039;&#039;“Two-factor authentication”&#039;&#039;&#039;，然后点击右侧的 &#039;&#039;&#039;“Continue”&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在新的页面中，你会看到一个二维码和一串密钥 Key，如果你安装的身份验证器 App 支持&#039;&#039;&#039;扫码&#039;&#039;&#039;，可以直接扫描下方的二维码来添加动态验证码；如果你正在 PC 等不支持扫码的设备上使用身份验证器 App，则可以手动输入这一串 Key 进行添加。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
添加完成后，你会在身份验证器上看到一组 &#039;&#039;&#039;6 位动态验证码&#039;&#039;&#039;，将其填写到最后的输入框中，点击 &#039;&#039;&#039;“Complete setup”&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
开启 2FA 后，会显示一个备用密钥 &#039;&#039;&#039;backup key&#039;&#039;&#039;，建议将其将它保存到安全的地方（如抄写在笔记本中），当无法使用手机或身份验证器 App 损坏时，可以用这个备用密钥 &#039;&#039;&#039;backup key&#039;&#039;&#039; 进入到 KiwiVM 中。&lt;br /&gt;
&lt;br /&gt;
== 验证 2FA ==&lt;br /&gt;
为了验证 2FA 是否已成功开启，可重新尝试进入 KiwiVM 面板。与之前不同，这次系统不会直接进入面板，而是会弹出一个验证窗口。&lt;br /&gt;
&lt;br /&gt;
在该窗口中输入身份验证器 App 中显示的 &#039;&#039;&#039;6 位动态验证码&#039;&#039;&#039;，验证通过后即可正常访问 KiwiVM 面板。&lt;br /&gt;
&lt;br /&gt;
[图]&lt;br /&gt;
&lt;br /&gt;
如果你的身份验证器 App 损坏了，无法获取到 &#039;&#039;&#039;6 位动态验证码&#039;&#039;&#039;，则可以在验证框中直接输入保存的&#039;&#039;&#039;备用密钥&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
== 绑定手机号 ==&lt;br /&gt;
如果你是个非常粗心的人，&#039;&#039;&#039;强烈建议&#039;&#039;&#039;你同时绑定上手机号，即便是&#039;&#039;&#039;身份验证器 App&#039;&#039;&#039;与&#039;&#039;&#039;备用密钥&#039;&#039;&#039;同时丢失了，你也可以通过短信的方式来获取备用密钥。&lt;br /&gt;
&lt;br /&gt;
[图]&lt;br /&gt;
&lt;br /&gt;
== 关闭 2FA ==&lt;br /&gt;
如果你不再需要 2FA，可以返回到选项卡中找到 &#039;&#039;&#039;“Two-factor authentication”&#039;&#039;&#039;，然后点击右侧的 &#039;&#039;&#039;“Deactivate”&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
[图]&lt;br /&gt;
&lt;br /&gt;
接着在新弹出的页面中，填写 &#039;&#039;&#039;6 位动态验证码&#039;&#039;&#039;后，点击 &#039;&#039;&#039;“Disable”&#039;&#039;&#039; 即可将其关闭。&lt;br /&gt;
&lt;br /&gt;
[图]&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
	<entry>
		<id>https://md5.pw/index.php?title=File:Bwh-authenticator-app.png&amp;diff=172</id>
		<title>File:Bwh-authenticator-app.png</title>
		<link rel="alternate" type="text/html" href="https://md5.pw/index.php?title=File:Bwh-authenticator-app.png&amp;diff=172"/>
		<updated>2025-11-11T02:30:47Z</updated>

		<summary type="html">&lt;p&gt;ZhiChao：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Authenticator App&lt;/div&gt;</summary>
		<author><name>ZhiChao</name></author>
	</entry>
</feed>