在家裡放光纖的故事 (又是 25Gbps 的 Internet...)

在「Wiring my home with Fiber」這邊看到為了善用 25Gbps 的 internet 頻寬,所以決定在裡直接穿管放光纖...

翻了一下之前寫的「25Gbps 的家用 Internet」,媽的居然是不同人,但都是 Init7 的服務沒錯...

在開頭的地方他先放了架構圖,看起來是多組線路備援的架構?

用的是單模光纖,然後穿現有的牆內管:

然後看起來是自己做插座,而不是直接接設備:

家裡只放了 Cat6 到各房間,可以在短距離裡面跑 10Gbps,或是百米的 2.5Gbps/5Gbps,以這幾年網路升級的速度應該是夠用...

Ubuntu 下面搞 Multi-home 架構

家裡的 internet 架構大概是這樣 (省略過其他裝置):

一邊是 HiNet 的線路直接接中華的數據機 (modem),這段是用 PPPoE 撥接;另一邊是第四台網路 (北都),另外上面寫的 Switch 應該是 IP 分享器 (一台 ASUS 的機子,刷 DD-WRT),作圖的時候寫錯了...

最後是電腦的部份,我的桌機是跑 Ubuntu,用兩張個不同的實體線路 (界面分別是中華的 enp4s0 與第四台的 enp6s0f0) 接到了這兩個不同的網段上面。

打算跑 source routing 的架構來善用兩邊的頻寬,想法上面大概是這樣拆解:

  1. 機器本身有個 192.168.3.x 的 static ip。
  2. 針對 source ip 是 192.168.3.x 的封包,預設會往 192.168.3.254 這台分享器丟,然後 NAT 出去。
  3. Squid 在本機上跑一個 proxy server,指定 source ip 是 192.168.3.x

有了這樣的架構,我就可以在瀏覽器上面就透過 SwitchyOmega 這類的套件,指定某些網段要走第四台的頻寬出去了。

另外可以指定 http proxy 的服務也可以透過這個方法往第四台的線路連出去。

其中第二點需要把 source ip 是 192.168.3.x 的封包丟到 192.168.3.254 這段需要一些設定,首先是需要設定一個獨立的 routing table,我是在 /etc/iproute2/rt_tables 裡面放:

2       second

然後因為我是透過 NetworkManager 在管理網路界面的,我希望在 enp6s0f0 啟動時自動設定這個 source routing 邏輯,所以我在 /etc/NetworkManager/dispatcher.d/99-enp6s0f0 這邊寫了:

#!/bin/bash

interface=$1
event=$2

if [[ "$interface" == "enp6s0f0" && "$event" == "up" ]]; then
    ip route add default via 192.168.3.254 table second
    ip rule add from 192.168.3.0/24 table second
fi

然後要記得把這個檔案 chmod 755 讓他可以執行。

接著是 Squid 的設定,在 /etc/squid/squid.conf 裡面這樣寫:

#
http_access allow all
#
access_log /var/log/squid/access.log squid
cache deny all
cache_dir null /tmp
cache_log /dev/null
cache_mem 8 MB
dns_v4_first on
forwarded_for off
http_port 3128
tcp_outgoing_address 192.168.3.x

其中最後的 192.168.3.x 換成自己的固定 IP address。這邊因為 traffic 基本上都是 HTTPS 了,也不需要開 cache,就這樣設定...

這邊比較特別的是 dns_v4_first 的設計,這個是讓 Squid 儘量用 IPv4 的位置連線。這是因為北都的網路沒有提供 IPv6 位置,所以如果網站的 DNS 如果有 IPv6 位置的話就會從 HiNet 這邊的 IPv6 出去了...

另外 ping 與 MTR 之類的工具不會動在這這樣的架構下是正常的,因為這些工具會自己組合 raw packet 丟,不是透過 Linux 的 network stack 處理,所以不會被我們指定的 ip rule 解析。網路上看起來是有方法可以 mitigate,但我就先放著了...

這樣看起來還算堪用,先這樣用一陣子看看... 先前是在 Raspberry Pi 上面跑個 proxy server 導流量,但會受限於 Raspberry Pi 的硬體限制,效能上面就普普通通,現在直接用桌機拼看看...

家裡搞小機櫃的文章

Hacker News 的首頁上看到有趣的文章,在講怎麼搞個小機櫃弄起來專業一點的玩:「Home Lab Beginners guide – Hardware」,對應的評論在「Building a Home Lab Beginners Guide (haydenjames.io)」這邊可以看到。

照這個搞法好像可以塞兩三台 1U server,不過搞的大太就會像 Brad Fitzpatrick 搞的那樣,直接上 42U rack 了 XDDD

這好像也算是某種浪漫?

SETI@home 計畫將在月底停止

看到「SETI@home Search for Alien Life Project Shuts Down After 21 Years」這個消息,SETI@home 計畫將在這個月月底停止:

SETI@home hibernation
On March 31, the volunteer computing part of SETI@home will stop distributing work and will go into hibernation.

大學的時候跑得很開心,後來就沒什麼在玩了... 看起來是有些成果,所以決定休息了。

加州打算強制規定新房子都要有太陽能...

加州打算直接從法律上規定從 2020 年開始的新房子都要有太陽能:「California set to become first US state requiring solar panels on new homes」。

The state’s Energy Commission is due to vote next week on new energy standards that would require virtually all new homes to be constructed with solar panels from 2020.

如果通過的話,從 20% 直接變成強制性的 100%:

Currently around 20 per cent of single-family homes are constructed with solar capacity built in, but if the new standards are approved as expected this proportion will rise sharply.

下個禮拜回來看看消息好了,這應該是蠻指標性的事情... 無論是在經濟上還是在環保題材上。

用鋁箔紙改善無線網路死角 XDDD

看到用鋁箔紙改善無線網路死角的文章 XDDD:「How I amplified my home's Wi-Fi with aluminum foil.」。完成品長這個樣子:

然後從下面的第一張變第二張 XDDD:

然後這幾天他又把鋁箔紙變大,但是好像沒有更好 XDDD

I didn't see any difference in terms of coverage, it's still the same.

是個家裡太大的煩惱 XDDD

Homebrew 蒐集到的安裝資訊

在「Homebrew Analytics Install On Request Events — Homebrew」這邊,Homebrew 利用了傳回來的資訊算出 2016/07/14 到 2017/07/14 的安裝套件次數,列出前一千名。(我是把他關掉,因為隱私問題不想要傳出去... 參考「Homebrew 會將安裝資訊送到 Google Analytics 上」這篇。)

比較有趣的是第一名的 node 超級多,比第二名加第三名的 git + wget 還多...

拿來翻一翻還 ok,順便看一下大家用什麼...

用 hjkl 表示左下右上,以及 ~ 表示 home 的原因...

OSNews 上面看到:「Why vim uses the hjkl keys as arrow keys」,引用了「Here is why vim uses the hjkl keys as arrow keys」這篇文章,提到為什麼 vi 使用 hjkl 表示左下右上四個方向,以及用 ~ 表示 home directory 的原因。

首先是 Bill Joy 發明 vi 時所使用的 ADM-3A terminal 鍵盤的樣子:

再來是 ~ 這個鍵上面寫著 HOME:

既然有人定義好,那就直接拿來用 :p