Atlantis
GitHub Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

2. 网络规划

PVE 默认的网络架构为桥接模式,只需要将vmbr0的网段配置为上层路由器网段,然后设置一个可用的静态IP,后续创建的VM、LXC等也可以从路由器的网段分配到IP,使内网机器都在一个可互相访问的子网下。

img-000

默认的 /etc/network/interfaces 配置类似下面:

auto lo
iface lo inet loopback

iface eno1 inet manual

auto vmbr0
iface vmbr0 inet static
        address 192.168.10.2/24
        gateway 192.168.10.1
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0

内网网络直接使用路由器配置的网络即可,但是解决外部网络访问内网设备,以及虚拟机/容器访问国外网站的问题,还需要费一番功夫。

在过去的几年里,我先后使用过以下几种类型的家庭网络:

  1. 拨号宽带:一般获取到一个运营商分配的内网 IPv4 地址;
  2. 公寓网络:公寓网络使用光纤或拨号宽带接入运营商,然后再使用软路由二次分配给租户,我们一般得到一个存在双重或三重 NAT 的 IPv4 网络;
  3. 光纤宽带:通过光纤接入运营商,通常拿到一个运营商内网 IPv4 地址和一个公网 IPv6 地址段;
  4. 蜂窝网络:目前各大运营商都提供了 IPv4/IPv6 双栈网络,无论是 4G 还是 5G 网络下,都能拿到一个内网 IPv4 地址和一个公网 IPv6 地址,如果手机提供热点给其他设备接入,这些设备在 DHCP 阶段也能获取到公网 IPv6 地址。

铺垫这么多只想阐述一个问题,在入向网络上,家庭网络的设备直接对外暴露服务比较困难。IPv4 环境下只能利用公网节点中转流量来提供内网穿透,而 IPv6 环境下关闭光猫防火墙后,一般可以实现直接互访,不过我试过三大运营商的 IPv6 地址互访,结果电信 4G 可以访问联通光纤网络,但是联通 4G 无法访问到联通光纤网络,这个联通性暂时也得不到保证,有可能是被运营商封锁。

因此入向网络的选择只有 IPv4 + 中转节点 + 内网穿透,或者 IPv6 + tailscale + 直连(注意:直连还是需要中转节点完成握手阶段的数据交换)。

出向网络则有更多选择,无论是使用 PAC、HTTP_PROXY/HTTPS_PROXY 环境变量还是软路由做透明代理,只要能跨越 GFW 即可,我在折腾了一段时间后选择使用 iStoreOS 作为家里的 NAS 和旁路由,配合 PassWall 插件实现透明代理,可以省去为每个虚拟机内的进程配置代理的重复操作。

另外我还在 iStoreOS 上安装了 tailscale 插件并启用 ExitNode,这样出门在外,只要手机/电脑具备 IPv6 网络公网地址,就可以直连家里的iStoreOS,然后访问其他内网设备。

讲完出入网的配置,再唠叨一下关于光猫的一些问题,我最开始了解到的信息是:开通光纤网络并在线一个月后,可以找安装宽带的师傅切换光猫为桥接模式(默认情况下光猫既负责拨号也负责提供路由),然后使用软路由直接拨号,完全掌控内网设备的地址分配。

img-001

遗憾的是现在不行了,年初从 V2EX 的了解的信息看,即使获取到光猫管理员用户权限调整光猫运行模式后,也会被远端服务器刷回配置,严重点可能封号,但用修改下光猫的 DHCP 地址段还是可以的,我就通过后门做了调整,将 192.168.1.2~192.168.1.128 保留下来分配静态地址。

目前整个家庭网络规划如下:

img-002

这里是在光猫上开启的 IPv6 地址分配,使用旁路由时,需要手动手动关闭客户端的 IPv6 DHCP,否则就会出现 IPv4 流量走旁路由,IPv6 流量走光猫,遇到一些无法确定的网络问题。移动设备的操作系统目前没有办法单独关闭 IPv6 DHCP,桌面操作系统都可以在网络配置中禁用 IPv6,Linux 上可以在 /etc/sysctl.conf 中添加以下配置关闭 IPv6。

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1