点击关注我的Telegram群组和微信公众号

MENU

湾区宽带升级:xfinity/Sail Internet 1500Mbps 双线负载均衡

2022 年 01 月 10 日 • 阅读: 1481 • 技术,分享,教程

写在最前面

这篇文章记录了我自去年11月开始的家庭宽带升级方案。文章长度比我平时写的要长不少,包含了对新旧宽带运营商的体验和OPNsense软路由的配置,我已启用右侧的文章目录树,所以你可以更加精确地跳转到指定的部分。

如果你发现这篇文章对你有帮助,你可以使用下面两个宽带运营商的邀请链接注册帐号来支持我!感谢!
Sail Internet 邀请注册链接:https://sailinternet.referralrock.com/l/1ALLEN07/
xfinity 邀请注册链接:https://referafriend.xfinity.com/ShareTheAwesome/1RWSMC

前言

在湾区多年,使用宽带无时无刻不被xfinity折磨着,我可以轻松列出一堆不推荐xfinity的理由:

  1. 价格比其它运营商高出一大截;即使选择1Gbps的宽带,上传带宽也只有35Mbps
  2. 每月限制1T的双向流量,如果不买$30的无限流量服务,一周不到流量就可以跑光
  3. 如果你选择租用xfinity的DOCSIS Modem/Router一体设备,或者在你自己的xfinity设备中没有刻意修改设置,xfinity会让其开放一个名为xfinitywifi的无线热点供所有人付费使用(这也是为什么在湾区随便找家餐厅吃饭你都能搜到xfinity的这个服务)
  4. 网络不稳定,动不动就故障或者维护,你永远不能相信xfinity的服务质量
  5. 价格陷阱。xfinity出了名的乱收费,经常莫名其妙给你加服务,xfinity用户一定要养成看账单的习惯
  6. 南湾除了新建的公寓,大多数住宅都是只有xfinity一家宽带覆盖
    a. AT&T虽然从几年前就开始在南湾开展光纤宽带业务,但覆盖区域拓展速度太慢
    b. 湾区其它的小型宽带公司要么只覆盖一小片面积,要么无法提供较高的带宽
    c. Google Fiber在San Jose的覆盖计划因施工方案被市政府否决而终止,目前Google Fiber在美国的整个项目似乎都被砍了

xfinity断网
去年11月8日晚上,xfinity在旧金山湾区的全部互联网服务故障数小时。故障范围之广,时间之长,官方反应之慢让人不得不怀疑xfinity究竟是不是一家正经的运营商。正好Sail Internet当时在小区内打广告,说它们最高300Mbps的宽带已经覆盖了我所在的小区。两件事放在一起让我决定给家中增加一条宽带,不仅解决上传带宽过低的问题,也避免故障频繁的xfinity在我需要网络时罢工。

Sail Internet 安装

Sail Internet的网络解决方案其实很有意思。AT&T覆盖拓展速度慢和Google Fiber被砍的核心问题其实还是工程施工在美国成本过高,而Sail Internet则是在用户住宅和街道上分别安装天线,以无线的方式将互联网接入用户家中,这减少了很多道路施工量。根据Sail自己的文档描述,它们使用的是微波和毫米波段来进行无线传输,有足够的信号质量保障。

Sail Internet安装时的照片
在安装施工时, Sail在楼顶安装了天线,并通过RJ45网线经过阁楼接入住宅。该天线也包含了Modem的功能,可以直接为屋内的路由器下发公网IP地址。而屋内的设备只是一个简单的天线的电源适配器,他提供了两个RJ45接口,一个接入用户自己的路由器,而另一口则为天线的RJ45 POE供电。
Sail网络屋内设备

我以前也没见过如此接入宽带的形式,但几个月使用下来不得不承认这种“无线”宽带和传统的宽带确实没有太大的体验差别。Sail提供的带宽是一个区间,在我家它提供了最低100Mbps下行和50Mbps上行带宽的保证,但实际上绝大多数时间都可以跑到200Mbps对等的速度,不少时间甚至可以达到300Mbps对等的速度。至于网络延迟,作为一个游戏玩家,在安装前我对此保持警惕。但事实上,Sail的网络延迟跟传统无线网络完全是不一样的。ping了几个常见的网站,Sail网络的延迟和xfinity网络的几乎一样,且和有线宽带一样稳定,使用Sail宽带打游戏也没有感到任何网络质量问题。在过去几个月湾区雨季的时候,降水也没有影响到我家的宽带质量。
只能说,科技发展的速度总是令人惊讶的。

