这是本系列文章的第一篇。

平时上网用的通常都是网络上很常见的旁路由网关,转发给主网关来实现科学上网,结果前日配 Linux 时候发现有时候这种方式会有点小 Bug。

我家里的网络全部跑在 192.168.50.0/24 网段内,主网关在 192.168.50.1,旁路由网关在 192.168.50.3,平时使用并没有什么太多问题,并且很好的,我可以通过指定使用哪一个网关来让不需要通过科学上网的设备直接访问公网。

但前日我在配置运行家中内网服务 ( 主要是一些 FTP 与 HTTP 的文件服务,以及媒体服务 ) 时候,发现我本应让他直接访问公网,因此直接指定了主网关,但在请求 ipify API 返回本机 IP 的时候依然会返回科学上网后的代理服务器 IP, Ping 访问外网时则出现了奇怪的 Redirect Host 提示。

由于我的主网关并没有将默认路由指向旁路由 ( 为了避免由此产生的无效流量 ),因此在跨 IP 地址访问时,不但要在旁路由上指定路由路径,还要在主网关上指定路由路径,否则将由于找不到回程路径而不通 ( 两个路由都要具有通往内网另一网段的路径,确保回程正常 ),而我的主网关是一个普通的家用路由器,只能加入静态路由,不能使用动态路由协议,这给我在做网络实验时造成了一点小麻烦。

旁路由是一个跑在 ESXi 上的 Openwrt,我看中了他方便配置使用的 OpenClash,否则我需要自己做订阅脚本 ( 虽然我其实也用 Python 写了一个,但那个用在我的笔记本电脑上了 ),虽然 Openwrt 可以通过 Quagga 实现动态路由协议,但我实际的使用体验并不好,至少我实际使用的时候三天两头崩进程,RIP ( 为了省事就用了 RIP ) 跑几分钟进程就崩了,让我非常抓狂。

综上所述,我已经对这个临时搭起来的环境忍无可忍了。

最近花了点闲钱,采购了一块 HP FLR336 ( 本质为 Intel i350-T4 ),捡了一台坏了 4 个口的 Cisco C3560X-48PF-S ( 加 350W 电源总共 400 块,我觉得我赚翻了 ), 这下需要的东西也差不多齐了。

万事俱备,只欠东风。

有了网管交换机,我终于可以将网络流量分离了,也可以给我的 Mini Server 做 Etherchannel 了。

( 顺便说一句,最近了解到一些便宜的傻瓜交换机可以正常交换转发带 VLAN Tag 的流量,惊)

目前我打算将网络暂时只分成两部分,一部分为需要科学上网的终端,另一部分为无需科学上网的终端,并且再划分一个 VLAN 做管理 VLAN。姑且算是留出了以后的升级空间。

目前只需要四个网段,为了最小化重部署的时间成本 ( 你的时间非常值钱 ),我将当前的绝大多数主机将保留在 192.168.50.0/24 网段,另开出 192.168.100.0/24 网段作为直通 WAN 的网络,192.168.200.0/24 作为 OSPF 协议的 Loopback 地址,192.168.1.0/24 作为管理网段。

因此,画出逻辑拓扑如下:

( GNS3 拿来画拓扑意外的特好用 )

Network Topology

逻辑上是这样没错,但实际上除了客户端以外,所有服务均跑在一台 VMware ESXi 服务器上,这也就意味着一旦这台服务器 Down 掉,整个网络都会崩掉。

因此这样一来,实际的物理拓扑则非常简单,我觉得我都不用画,直接脑补就好。

辽宁电信有一个好,几乎所有人的宽带都能拿得到公网 IPv4 地址,而且甚至不用打电话找运营商要,直接拨号即可。下发的 IPv6 地址前缀经我测试能拿到 /60,不多不少的程度,还是能够一定程度上做到向下分配的。

