目录
一、前言
二、带宽和网络速度
光猫(Optical Network Terminal)
网线(Ethernet Cable)
路由器(Router)
台式电脑网卡(Network Interface Card)
拓扑图
网速测试
三、购买路由器
四、设置路由器
光猫的桥接模式与路由器拨号上网
IPV4 公网地址
端口转发(Port Forwarding)
动态域名解析(Dynamic Domain Name System,DDNS)
五、本篇方案的优缺点
六、总结
一、前言
这是一个四篇文章的系列,旨在教你如何用大约 1 万元人民币组建一个私有云环境,供日后学习和测试使用,本文是第三篇。这笔 1 万元的投资对于想提高技术水平的用户来说非常划算。请注意,由于篇幅的原因,本篇不可能针对完全小白的用户,好消息是只有少量非常基础的的术语和步骤方法是需要读者自行学习的。
这个系列的四篇文章分别是:
《搭建数据库学习的私有云环境(三)——网络篇 1》(本篇)
《搭建数据库学习的私有云环境(三)——网络篇 2》(下一篇)
本篇(网络篇 1)将详细介绍如何利用 IPv4 公网、端口转发以及动态域名解析(DDNS)技术,来解决家用电脑对外提供服务时所面临的问题。而下一篇(网络篇 2)则会重点探讨基于 IPv6 公网技术的解决方案。
二、带宽和网络速度
我家使用的是电信宽带,因为打游戏时延迟更低。套餐是 300 Mbps,速度足够用了。但要实现超过 100 Mbps 的全速下载,网络链路中所有设备都不能成为瓶颈,包括猫的接口、路由器的接口,以及两根网线(猫到路由器,路由器到台式电脑)和台式电脑的接口,都不能是百兆规格的,必须是千兆或以上。
以下照片来自于家里的实际情况:
光猫(Optical Network Terminal)
我的光猫只有千兆网口,有一些光猫可能有一个百兆网口,不要插错。

网线(Ethernet Cable)
主流的网线有五类、超五类、六类网线,现在还有更新的七类和八类网线,这些都能支持万兆带宽。但网上有说某些质量差的五类网线只支持百兆,反正我买的是六类,价格差不多。我建议直接买六类或以上的网线,因为网线是所有设备中最便宜的。
这种六类网线我直接买了一箱,水晶头都是我自己打的,你说便宜不?

照片有点模糊,CATEGORY6,简称 Cat 6,六类网线。
路由器(Router)
我很喜欢我路由器界面上提供的这个功能。有时排查家里网络问题时,无法到现场,只能远程查看这个状态。这里显示了我的 3 号 LAN 口插了网线,并且能跑到千兆带宽。

台式电脑网卡(Network Interface Card)
这里可以查询到本机网卡的速度,我这里是一张千兆网卡。

拓扑图

网速测试
网上有很多测速网站,广告多、测速不准,甚至引导收费。最好的测试软件是腾讯电脑管家。可以看出我现在的自建私有云环境能够充分利用带宽,下行带宽约为 300 Mbps,上行带宽约为 80 Mbps。我尤其关注上传速度,因为这直接影响我能否流畅地通过远程桌面操作家里的 Windows 宿主机。一般来说,上传速度达到 2 MB/s(即上行带宽 16 Mbps)就足够流畅使用远程桌面了。

