Skip to content

公网端口

公网端口是机器自己地址上的一个号码,连过去就直接进到某一个容器里。 别人输入 203.0.113.10:31000,连接就落到你容器里的 3000 端口上 —— 没有域名,没有证书,中间也没有网页服务器。所以它是游戏服务器、数据库、VPN、 代理,以及任何「不是网站」的东西的答案。

它也是容器页面上唯一一件拿着容器的人自己做不了的事。这不是漏掉了, 第 2 节讲为什么。

如果你的服务本来就是网站,那你要的是域名:见快速上手第 6 步。 一个域名不花机器什么,一个端口要花掉一个号码。


1. 两种进来的方式,各自的代价

你加的东西它占掉什么一个域名什么都不占 —— 所有域名共用同一个 80 和 443一个公网端口机器上的一个号码,只有一个容器能拿到

一台机器上一千个域名,和一个域名花的一样多:它们都从同样那两个端口进来, 机器按请求里的名字分派。号码不是这样的。31000 就是一个,只能给一个容器, 两个租户都想要它,就是一件得有人来定的事。

这个区别决定了下面的一切,也包括「按钮在谁手里」。


2. 谁来开

机器的主人在自己机器上的任何容器上开、改、关公网端口
你,拿着容器的人看到每一条映射,测试有没有东西应答,以及去要一个

域名是你自己加的,不用谁批准。端口不是你自己加的, 因为端口是别人机器上的一个号码,而每个号码只有一个。 去找你的房东要;在他们那一侧就是一个按钮。

这件事对你没有任何隐瞒。卡片上列着这个容器的每一条映射,无论是生效中还是待重启; 容器的历史里也记着每一次开和关,什么时候,以及是谁做的。


3. 如果容器在你手里

端口卡片在容器页面上,域名卡片下面。它分成两段,两段的意思不一样:

端口来自互联网tcp203.0.113.10:31000 → :3000生效中测试udp203.0.113.10:30051 → :51820生效中仅本机可达tcp:80two.example.com
  • 来自互联网 —— 谁都能连到。左边的地址是你发给别人的,右边的 :3000 是容器里必须有东西在听的那个端口。
  • 仅本机可达 —— 你的域名就是从这里进来的。它们只在机器上可达,别处都不行, 这正是对的:机器上的网页服务器从公网收下请求,再从这里递进去。 除非某个域名不工作,否则你不用管这一段。

测试会从机器上拨一次这个号码,告诉你有没有东西应答。 两种答案指向的是不同的人,值得分清楚:

它说什么意思是
生效中,并且测试说有应答正常。公网上的人拿到的就是你在提供的东西。
无响应机器确实占着这个号码,但你容器里没有东西在那个端口上应答。这一侧是你的:服务没跑起来,或者它只监听了 127.0.0.1
待重启映射已经记下了,但还没生效。容器的网络下次重启时它才开始工作。
没有测试按钮这是一条 UDP 映射。UDP 没有握手,也就没有什么可以诚实地报告。

无响应是最常见的那一种,通常改一行配置就好: 容器里只绑 127.0.0.1 的服务,从容器外面是够不着的。改成 0.0.0.0 再试。

要去要一个的时候,告诉房东你的服务在容器里监听哪个端口 —— 777751820,随便它是多少 —— 以及它是 TCP 还是 UDP。 别的他们不需要知道,外面那个号码由他们挑。


4. 如果机器是你在跑

在容器页面上,端口 → 开一个端口

开一个端口容器端口公网端口协议7777auto留空 = 自动挑tcp1 个端口 · 由主机在 30000-32767 里挑一个空号等下次重启再生效取消
  • 容器端口是租户的服务在里面监听的那个。这个由他们告诉你。
  • 公网端口留空,机器就从自己的池子里挑一个空号(没改过的话是 30000–32767)。当外面已经有东西认死了某个号码时才填 —— 租户已经发出去的客户端配置、一条 DNS SRV 记录、一个监控探针。
  • 协议 —— 除非服务是 UDP,否则填 TCP。WireGuard、DNS 和大多数游戏服务器是 UDP。

输入框下面那一行,在任何东西被发出去之前就把整条映射预览出来; 有两种写错法在那里就被拦下,不会跑到机器上去:小于 1024 的号码, 以及落在机器私有池(20000–29999)里的号码 —— 那是容器侧映射分配用的段, 放一个公网号码进去,迟早会撞上。

在这里开端口,并不会去开你云厂商的防火墙。 机器把号码绑上了, 挡在它前面的安全组还是得放行。把整个池子一次性放开 —— 30000–32767,TCP 和 UDP —— 以后卖多少容器都不用再想这件事。 不放开的话,面板上一切看起来都对,卡片写着「生效中」,而外面什么都连不上。

一段连续端口是一行,而不是四十行。容器端口填 3000-3009, 机器一次映射十个号码,31000→3000 一直到 31009→3009。 两边永远一样长、偏移固定 —— 机器能表达的就是这个形状,所以卡片在你打字时就按这个来。 一段默认最多 64 个端口。

开和关都会重启这个容器的网络。 用时远不到一秒, 但在那一下里,走它其他端口的连接会断 —— 包括租户的 SSH 会话。 卡片会写出这是谁,好让你知道断的是谁的连接。不急的话就勾上等下次重启再生效: 映射记下来,什么都不打断,容器下次重启时它开始生效。

是行上齿轮后面的按钮。号码会还回池子里,所以同一条映射再开一次, 不一定还是原来那个号码。容器里面什么都不变。 下面那一段里的映射 —— 域名从那里进来的那些 —— 只要还有域名需要它就关不掉, 拒绝的时候会说出是哪个域名。


5. 公网端口不是什么

  • 不是给 HTTP 用的。 域名能在标准端口上够到同一个服务,不占机器的号码, 还带证书。如果访客必须被告知一个端口号才能打开你的站点,那就是哪里做错了。
  • 不是防火墙。 公网上谁都能连到这个号码,hqnode 不做过滤。 里面是什么在应答,他们拿到的就是什么 —— 认证要做在服务里。
  • 不是一个固定地址。 关掉一条映射,号码就回到池子里。 如果外面有东西认死了某个号码,要的时候就说清楚,让它按号开而不是随机挑。

有一件事是域名给不了的:连接是带着客户端自己的地址过来的。 走网页服务器时,除非服务懂 PROXY 协议,否则容器看到的整个互联网都是同一个地址; 走公网端口,它看到的是真实地址,任何协议都一样,什么都不用配。


6. 出问题的时候

你看到的通常是什么
状态写着无响应容器里那个端口上没有东西在听,或者它绑的是 127.0.0.1 而不是 0.0.0.0
测试说有应答,但你连不上机器所在云厂商的防火墙没放行这个号码。这要机器主人在安全组里开,不是在面板里开。
行上一直写着待重启它在等容器的网络重启。重启容器,或者请主人不勾延后再开一次。
号码被拒绝,说已被占用机器上已经有别的东西拿着它。让机器自己挑,或者换一个号码要。
号码被拒绝,说在私有段里它落在机器内部映射用的池子里。20000–29999 之外、1024 以上的号码都行。
一条 UDP 映射,没法检查没有可跑的检查 —— UDP 没有握手。用真正要用它的那个客户端从外面试。
一切看着都对,但完全没有反应看看容器在不在跑、机器在不在线:面板在同一页上都会说。

接下来