软硬件和价格

网络服务

在这里,我的网络环境可以说是比较奇怪的。在很多负载均衡中,我们会按照带宽比例设置权重,但在我的网络拥有较大下行带宽的线路却只拥有很垃圾的上行带宽。

ISP下行带宽上行带宽备注
xfinity1200 Mbps35 Mbps动态IPv4(实际上不换设备就不变) + IPv6
Sail Internet200-300 Mbps100-200 Mbps动态IPv4(实际上不重拨就不变)

主要价格

项目价格备注
xfinity$70/mo合约优惠价格,免去了xFi Complete服务的价格,一年后会变为$95
Sail Internet$55/mo无合约
2.5 Gbps 软路由$269.38CNY 1717
2.5 Gbps 交换机$206.63三台总计CNY 1317
50ft RJ45 线材$12

软路由配置

项目配置
CPUJ4125
内存8G
储存128G SSD
网卡4x RTL8125B (2.5Gbps)

对此配置的解释:

  1. 光xfinity自己的宽带就已经有1200 Mbps了,多线后速度明显会高于这一速度,自然不能再选1Gbps的网卡来浪费了
  2. 家里有NAS,选2.5G可以增强内网传输速度,家里的主要设备都有2.5Gbps的网卡,大家都能充分利用
  3. 我买的时候尚且还没有Intel的2.5G网卡方案,所以选的是螃蟹卡。写文时淘宝上已经有Intel方案了,我根据经验会推荐尝试Intel,至少在一些软路由程序上能避免驱动问题。
  4. 内存和储存都是往大了选的,非常多的冗余量,拿来跑软路由绰绰有余
  5. J4125确实适合好配置

OPNsense以外的负载均衡尝试

在最终选择OPNsense之前,我实际上尝试了其它解决方案,但种种原因都否决了,这里简单谈一下。

华硕路由器

家中原本用的就是RT-AX86U路由器,支持多WAN。但毕竟是消费级产品,高级功能不能给予用户足够的高级设置选项。否决原因包括:

  1. 只有1条2.5Gbps口(当然在家用路由器中这算好的了)
  2. AC86U中仅仅允许用户将两条WAN分别接入WAN口和2.5G口
  3. 华硕的负载均衡策略很奇怪,非常非常容易切IP,导致一些网站访问错误。在测试使用华硕路由器负载均衡期间,家中的Steam疯狂掉线且经常出网络不可用错误

iKuai

iKuai的好处是直接包含了RTL8125B驱动,其也预先包含了很多负载均衡策略,相关设置算是很容易上手的,否决原因包括:

  1. iKuai是面向中国市场的产品,许多网络设置是针对中国网络环境专门设计的,高度的定制使得在国外使用反而更加麻烦

RouterOS

  1. 没网卡驱动,需要先装个ESXi做桥接(ESXi本身也还要额外的打网卡驱动的步骤),太麻烦

pfSense

  1. 和最终解决方案OPNsense很接近了,但它没网卡驱动。而OPNsense自带了对RTL8125B网卡的驱动,所以选了OPNsense,就是这么简单的原因。如果你选了Intel网卡,或者选择虚拟机方案,应该是可以直接用pfSense的

Openwrt

在我搜索负载均衡软路由相关的文章时,Openwrt应该是中文文章中最常使用的方案了,它之所以如此热门是因为很多在中国网络环境下需要的路由器功能都可以通过设计插件来实现(比如科学上网插件,DDNS插件等等)。否决原因包括:

  1. 极差的负载均衡性能,原因不知。在用默认的负载均衡配置并按1:2的比例设置权重后,下行速度测速只有300Mbps,上行只有30Mbps。
  2. 许多功能真的并不需要。

OPNsense的配置

正文开始。
路由设备上一共有四个网口,OPNsense会默认将ETH0启用并作为LAN口。为了方便日后管理,我们将ETH0和ETH1都作为LAN口,将ETH2作为Sail Internet的WAN口,ETH3作为xfinity的WAN口。不划分VLAN,桥接两个LAN口。

OPNsense初始设置

  • 安装系统部分略过不谈
  • 初始化设置中将LAN地址从默认的192.168.1.1/24修改为了192.168.50.1/24,这是为了让一些万年不关机的设备不用通过重启来获得新的IP,更方便地从华硕路由器迁移。