三、购买路由器
在中国电信提供的家用宽带套餐中,通常会附赠一台中兴或华为的家用光猫-路由器一体机。然而,该廉价设备的功能和性能都十分有限。
因此,我强烈建议单独购买一台支持端口转发和动态域名解析(DDNS)功能的 500 元以上的路由器。如果路由器未提供 DDNS 功能,可以在宿主机上安装使用花生壳等公司提供的免费或收费的 DDNS 服务。
基本上,市面上提供的大多数路由器都配备了端口转发功能,因此理论上它们都能够满足本篇所述的使用需求。唯一的区别在于操作界面的设计和功能布局。
在我的实践中,华硕的路由器是一个不错的选择,例如我家使用的 TUF-AX3000 型号,它不仅支持 DDNS 功能,还提供了其他很多便捷功能。我之前购买的价格是 900 多元。。。
四、设置路由器
光猫的桥接模式与路由器拨号上网
如果你之前没使用独立路由器,而是使用光猫作为路由器,需要对光猫进行一些设置调整,将其路由模式从 PPPoE 模式(光猫拨号上网)改为桥接模式(路由器拨号上网)。
通常情况下,可以打电话给电信宽带客服,让他们远程帮你设置,顺便关闭光猫的 DHCP 功能。如果你知道如何查询光猫的超级管理员密码,也可以自行设置。但请注意,超级管理员密码与光猫底部贴纸上的管理员密码不同,两者不是一回事。
之后设置路由器的拨号上网、DHCP 等功能。

IPV4 公网地址
公网 IPv4 地址是在光猫或路由器拨号上网后,由电信 ISP 运营商分配给我们的。在下图的例子中,路由器通过拨号获得了一个公网 IP 地址,该地址被分配给路由器的 WAN 口。我们无法手动设置它,因为它是随机分配的。

公网 IP 地址通常可以分为三种分类:
ISP 公网地址(ISP IP Address)
由互联网服务提供商 (ISP) 提供的普通家用公网 IP 地址。
特点:
一般是动态分配的,随时间或设备重启可能会变化。 通常由家庭宽带、手机移动网络用户使用。 使用动态域名解析服务(DDNS)可以提供更稳定的访问。
商务公网地址(Business IP Address)
适用于需要稳定公网 IP 地址的商业用户。
特点:
一般提供静态 IP 地址,确保 IP 地址不变。 适用于商业场景,尤其是小型企业和办公环境。 可能需要额外付费。
托管公网地址(Hosting IP Address)
由数据中心或托管服务提供商提供,适用于服务器托管和云服务。
特点:
通常是静态 IP 地址。 提供高性能的网络连接,确保服务器和云服务的可靠访问。 支持多种托管服务,包括虚拟主机和专用服务器。
在国内,家用 IP 地址是由 ISP 动态分配的(Dynamic IP),它们来自于一个 IP 池,并随机分配给家庭用户。商用 IP 地址虽然可以提供固定的 IP 地址(Fixed IP or Static IP),但通常价格较高,并且家庭用户无法直接申请。对于租用腾讯云服务器等云服务提供商的用户,通常会获得至少一个机房 IP 地址。
提前说明,我们使用家庭动态 IP 地址,这意味着 IP 地址可能会随时变化,因此我们需要使用我后面要介绍的动态域名解析技术来确保我们能够始终访问到我们的设备。相比之下,固定 IP 地址则无需使用动态域名解析技术。
光猫在设置为桥接模式后,不再负责 PPPoE 拨号上网,而是由路由器负责。此时,光猫仅将光纤的光信号转换为网线中的电信号,工作在物理链路层。因此,我在 IP 层的网络拓扑图中直接忽略光猫,拓扑图如下所示:

细心的朋友可能会发现,我截图中的 WAN IP: 100.69.93.228
根本不是什么公网 IP,这个是一个内网 IP 地址。

和我百度能查到我的公网地址对应不上。

为什么我的路由器没有获取到公网的 IPv4 地址呢?
网络地址转换 (NAT, Network Address Translation)
原因是 IPv4 地址资源有限,全球只有约 43 亿个可用地址,现在已接近枯竭。全球通讯设备繁多,你手上的手机、平板电脑都需要 IP 地址才能上网,如果每人都拥有一个独立的 IPv4 地址是不现实的。因此,NAT 设备被广泛应用于地址转换,并划分各种局域网。电信公司给你一个公网 IPv4 地址是有成本的,他们通常会通过 NAT 方式将多个用户的内网地址映射到一个公网 IPv4 地址。他们的组网方式实际上是这样的:

我的 wan 口获取的 IP 地址实际上是一个大局域网的地址,是一个电信运营商 NAT 设备分配的内网地址。有时候电信运营商甚至可能会套两层 NAT 转换,所以,公网地址实际分配在最外层 NAT 设备的 wan 口上的,而不是我的路由器的 wan 口。

(图片截取自 B 站博主"科技宅小明")
路由器无法获取 IPv4 公网地址,如何解决?
在过去,只需直接打电话给电信运营商,要求提供公网 IPv4 地址,他们就可以通过修改 Setting,提供给你,换回我之前想要的网络拓扑,路由器 wan 口直接获取到公网 IPv4 地址。

但很多电信运营商省公司或市级单位已经明确规定不再提供了。例如广州电信。

所以,解决办法就是,碰运气,看你那边的电信运营商还继续提供不。否则就只能等我的下一篇,介绍 IPv6 方案了。
端口转发(Port Forwarding)
端口转发是什么?
端口转发是一种网络技术,用于将外部网络请求导向到局域网内的特定设备,以实现私有网络中提供服务的目的。
如果没有端口转发技术,拥有公网 IP 的是你的路由器,因此你只能直接访问路由器。例如,访问家中公网 IP 地址的 22 端口,实际上是在访问路由器的 22 端口。由于家中的路由器通常也是一个 Linux 系统,如果路由器关闭了防火墙,直接访问公网 IP + 22 端口就会进入路由器的 Linux 系统。
然而,我们显然不是想访问路由器,而是想访问路由器后面的那些设备,例如 Windows 系统的 3389 端口用于远程桌面,22 端口用于 Linux 的 SSH 访问。因此,必须开启端口转发功能。

如图所示,端口转发时,内网的端口和公网的端口可以不一样,这样可以支持对多个相同端口号的设备的访问。例如:
| 内网 IP | 内网端口 | 公网 IP | 公网映射端口 |
|---|---|---|---|
| 192.168.199.141 | 22 | 10.155.2.242 | 14122 |
| 192.168.199.142 | 22 | 10.155.2.242 | 14222 |
注意:
端口转发和端口映射在概念上是非常相似的,通常情况下可以互换使用。 为了方便记忆,我使用了有规律的端口转发规则。上述表格显示的规则让每个内网设备都可以通过唯一的映射端口访问到。
通过这种端口转发规则,你可以通过以下命令直接穿透内网,SSH 访问到内网的 192.168.199.141 服务器:
ssh 10.155.2.242 -p 14122
动态域名解析(Dynamic Domain Name System,DDNS)
前面我提到过,公网 IP 有三种类型,我们使用的是 ISP 公网地址,只能是动态分配的。这意味着我今天的公网地址可能是 10.155.2.242,但很难确保明天或未来的公网地址还是这个,因为公网 IP 地址随时可能变化,取决于电信运营商对公网 IP 地址的租约设定。而一旦重启路由器,公网 IP 地址几乎一定会变化。
一开始,我写了一个脚本,并将其设置到 Windows 的计划任务中,每五分钟检查一次 IPv4 地址是否发生变化,如果变化了就将最新的地址发送到我的 QQ 邮箱里。由于 IPv4 地址变化不频繁,加上我最初对私有云的使用不是很重度,这种方法运行良好。
然而,随着我对私有云的深度使用,很多问题逐渐暴露出来。例如,远程桌面登录时,一旦公网 IP 地址改变,我的远程凭证会自动失效,需要我重新输入被远程的家中 Windows 电脑的账号和密码。而我的密码还相当复杂。
因此,我必须使用域名。一旦有了域名,我就不需要关心家中的 IPv4 地址是什么。使用域名就需要使用域名解析服务(DNS),而普通的域名解析服务适用于固定的公网 IP。对于公网 IP 会变化的情况,则需要使用动态域名解析服务(DDNS)。
好消息是,华硕提供免费的 DDNS 服务,并且已经内置在路由器中。