尽管客观上讲现在的 IPv6 真没啥大用( 指几乎没有网站能在纯 IPv6 下正常工作,墙内更甚 ) ,甚至我不能使用 IPv6 正常访问 ipv6-test! (当然用的是纯 IPv6 对应的域名,我不会犯这种错误的) 但既然有,那就没有不部署的道理。

当然现在部署 IPv6 的唯一用途就只是能过 ipv6-test 的检查而已 ( 逃

IPv6 刚开始推广的时候 GFW 还不能在 IPv6 下工作,因此当时我通过 HE.net 的 6to4 隧道能在某种角度上直接访问 “国际互联网”,但现在 GFW 升级了,因此即便部署了 IPv6 你也不能通过 IPv6 来访问 Google IPv6,我想这也是 IPv6 得以正常大规模部署的原因之一吧。

之后还需要配置 OpenVPN 和 IPsec,使得我具有远程访问家中局域网的能力。

理论上这个方案不但能满足内部扩展需求,还能满足扩展 WAN 的需求。( 如果有机会拉多条宽带的话 )

我家里的宽带唯一一点非常不满的是上行速率只有 6 Mbps 左右,这让我即便能通过 VPN 连回家中,也没法正常使用 NAS 中的数据,最多能看视频而已。

接下来标记分配的内部 IP 地址如下:

IPv4 地址 FQDN 主机描述
192.168.1.1/24 pfsense.ddupan.top 防火墙,WAN 网关
192.168.1.2/24 openwrt.ddupan.top OpenClash 网关
192.168.1.3/24 switch.ddupan.top Cisco C3560X SVI 1
192.168.1.4/24 esx.ddupan.top VMware ESXi Management Network
192.168.50.1/24 openwrt.ddupan.top OpenClash 网关
192.168.50.2/24 homelinux.ddupan.top 内网 Linux 服务器
192.168.50.4/24 R6300V2-248A 无线 AP
192.168.50.5/24 freenas.ddupan.top 内网 NAS 存储
192.168.50.238/24 homesrvdc.ddupan.top AD 域控服务器 Windows Server 2019
192.168.100.1/24 switch.ddupan.top Cisco C3560X SVI 100
192.168.100.2/24 server1.ddupan.top 暴露公网的应用服务器 1

与 OpenClash 的通信走二层,OpenWrt 的路由表应大概长这个样子:

 1Gateway of last resort is 192.168.1.1 to network 0.0.0.0
 2
 3O*E2  0.0.0.0/0 [110/1] via 192.168.1.1, 00:03:25, GigabitEthernet0/1
 4      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
 5C        192.168.1.0/24 is directly connected, GigabitEthernet0/1
 6L        192.168.1.2/32 is directly connected, GigabitEthernet0/1
 7      192.168.50.0/24 is variably subnetted, 2 subnets, 2 masks
 8C        192.168.50.0/24 is directly connected, GigabitEthernet0/0
 9L        192.168.50.1/32 is directly connected, GigabitEthernet0/0
10O     192.168.100.0/24 [110/2] via 192.168.1.3, 00:00:42, GigabitEthernet0/1

用 GNS3 + Cisco IOSv 实验了一下构想,实际结果应是类似的,大不了全起静态路由罢了。

实际配置下来,从 192.168.50.0/24 出发,到 192.168.1.0/24 只有两跳,但到 192.168.100.0/24 要三跳,中间一跳会经过 192.168.1.0/24 进行转发。反之亦然。

由于都是可信网络通信,我觉得没必要让每个 VLAN 通过防火墙,反正都在家里,也没什么需要监控的东西。毕竟软件防火墙,速度也许应该比纯硬件转发还是要慢的。

接下来唯一的问题就是,OpenWrt 跑 OSPF 的稳定性到底如何,用 RIP 倒是经常崩,OSPF 还没有起过,如果稳定性尚可,那倒是可以直接用,如果不行的话就得在这个环节起静态路由了。

写此文时,3560X 还没到货,因此文中存在很多推测的东西,实际上手以后应该会多踩些坑。

突然想计时一下,看看这个改造会断网多久。