修改内网段

配置LAN

由于多WAN需求和受限的网卡数量,我们需要先配置桥接LAN

  • 通过侧栏菜单进入Interfaces --> Assignments
  • 分别为剩下三个未被分配的网卡分配接口,为了方便管理,我们直接按照路由器实体上的以太网端口编号命名,例如ETH1

    • 对于新建的每一个接口,均保持IPv4 Configuration TypeNone,并设置为启用

创建网络接口

  • 通过侧栏菜单进入Interfaces --> Other Types --> Bridge
  • 点击加号以创建一个新桥

    • 选中ETH1ETH2,为桥设置一个名称,随后保存
    • 不选择ETH0的原因是:只有接口IPv4为None(即无设置状态)才可以被加入桥。而在OPNsense刚刚安装完成时,ETH0为设置了静态IP,以允许用户远程管理OPNsense。如果直接将ETH0的IPv4修改为None,我们将直接失去对OPNsense的远程访问
  • 回到Interfaces --> Assignments菜单,将系统自动生成的LAN接口所对应的网卡从ETH0切换为刚刚创建桥,随后保存设置
    更换LAN接口

    • 此时,你接在ETH0上的设备将失去网络,因为ETH0现在没有绑定任何网络接口。将你的设备改接入ETH1上,网络将恢复
  • Interfaces --> Assignments菜单中为ETH0创建一个新的接口,IPv4配置为None
  • Interfaces --> Other Types --> Bridge菜单中,修改桥所绑定的网卡为ETH0ETH1
  • 进入System --> Settings --> Tunables菜单

    • net.link.bridge.pfil_member的值修改为0
    • net.link.bridge.pfil_bridge的值修改为1
      Tunables设置
  • 保存设置,此时你的网络接口应如下图所示,且ETH0和ETH1为被桥接的LAN口
    网络接口列表
  • 通过侧栏菜单进入Services --> DHCPv4 --> [LAN],检查DHCP服务器设置是否符合需求
    DHCP服务器设置

配置双WAN (IPv4)

我们现在要将ETH2分配给Sail网络,ETH3分配给xfinity网络,并启用负载均衡

  • Interfaces --> [ETH2]菜单中,将IPv4 Configuration Type的值设置为DHCP,保存设置
    IPv4 DHCP
  • 进入System --> Gateways --> Single菜单中,点击加号来添加一个网关

    • 我们将其命名为WAN1
    • Interface设置为ETH2
    • Monitor IP中我们填写一个可用性值得信任的IP,此处我们使用Google DNS 8.8.8.8
    • 取消勾选Disable Gateway Monitoring, 这将使用WAN1通过测试连接到8.8.8.8的网络来判断其网络的可用性,为后面的多WAN的故障转移做准备
      ETH2网关设置
    • 保存设置,此时回到OPNsense首页,我们应该已经看到Sail网络的IP被获取到,并且可以正常上网了
  • 重复上面的步骤,在ETH3接口下设置xfinity网络

    • Interfaces --> [ETH3]菜单中,将IPv4 Configuration Type的值设置为DHCP
    • System --> Gateways --> Single中为ETH3添加网关,监控IP设置为1.1.1.1并保存启用网关
  • 进入System --> Gateways --> Group,点击加号以添加多WAN

    • 我们将该组多WAN命名为WAN_Group
    • Gateway Priority中添加WAN1WAN2,将它们均设置为Tier 1
      WAN Group
    • 这样两组WAN线路将拥有相同的优先级,OPNsense将这种情况按负载均衡处理
      WAN Group设置完成
    • 如果需要对WAN线路进行流量权重修改,正确的方法是在System --> Gateways --> Single选择对应的WAN线路,进入高级设置,并修改Weight的值(默认下均为1)
  • 通过侧栏菜单进入Firewall --> Settings --> Advanced,将Use sticky connections取消选中

    • Use sticky connections是在多WAN状态下对每条连接保持使用同一网络。访问网络安全设置较高的网站,切换IP可能导致用户登录状态丢失等问题。在使用华硕路由器双WAN功能时,Steam频繁掉线就是因为连接被频繁切换线路。根据一般常识和官方文档的说明,我们应该保持该选项被启用。但是,在使用几个月后我发现保持该选项选中时,很难达到带宽叠加的效果。并且将该选项去除后,并没有出现像华硕路由器双WAN设置那样的糟糕表现。因此,这里我推荐先将Use sticky connections关闭,做一段时间尝试。
      粘性连接
  • 通过侧栏菜单进入System --> General中找到DNS servers,为两条网关分别DNS服务器
    多线DNS
  • 通过侧栏菜单进入Firewall --> Rules --> LAN

    • 找到系统默认生成的IPv4默认防火墙规则,点击铅笔按钮进行编辑
    • 拉到底部,将Gateway修改为刚刚创建的WAN_Group多WAN配置,随后点击保存
      多线防火墙设置
  • 此时,OPNsense的多WAN网络便已经设置好了。在控制台首页可以看到两个公网IP,进行测速应该会有带宽叠加效果
    speedtest测速
    下载测速
  • 当有线路掉线时,OPNsense会检测到线路无法访问到其对应的监控IP。此时OPNsense会将该线路临时移除WAN Group,由另一条线处理所有网络请求,直到掉线的WAN线路恢复
    掉线

