linux hostname lookup

主機名稱很重要, hostname , 我們公司有台老鼎新tiptop erp主機 安裝的是 redhat enterprise 4 .


tiptop的架構我簡單的敘述, client端連線到這台 server , 這台server會辨識client 端ip , 再將資料以xml方式, 反向傳回去client端的接收程式, 該接收程式(genero desktop client , gdc )會把xml資料轉成UI介面 , 方便讓使用者使用.

可是呢, 每次使用者執行程式, 都必須進行license檢驗, 以及進行 host name lookup 查詢資料庫的ip在哪, 我說的是每次執行程式哦, 都要進行資料庫主機在哪的查訪動作, 實在是有夠怪的設計 , 這10多年來我困擾很久, 終於有點了解了
為何要了解這個, 因為使用者執行程式, 常常導致跑一隻程式, 光是等待程式冒出來就要等2分鐘... 我們早就知道是lookup的問題, 但找不出真正的解法, 以下是lookup的解決切入點

nsswitch 可以指定優先查 /etc/hosts 或是 dns 或是 winbind 

但這款老舊版本有個怪怪的bug, 設定了相關的lookup , 總是沒用, 就是會查詢失敗導致時間過久使用者憤怒, 我無意間看到有人寫了可以這樣檢查

getent hosts 資料庫主機名稱
或是
strace  getent hosts 資料庫主機名稱

我發現ap主機查詢很快, 但是查詢db主機超慢, 於是加上strace檢查問題 , 我加上去之後看不懂, 於是就多看了幾次,

這指令居然神奇的自己解決查詢過久的問題, 多執行幾次就變快了.... @@ 傻眼

QNap不正常關機, 造成vm開機失敗的修復小心得

一直以來QNap 純粹用來當作儲存設備, 花俏功能我都直接關掉, 只開放iSCSI , NFS 與CIFS , 而且限定內部ip才能連線(Qlocker遠離我).
但是最近公司停電,開機後, 我發現有一個插槽壞了, 換硬碟也顯示無硬碟狀態, 有夠麻煩的, 手忙腳亂了一番, 不小心造成QNap不正常關機(不要笑我啊).

悲劇來了, windows 的主要網域主控站, 與Sharepoint Server直接GG 慘, 而Linux也有狀況例如這個網站也GG, 好險Linux自帶工具, 告訴我可以執行xfs修復, 至少可以開機成功, windows就不多說了, 直接拿備份重建, 但是一波好幾折, 辛酸阿.

先說 linux 的docker server中 mariadb server container也再起不能了, 哭,
於是我另開一個可啟動的 mariadb container , 把有問題的volume中的額外table放到乾淨的mysql目錄中, 想像這樣或許可以救起來其他資料庫, 一開始啟動成功, show database, show tables也看到, 真是高興, 但是要select tables時候, 出現錯誤訊息

mysql error unknown table engine

又哭... 找了好久終於找到可以在my.cnf中加上以下參數, 但是我的container沒有mapping到/etc中的my.cnf , 於是又搞了一次, 才可以進行修復.

innodb_force_recovery = 1 
or 
innodb_force_recovery = 4

終於完成了, 我的網站修復完成.

競標我人生第一個NFT數位收藏品-林理惠"依賴"

前陣子開始對區塊鍊有興趣, 學習的過程發現很特別的產物"NFT(非同質化代幣)", 這種代幣可用來當作數位文件, 繪畫, 或是數位音樂, 等等藝術創作的數位憑證(證明), 藝術家利用這種方式, 讓自己的數位創作, 以NFT獨一無二的特性, 讓大家購買收藏, 也避免盜版.

NFT的產品今年迅速發展起來, 一堆平台如雨後春筍般冒出來, 有人說這樣會氾濫最終泡沫化, 因為隨便人都可以將作品放上去, 或是藝術家多次製作NFT , 造成毫無收藏價值.

反正我趕上這熱潮, 競標看看囉 , 要買 opensea 平台上的NFT很多方式, 我是用wallet connect連到trust wallet進行購置, 很複雜 ,
首先我鎖定林理惠未發表的創作"依賴", 競標準備工作如下,

  1. 安裝 trust wallet , 並且想辦法從銀行帳號, 購買以太幣存放到這個錢包上 , 10000新台幣, 手續費7.98美金(0.002856 ETH)
  2. 錢包有以太幣之後, 將以太幣(0.105 ETH , 我要下標的價格) 1比1 轉成 WETH (這啥碗糕我也不懂, 大概就是轉換平台使用的錢幣吧), 手續費6.42美金(0.002296938 ETH)
  3. 再到 依賴NFT 下標0.105, 這樣也要 7.13 手續費(0.00255002 ETH)

