Linode 的 Load Balancer…

長輩那邊看到了Linode 也推出 Load balancer 服務… (剛開始 beta),於是就來測試一下:

這是增加一個 Port 的畫面,可以選 TCP 或 HTTP Protocol(沒有HTTPS),另外可以看Cookie或者查表來把同一個人導到同一台backend上。

Healthy Check 的部份有TCP、HTTP Valid Status 與 HTTP Body Regex,所以可以檢查回傳的頁面是不是正確(例如有沒有</html>)。但是不能指定 Host: 這個 Header。

設定完大概就長這樣:

然後接下來是加入 Member Node:

不能填非 192.168.*.* 或是 IPv6 Link Local Address 以外的值:

討論區的公告上面寫說支援IPv6,不過實際測試發現填不進去:

實際使用上是可以支援 IPv6 的,也有實做 X-Forwarded-For

實際使用上的問題有兩個:

  1. 跟之前的 AWS 的 ELB 一樣,有 Load Balancer IP 的信任問題。沒辦法確認這個 X-Forwarded-For 是不是被假造的。
  2. Node 的 Healthy Check UP/Down Status 更新速度很慢。我今天17:00加了新的Node進去,到現在(21:30)的 Status 還是 Unknown…

security/pam_google_authenticator: Two Factor Authentication PAM Module

security/pam_google_authenticator 是 Google 推出的 Open Source PAM Module,提供 RFC 4226 (HOTP: An HMAC-Based One-Time Password Algorithm) 的 OTP 功能。

只要使用 Android 手機(未來會支援iOS裝置),安裝 Google  提供的 App,開啟並設定 pam_google_authenticator,之後的 ssh 連線就可以使用 OTP 登入。

Linux 上的安裝方法可以看 @gasol 寫的替主機上第二道鎖 – Google Authenticator,這裡介紹的是 FreeBSD 上的安裝方法:

  1. 先安裝 security/pam_google_authenticator
  2. 執行 google-authenticator ,設定 secret key。螢幕上會出現一個 QR Code,用手機 App 掃描之後就會把 secret key 存到手機內。接著按照螢幕上指示把 secret key 存到 ~/.google_authenticator 裡。記得要 chmod 600。
  3. 設定 /etc/pam.d/sshd,在 auth pam_unix 下面增加一行:

auth required /usr/local/lib/pam_google_authenticator.so

這樣就生效了。要注意的是,這不會影響使用 Public/Private Key Pair 登入的使用者。另外,PAM設定完成之後,如果沒有設定 secret key 的使用者,就不能用帳號密碼登入了。

測試前記得請留下一個連線的 terminal,避免設錯導致人得跑到 console 前去處理。

Plurk 的 OAuth API…

聲明:我目前是 PIXNET 的員工。PIXNET 提供 OAuth API 服務給 PIXNET 本體與 Murmur.tw

Plurk 最近推出了新的 OAuth Core 1.0a API,終於是不用存帳號密碼了……今天晚上試著寫了一個機器人:台灣漫畫出版情報

現在的主要語言都有提供 OAuth Core 1.0a 的 Library,不過因為某些因素(其實就是懶……),我用的是 ronnywang 寫的 phppixnetapi 來改。其實也只要改掉前面定義的三個 URL,然後各個 function 照著 Plurk 提供的API寫就可以了。

寫完,測試發噗不會動……不過取得 Timeline 倒是成功了。檢查了老半天看不出什麼原因,最後把 POST 改成 GET 就可以了……OTL 真是令人絕望。

另外測試發噗的時候一如往常的遇到 Plurk 的防洪機制XD