配置IPv6

两条宽带中,只有xfinity提供了IPv6地址,所以我们需要设置一个单IPv6网络

  • Interfaces --> [ETH3]菜单中,我们将 IPv6 Configuration Type设置为DHCPv6

DHCPv6

  • Interfaces --> [LAN]菜单中,我们将 IPv6 Configuration Type设置为Track Interface
  • System --> Gateways --> Single中,我们应该能看到一个系统自动创建的,名为ETH3_DHCP6网关

    • 进入该网关的设置,我们取消勾选Disable Gateway Monitoring并在Monitor IP一栏中依旧填入Google IPv6 DNS 2001:4860:4860::8844 作为监控目标,随后保存设置
  • 此时在控制台首页,你将能看到你的公网IPv6和内网IPv6地址,配置完成

设置Google Drive云端备份

配置了这么多,我们自然不希望我们做的配置因为意外而丢失,所以我们需要启用OPNsense原生支持的Google Drive备份,这项功能将允许OPNsense把XML备份文件直接上传到Google Drive的对应目录下

  • 打开 https://console.developers.google.com/project
  • 点击Create Project以创建一个新的项目,我们命名其为Opnsense Backup
    创建项目
  • 等待片刻,在项目创建完成后点击进入该项目。使用顶栏搜索Google Drive API并进入
  • 点击Enable来启用该API
    启用Google Drive API
  • 在顶栏搜索Credentials并进入API & Services一项的设置
    Credentials设置
  • 点击Service Accounts部分的Manage service accounts
  • 点击Create Service Account来创建一个服务帐号,并填入用户名,一路点击下一步
    创建服务帐号
  • 在创建帐号完成后,我们点击这个帐号,选择Manage keys
    Manage Key
  • 我们选择P12证书形式并确认
    P12证书
  • 此时,你的浏览器将自动下载该P12文件
  • 我们进入自己的Google Drive,创建一个用于放置备份文件的文件夹
  • 分享该文件夹,目标分享用户填写刚刚在GCP中创建的服务帐号,并给予编辑权限
    分享权限
  • 进入OPNsense侧栏菜单中的System --> Configuration --> Backups

    • 在Google Drive部分,首先勾选Enable
    • Email Address中填写刚刚创建的服务帐号地址
    • P12 Key中上传刚刚下载的P12证书
    • Folder ID填写你Google Drive中备份目录的ID(你可以直接从浏览器URL中找到它)
    • 设置一个备份文件的密码保护
    • 点击Setup/Test Google Drive
      GD备份设置
  • 此时你的云端备份便设置完成了,在你的备份目录应该已经有一份XML备份文件了
    GD备份配置完成

参考文档:

How to set up a LAN Bridge - OPNsense document
Multi WAN - OPNsense document
Gateways - OPNsense document
Cloud Backup - OPNsense document
Sail Internet
xfinity Internet
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码
添加新评论

已有 3 条评论
  1. test test

    博主是定居国外了嘛,这个带宽的价格比国内要贵一些

    1. test test

      @test想知道你是怎么获取头像的呢

    2. @test1. 不是。对比不能价格不能单算汇率,要考虑购买力,xfinity价格算是正常,但性价比很差

      QQ头像的链接的静态的,网上有API可以直接抄到。评论区头像应该是默认读Gravatar,其次是QQ头像,这都是主题自带的功能。