這些過程超級麻煩的, 四處都要錢, 花了10000新台幣買以太幣, 從裡面拿出0.105以太幣(約8000新台幣)競標, 居然要扣掉 21.53美金, 約600新台幣, 好坑人啊.

虛擬幣的限量與非限量

比特幣身為第一個加密貨幣,價值一定不斐, 外加限量的設計, 肯定長年位居霸主的地位.

因此虛擬幣除了生態發展外, 必須考慮限量或是非限量的設計,

有些無限量的發行, 但只是因應通貨膨脹的作法就沒甚麼關係, 例如 "門羅幣($XMR)" , 以及最近超級夯的"奇亞幣($XCH)" , 過了幾十年都還只有幾千萬顆, 跟限量其實也沒甚麼差異, 反而增加一些彈性.

至於乙太幣也是無限量的,目前1億多顆, 未來升級到乙太坊2.0, 預計每年增發最多200萬顆, 似乎也占整體1%左右,, 影響不了太大.

$ERG是我看好的信仰幣, 一輩子總發行量不超過1億顆, 與比特幣一樣是限量的, 但是發行量多了5倍, 若沒有搭配好的生態, 其實也滿難發展的, 只能希望團隊堅持下去囉.

有趣的門羅幣(最強的匿蹤幣)

挖了1個月, 終於挖到0.1塊門羅幣, 這是這麼多年後我第一次挖礦, 非常開心, 挖礦對我來說只是好玩, 賠錢挖.
聽說這種幣每筆交易能做到匿蹤, 查不出誰給誰, 技術上是滿滿的數學運算,想知道的,到這裡有神人可以解釋 ,

這種幣很特別, 不只匿蹤, 團隊為了對抗挖礦機, 以及超貴的顯示卡, 硬是改了算法, 改成只適合CPU挖礦,
也因為這樣, 讓大家都能參與挖礦,
更神奇的是, 居然有家公司minero.cc , 發展出網頁挖礦的設計 ,網站放上簡單的javascript, 只要有人瀏覽網頁就能開始挖礦, 我在這網站放了一個試試看, 網站收益告訴我, 10年後可以挖到1美金, 哈哈, 超搞笑的!

比特幣的熱潮

最近比特幣帶動一波區塊鍊上揚行情(其實已經夯2年了), 比特幣前幾天還攻佔 60000美金的里程碑,
著實讓我這種完全不買也不懂股票, 期貨, 以及區塊投資的宅工程師非常羨慕阿.
但我也因為這樣, 在youtube看到兔頭的視頻, 講解如何挖區塊幣, 因此小小研究了一下如何挖幣,
先講結論

現在這麼夯的情況下, 可以考慮選擇一種信仰幣(最好價值不高), 一直挖下去就對了, 但是要真的拿來賺錢, 勸大家不要不自量力, 無法賺到甚麼錢的, 還不如到區塊幣交易所投資

這波熱潮, 還帶領整個區塊鍊生態蓬勃發展, 最有名的是 NFT , 讓藝術產品「貨幣化」或是讓遊戲虛寶變成獨一無二, 登記到區塊鍊上, 實現跨遊戲使用的特性.

這些幣好多好多, 各自有各自的特點, 也有各自的生態, 當然也有垃圾幣 shit coin, 我也買過柴犬幣 shib coin 2塊美金可以賣到5千萬個柴犬幣, 好像很威的樣子, 但狗狗幣 doge coin都比這個有價值多了, 狗狗幣一個還要台幣1,2塊錢呢.

我最後選擇的信仰幣是$ERG. 但想要額外收藏的幣是最強的匿蹤幣門羅幣 $XMR, 其他熱門幣就看看就好,.

我看大家都會放上錢包, 代表真的有玩過, 我也放上我的錢包, 快丟錢幣給我吧

$ERG 
9iDbYdb1L8hbLc6bAxn9Sr9hPDtCu2ecqsnVspaCbuUof2dukdR

