2024年11月6日 星期三

MySQL 8.4 LTS

許久沒有留意 MySQL 的版本發展,8.4 都已經出一段時間了(2024-04),
這是繼 8.0 LTS 後下一個 LTS 版本
寫這篇文章時,已經出到 8.4.3

Overview of changes in MySQL 8.4.0

感覺異動不大,
mysql_native_password 預設關閉,
因應時代變化,一些預設參數有調整,
replication 的指令有異動

Download MySQL Yum Repository

裝這個 8.4 的 repo 檔,然後 yum -y update 就升完了
拿一台 8.0 的機器直接升級,並沒有遇到什麼問題,算是無痛升級

2024年11月2日 星期六

RouterOS Cloud DDNS Server

RouterOS Cloud DDNS Server 是

cloud.mikrotik.com
or
cloud2.mikrotik.com

若機器上設了很多路由,IP / Cloud 的 DDNS IP 可能不是想要的
可以設這段 static route 159.148.128.0/18 控制它走那一段路由出去 Cloud DDNS

LINE Notify Replacement

前一陣子 LINE 發出 LINE Notify 結束服務公告(結束時間2025-03-31),這對有在用這個服務的人影響頗大,
LINE Notify 好用在於免費,而且可以無限量發送
幾乎所有的 IM 軟體都有串 Bot Message 的功能,找替代方案不是問題

Telegram
Discaord
Facebook Messenger
IG
Skype
Google Chat
Microsoft Teams
Slack

個人使用就挑一套有在用的轉即可,個人是推薦 Telegram
量不大的話也可以用 LINE Messaging API,免費額度一個月是 200 則
商家的話比較麻煩,跳其他 APP 平台客戶不見得會繼續用,最佳替代方案只能付費選 LINE Messaging API
又是一個養套殺案例

inotify-tools

inotify-tools 工具,可以監控檔案系統的異動,後續觸發想要的動作,
例如此腳本監控 /abc 目錄,後續觸發 rsync 動作
while true
do
inotifywait -e modify -e create -e delete /abc
rsync -au /abc/ /def/
done

加 -d 參數可以常駐執行,監控 Event 存成 Log
inotifywait -dr --timefmt '%F %T' --format '%T %w%f %e' /abc -o /var/log/inotifywait.log

另外一個指令 inotifywatch 感覺比較沒用,它是監控一段指定時間或直到按 Ctrl-C,顯示 Event Counter

2024年10月6日 星期日

Linux PPPoE NAT MTU and MSS