这个内置的 DDNS 设置界面,除了支持华硕自家的免费 DDNS 方案外,还支持其他厂商的付费方案。

华硕自家的免费方案支持 HTTPS,并且会自动使用 Let's Encrypt 续签免费的证书,非常实用。
在这个界面界面上,我发现他还支持勾选"IPv6 更新",这样我可以通过 IPv6 的方式远程访问路由器。但遗憾的是,它的端口转发功能不支持 IPv6,所以只能用于远程访问路由器本身。
以下是我在 ping fanderchan.asuscomm.com
后看到的 Windows 本地域名解析缓存情况,可以看出免费的动态域名解析确实支持 IPv6。
fanderchan.asuscomm.com
----------------------------------------
记录名称. . . . . . . : fanderchan.asuscomm.com
记录类型. . . . . . . : 1
生存时间. . . . . . . : 122
数据长度. . . . . . . : 4
部分. . . . . . . . . : 答案
A (主机)记录 . . . . : 14.155.2.242
fanderchan.asuscomm.com
----------------------------------------
记录名称. . . . . . . : fanderchan.asuscomm.com
记录类型. . . . . . . : 28
生存时间. . . . . . . : 122
数据长度. . . . . . . : 16
部分. . . . . . . . . : 答案
AAAA 记录 . . . . . . : 240e:3b0:3498:1cd3:692d:730d:2297:3abd
有了端口转发和动态域名解析服务,我公网方式远程访问内网的 192.168.199.141 服务器,通过以下命令行:
ssh fanderchan.asuscomm.com -p 14122
五、本篇方案的优缺点
优点:
经济性:使用动态域名解析(DDNS)和端口转发能够在家用网络中搭建自己的私有云,不需要额外的托管服务器和云服务订阅费。 学习与测试环境:私有云环境提供了一个可定制、灵活的学习与测试平台,可以模拟真实环境进行数据库、网络、安全相关的学习和实验。 灵活性:通过端口转发技术,可以将不同服务分配到内网中不同的设备上,实现多设备协同工作。 支持主流 IP 协议:支持 IPv4 协议,这是当前最主流的 IP 技术。 相对简单的网络配置:虽然设置端口转发、动态域名解析和防火墙可能对技术水平较低的用户带来挑战,但相比基于 IPv6 技术的解决方案仍然相对简单。
缺点:
IPv6 支持不足:虽然支持 IPv6 更新,但华硕路由器的端口转发功能尚不支持 IPv6,仅限于远程访问路由器本身。
端口映射冲突:如果多台服务器需要端口转发,可能会导致服务器的端口映射不能对等映射。例如,如果两台服务器都需要对外提供 SSH 服务(默认端口 22),其中一台服务器需要映射到其他端口。
电信运营商默认封锁了部分端口:大多数电信运营商默认封锁了以下常见端口:
TCP 25:用于 SMTP 邮件发送,防止垃圾邮件滥用。 TCP 135、139、445:用于 Windows 网络文件共享和 RPC,防止恶意传播和滥用。 TCP 80、443、8080:用于 HTTP 和 HTTPS,部分地区或情况下被封锁以限制非商业托管的 Web 服务。 TCP 1433、1434:用于 Microsoft SQL Server 数据库服务,防止恶意入侵。 UDP 137、138、1900:用于 NetBIOS 和 SSDP,防止恶意网络流量。
六、总结
在本篇文章中,我们详细探讨了如何利用 IPv4 公网、端口转发和动态域名解析(DDNS)技术来搭建一个经济、高效的私有云网络环境。通过动态域名解析服务,可以方便地在公网 IP 地址动态变化的情况下保持稳定的域名访问。端口转发技术则使我们能够灵活地将内网中的各种服务暴露到公网,实现远程访问和控制。