$XMR 45KMWcNtMgzj6ibe5Ro8f2HW97KP5rkqS3FzDRkcCrYaQtGwudgfzGii1S7JrmShtg5Ag5akawawXbxUK7QoZCQA5wXm9PZ

$ETH
0xB744eFEFa184f98c558a89018a470dc0E1b7d4B6

擴容xfs,ext4(不使用lvm)

linux vm我很很老派的喜歡用純粹的ext4 , xfs 檔案系統, 但是時常遇到磁碟空間不足的問題,
此時讓VM 伺服器加大空間, 再服用以下兩個指令:

1. 安裝擴容軟體
yum install cloud-utils-growpart -y
2. 執行擴容(xfs只能增大, 不能減少)
growpart /dev/sdb 1
代表讓/dev/sdb1擴充到最大
3. 生效 
假設/dev/sdb1 mount 到 /mnt/docker
以下指令可以立即生效
xfs_growfs -d /mnt/docker

docker安裝multiOTP, 讓windows登入更安全(MFA)

我們不屎用微軟的MFA(Multi Factor Authentication), 原因如下:

Azure AD MFA 免費使用, 但是很貴, 哈哈, 於是就pass

multiOTP(https://github.com/multiOTP/multiotp/wiki) 是個開源免費的 MFA server & client 專案,
其實我們也只是要讓登入更安全, 目標就是手上多個驗證器, 可以輸入動態密碼, 多個保障.
不囉嗦, 直接寫下我的安裝方法

安裝開源的 MFA Server

  1. 準備docker環境
  2. 下載最新檔案
    https://download.multiotp.net/multiotp_5.8.1.0.zip
    解開檔案
  3. 修改Dockerfile
    加上 RUN echo "deb http://ftp.de.debian.org/debian buster-backports main" | tee /etc/apt/sources.list.d/docker.list
    **這是5.8.1.0的bug

修改Dockerfile這步驟以後不需要做, 下個版本會解決


4. 編譯images
docker build . -t mymultiotp:latest

5. 啟動server

docker run --mount source=multiotp-data,target=/etc/multiotp -p 8080:80 -p 8443:443 -p 1812:1812/udp -p 1813:1813/udp -d mymultiotp:latest

8080 與 8443 請依實際情況修改

6. 網頁輸入 http://<docker serverr ip>:8080

登入後, 新增測試帳號 administrator (請注意, 這個帳號是windows 10本機可登入帳號 , 不限定administrator)

手機安裝google authenticator


安裝google驗證器, 刷入帳號的QR code , 請選擇帳號後點選 Print


在windows安裝Credential Provider

https://download.multiotp.net/credential-provider/
https://download.multiotp.net/credential-provider/multiOTPCredentialProvider-5.8.1.0.exe

輸入windows的帳號與密碼, 還有google驗證器的密碼

遠端登入

此時遠端登入第一次登入不用otp密碼, 但是會出現第二是要求輸入otp密碼,

這是原本遠端桌面連線並無法一開始就支援otp的緣故,目前無法解結

MFA server 與 網域主控連線

docker 登入已安裝好的 mfa server 然後輸入以下指令

 multiotp -config default-request-prefix-pin=0
 multiotp -config default-request-ldap-pwd=1
 multiotp -config ldap-server-type=1
 multiotp -config ldap-cn-identifier="sAMAccountName"
 multiotp -config ldap-cn-identifier="sAMAccountName"
 multiotp -config ldap-group-attribute="memberOf"
 multiotp -config ldap-ssl=1
 multiotp -config ldap-port=636
 multiotp -config ldap-domain-controllers=ldaps://網域主控伺服器:636
 multiotp -config ldap-base-dn="OU=xxxx,DC=test,DC=com"
 multiotp -config ldap-bind-dn="cn=ldap,cn=Users,dc=test,dc=com"
 multiotp -config ldap-server-password="password"
 multiotp -config ldap-network-timeout=10
 multiotp -config ldap-time-limit=30
 multiotp -config ldap-activated=1
 multiotp -config ldap_default_algorithm=totp
 multiotp -debug -display-log -ldap-users-sync
  1. 若成功, 網頁登入MFA server就能看到網域使用者, 也可以派送QR code給該使用者使用
  2. 定期執行同步指令
multiotp -debug -display-log -ldap-users-sync
1 2 3 ... 44