Linux 在 PPPoE 環境下 NAT,下面的 Client 可能會有部份網站連不上,
已知 LINE 的網站 (https://line.me) 及 LINE 服務就有這個狀況

這個問題是因為 Client 的 MTU 1500 大於 Linux NAT WAN 端的 MTU 1492 所導致,
解決方式有兩種:

1. 在 Linux NAT 解決,加一行 Rule
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
TCPMSS 這個 target 會更改 TCP SYN 封包的 MSS 值
--clamp-mss-to-pmtu 會根據 path_MTU 自動設定 MSS (Maximun segment size) 的值,即 path_MTU - 40 (for IPv4)
2. 更改 Client 端的 MTU 跟 NAT WAN 端一致

這兩種方式明顯是方法 1 較佳,不用動到 Client 端

原理:
一般 Ethernet MTU 是 1500,PPPoE 是 1492,
Client PC 沒特別調整的話,MTU 也是 1500,進行 TCP SYN 連線,
TCP Option 中的 MSS 會是 1460 (1500-40 TCP Header)



在尚未加上面的 Rule 時,NAT 會原封不動轉送出去,
導致回應封包有可能會超出 PPPoE 環境的值1452,後續就收不到 Server Hello 封包,就會卡住沒通
加入該 Rule 後,封包在轉送出去時,會改成 MSS 值為 1452,後續就會通



那為何大部份的網站都會通呢?
因為用了較小的 MSS,例如 Google 是 1412

2024年9月18日 星期三

pktmon - Windows tcpdump

pktmon 相當於 Windows 下的 tcpdump,是 Windows 10 的內建工具

列出網卡
pktmon comp

新增一個 filter
pktmon filter add tcp80 -t tcp -p 80

開始抓包,--pkt-size 0 是記錄整個封包,不然預設只會記 128 bytes
預設抓所有網卡,要指定網卡可以用 --comp 網卡編號 (參考pktmon comp)
pktmon start -c --pkt-size 0

停止抓包,預設會存在當前目錄 pktmon.etl,若要指定不同的檔名,在 start 時用 -f 參數
pktmon stop

轉成 Wireshark 格式檔案,會轉出 pktmon.pcapng
pktmon pcapng pktmon.etl

pktmon 無法過濾某個軟體的封包,還是只能用 Microsoft Network Monitor,這個功能似乎還沒有替代品

2024年9月10日 星期二

HiNet IDC mirror closed

http://mirror01.idc.hinet.net
HiNet 這個網址關了,要高速下載 Linux ISO 少了一個地方,感謝 HiNet 默默服務了多年
測了幾個 TW mirror 站,推 TWDC 台灣數位串流,常見的 Linux 都有,速度超快
https://mirror.twds.com.tw

2024年8月26日 星期一

RouterOS WireGuard

RouterOS 在 7 版以後支援 WireGuard
註: WireGuard 在 Linux Kernel 5.6 版開始內建

設定滿簡單的,在選單 WireGuard New Interface,Private Key 及 Public Key 不用填,會自動產生
在 IP / Addresses 綁一個 IP 給 wireguard1,例如 10.66.66.1/24
在 IP / Firewall / NAT 加上 srcnat 讓 wireguard1 區段 masquerade

在 Peer 加 Client,這邊就沒有自動產生功能,
要找一台有裝 wireguard-tools 的 Linux,用 wg 指令產生
wg genkey | tee privatekey # 產生 Private Key
wg pubkey < privatekey # 產生 Public Key
wg genpsk # 產生 Preshared Key

Client Address 填入 10.66.66.2 # 要在上面 wireguard1 網段內
Client DNS 填入 8.8.8.8
Client Endpoint 填入 RouterOS 的 Public IP
下面會自動產生 Client Config 及 Client QR 碼

但實測在 [Interface] 內 ListenPort 必需移除才會通,
掃 QR 碼後,需將 ListenPort (監聽連接埠) 設定移除,移除後欄位會呈現 (隨機)

ref. ROS WireGuard

2024年8月5日 星期一

Change Redhat Linux 9 /lib default size

Redhat Linux 9 (or Rocky Linux 9 or Alma Linux 9) 之前的 /lib,設跟 /dev/shm 相同,預設大小是記憶體一半,
在 9 之後,預設大小是記憶體的 20%,若要調整這個大小,可以在 /etc/fstab 加一行覆寫預設值
例如:
tmpfs /run tmpfs defaults,size=5G 0 0

systemd jounal 的預設存放位置就在這 /run/log/journal,
其預設最多使用所在 Partition 的 10%,若 Log 量多,希望保留多一多時間,
就需要調大 SystemMaxUse 及 RuntimeMaxUse 這兩個值

2024年6月7日 星期五

ESXi find what process lock file


ESXi 檔案刪不掉,出現 Device or resource busy
若檔案名稱是 windows-10-flat.vmdk
下此指令就可以知道那邊佔用

ps | grep `lsof | awk '/windows-10-flat.vmdk/ {print $1}'`

另外這個指令可以顯示機器名稱與 datastore 的檔案對應,

vim-cmd vmsvc/getallvms

改機器名稱,datastore 的檔案不會跟著改名,有可能出現與目錄名稱不一致的情況

MySQL 8.4 LTS

許久沒有留意 MySQL 的版本發展,8.4 都已經出一段時間了(2024-04), 這是繼 8.0 LTS 後下一個 LTS 版本 寫這篇文章時,已經出到 8.4.3 Overview of changes in MySQL 8.4.0 感覺異動不大, mysql_nati...