cstream 通用串流處理工具
此工具可以將 output 做限流處理,本來在找降低 mysqldump loading 的方案,
看到 這篇 回文,裡面提到將 mysqldump pipe 給 cstream 限速。
實測的確有效,大幅降低 mysqldump 期間對服務效能造成的影響
另一個應用範例: 下載限速 1MB/s
curl https://osk-jp-ping.vultr.com/vultr.com.100MB.bin | cstream -t 1048576 > output
當然,curl 本身就有限速參數,上面經由 cstream 限速的語法效果跟下面這句相同
curl --limit-rate 1048576 https://osk-jp-ping.vultr.com/vultr.com.100MB.bin > output
2023年12月31日 星期日
cstream - stream limit tool
Get IP addresses by ASN
whois -h whois.radb.net -i origin AS15169 | grep ^route
result
route: IPv4 network segment
route6: IPv6 network segment
2023年11月17日 星期五
Fix Unable to detect release version (use '--releasever' to specify release version)
rpm -ivh https://mirror01.idc.hinet.net/CentOS/8-stream/BaseOS/x86_64/os/Packages/centos-stream-repos-8-6.el8.noarch.rpm
rpm -ivh https://mirror01.idc.hinet.net/CentOS/8-stream/BaseOS/x86_64/os/Packages/centos-stream-release-8.6-1.el8.noarch.rpm
會遇到這個問題是在 migrate to Rocky Linux 時中斷造成
再次執行 migrate2rocky.sh 腳本會出現錯誤
Found a full or partial RockyLinux install already in place. Aborting
because continuing with the migration could cause further damage to system.
修改 migrate2rocky.sh 把出現上面訊息的 if 那一段拿掉,上面的 rpm 補完,再執行一次就可以了
2023年11月2日 星期四
SSH via Shadowsocks
Local port: 1080
Server IP: 12.34.56.78
~/.ssh/config 加入
Host *
若要 ssh 到 Server IP,改用 ssh 127.0.0.1
2023年9月8日 星期五
Fix Ubuntu NO_PUBKEY B53DC80D13EDEF05
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
2023年8月10日 星期四
HAProxy Reverse Proxy with SSL
frontend http-in
bind *:80
bind *:443 ssl crt /etc/haproxy/pank.org-crt-chain-key.pem
use_backend %[req.hdr(Host),lower]
backend test1.pank.org
mode http
option forwardfor except 127.0.0.0/8
server web-1 192.168.0.27:80
backend test2.pank.org
mode http
option forwardfor except 127.0.0.0/8
server web-2 192.168.0.42:80
test1.pank.org 及 test2.pank.org 使用同一個 wildcard 憑證,
crt 是 crt+chain+key 放同一個檔
若兩個站的憑證不同,可以用 crt-list 指定多個憑證
例: bind *:443 ssl crt-list /etc/haproxy/crt-list.txt
crt-list.txt 的內容
/etc/haproxy/domain1.com-crt-chain-key.pem
/etc/haproxy/domain2.com-crt-chain-key.pem
有設定 option forwardfor 會帶 X-Forwarded-For 到 backend server
2023年8月9日 星期三
NGINX Reverse Proxy with SSL
/etc/nginx/conf.d/test1.conf
server {
server_name test1.pank.org;
ssl_certificate /etc/nginx/conf.d/pank.org-crt-chain.pem;
ssl_certificate_key /etc/nginx/conf.d/pank.org-key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://192.168.0.27;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
若後端有多台,建立多個 conf 即可
有設定 proxy_set_header X-Forwarded-For 會帶 X-Forwarded-For 到 backend server
Apache Reverse Proxy with SSL
<VirtualHost *:443>
ServerAdmin pank@pank.org
ErrorLog "/var/log/httpd/test1_error_log"
TransferLog "/var/log/httpd/test1_access_log"
SSLEngine on
ProxyPass / http://192.168.0.27/
ProxyPassReverse / http://192.168.0.27/
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLCertificateFile "/etc/httpd/conf.d/pank.org-crt.pem"
SSLCertificateKeyFile "/etc/httpd/conf.d/pank.org-key.pem"
SSLCertificateChainFile /etc/httpd/conf.d/chain.pem
若後端有多台,建立多個 VirtualHost 區塊即可
Apache 預設就會帶 X-Forwarded-For 到 backend server,不用特別設定
2023年8月3日 星期四
yt-dlp - youtube-dl replacement
Github 也關閉了它及其他 fork 的專案
但在很多使用者抱怨下,2020 年 11 月 Github 恢復了 youtube-dl 的專案,
但是近來都沒更新了,最後更新日期是 2021 年 12 月
yt-dlp 是 youtube-dl 的 fork,仍常常更新,可視為 youtube-dl 的替代品
2023年7月3日 星期一
Simple traffic shapping with iptables
範例: Linux Gateway, 區網的網段是 192.168.0.0/24
要限制每個 IP 都有上傳下載 16M/16M bps
iptables -A FORWARD -d 192.168.0.0/24 -m hashlimit --hashlimit-name ratelimitin --hashlimit-mode dstip --hashlimit-above 2048kb/s -j DROP
iptables -A FORWARD -s 192.168.0.0/24 -m hashlimit --hashlimit-name ratelimitin --hashlimit-mode srcip --hashlimit-above 2048kb/s -j DROP
Rule 要分兩個方向來下,兩這條分別是下載及上傳
16M bps = 16384 k bps = 2048 kb/s
實測結果還算準
2023年6月27日 星期二
Get Public IP Address from OpenDNS
curl ip4.tw
curl ifconfig.co
OpenDNS 有提供一個服務,對他們的 name server 查 myip.opendns.com 會回應來源 IP
dig +short myip.opendns.com @resolver1.opendns.com
host myip.opendns.com resolver1.opendns.com
發現若環境同時有 IPv4+IPv6 可能會不正常,因為兩個 IP 都有的話,通常會走 IPv6 的路由,用 IPv6 路由去查 A 記錄導致無資料
保險一點,指令要區分 IPv4、IPv6
dig -4 +short A myip.opendns.com @resolver1.opendns.com
dig -6 +short AAAA myip.opendns.com @resolver1.opendns.com
2023年6月18日 星期日
Import Rocky Linux 9 to WSL
curl -LOs https://github.com/rocky-linux/sig-cloud-instance-images/raw/Rocky-9.2.20230513-Base-x86_64/layer.tar.xz
上面的 layer.tar.xz 是官方的網址,其他版本網址可到 sig-cloud-instance-images 選擇 Branch
xz -d layer.tar.xz
wsl --import RockyLinux9 D:\WSL\RockyLinux9 layer.tar
Distro 名稱 RockyLinux9 及資料目錄名稱 D:\WSL\RockyLinux9 請依自身環境調整
wsl -d RockyLinux9
即完成進入 RockyLinux9 WSL
ref. Import any Linux distribution to use with WSL
2023年5月20日 星期六
Migrate Google Compute Engine VM image to local
先關機建立映像檔,再把映像檔匯出到 Bucket (可以選擇匯出格式 vmdk、vhdx 等),然後就可以下載
但會發現在自己的環境無法開機,看起來是找不到 root
解決方式必需重建 initramfs
但因為找不到 root,在這個 emergency mode 無法做這個動作 (dracut -f)
需要找對應的版本的 ISO 來開機,由於系統內可能沒有跟 ISO 內一樣版號的 /lib/modules
最簡單的方式就是裝 ISO 內的 Kernel,流程上一樣會建立 initramfs
以下以 CentOS 7.9 為例:
以光碟開機進入 Rescue 模式後,選 1
chroot /mnt/sysimage
mount /dev/cdrom /mnt
cd /mnt/Packages
rpm -ivh kernel-3.10.0-1160.el7.x86_64.rpm
exit
reboot
應該就可以正常開機了
備註:
一開始畫面出現這個
Probing EDD (edd=off to disable)... ok
其實跟開不了機無關,不影響是否可以正常開機
2023年5月5日 星期五
Allow CloudFront edge server only
JSON 資料格式
https://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips
ref. Locations and IP address ranges of CloudFront edge servers
2023年4月25日 星期二
Amazon Linux 2
Run Amazon Linux 2 as a virtual machine on premises
要自訂帳密需自行建立 seed.iso,然後掛到光碟上,
seed.iso 內容只有兩個檔,meta-data 及 user-data
懶得自己建也可以用預設的 seed.iso
預設有四個帳號 user1, user2, user3, ec2-user
其中帳號 user1 及 ec2-user 可以用預設密碼 amazon 登入
user2 要設定 hashed passwd, 沒設定是無法登入
user3 是用 SSH key 登入
使用預設的 seed.iso 第一次開完最好把預設的 user 都刪除
2023年3月29日 星期三
Bash built-in case modification
$ A=ABCdef
# To upper case
$ echo ${A^^}
ABCDEF
# To lower case
$ echo ${A,,}
abcdef
2023年3月23日 星期四
ifup and ifdown equivalent nmcli command
ifdown eth0 = nmcli con down eth0
ifup, ifdown command still available in NetworkManager-initscripts-updown package
dnf -y install NetworkManager-initscripts-updown
2023年3月12日 星期日
解決 Windows 工作排程器 錯誤訊息: 已回報下列錯誤: 工作定義使用了過時的功能
2023年2月15日 星期三
2023年1月15日 星期日
Detect iPhone by Port 62078
現在手機預設都有開 Random MAC Address 的功能,也就是無法用 MAC 來判斷是那一家廠商
iPhone 手機有一個固定會 Listen 的 Port 62078,若 Scan 這個 Port 有回應,可以判斷這個 Device 可能是 iPhone
Android 則沒有固定會 Listen 的 Port
2023年1月9日 星期一
Using iperf3 to test uload and download
iperf3 -s
Client side
iperf3 -c server_host -b 10M -t 60 -P 5 # Test upload
iperf3 -c server_host -b 10M -t 60 -P 5 -R # Test download
頻寬 10M,測試時間 60 秒,使用 5 個平行連線
iperf3 只能一個 Client 對一個 Server
若要多個 Client 對同一台 Server,Server 端需執行多個 iperf3 用不同的 Port 切開
2023年1月6日 星期五
Detect if a VM is running in Google Compute Engine
sudo dmidecode -s system-product-name | grep "Google Compute Engine"
這個需要 root 權限,實際上是去讀取 /sys/firmware/dmi/tables/DMI
用 strings /sys/firmware/dmi/tables/DMI | grep "Google Compute Engine" 也行
若程式沒有 root 權限,可以去讀取 /etc/hosts 有沒有包含 Added by Google 字樣
grep "Added by Google" /etc/hosts
2023年1月2日 星期一
RouterOS Packet Sniffer Streaming
將封包轉送到 PC,再用 Wireshark 收。
它會用 TZSP 封裝協定將封包再包一層後再轉送
Tools / Packet Sniffer / Streaming Enabled 打勾,輸入 Server IP 及 Port (預設37008)
Apply / Start,還可以下 Filter 條件
在 PC 端的 Wireshark 下 tzsp 過濾條件即可查看
Linux PPPoE NAT MTU and MSS
Linux 在 PPPoE 環境下 NAT,下面的 Client 可能會有部份網站連不上, 已知 LINE 的網站 ( https://line.me ) 及 LINE 服務就有這個狀況 這個問題是因為 Client 的 MTU 1500 大於 Linux NAT WAN 端的 ...
-
禁止 LINE 電腦版自動或強制更新的方法 LINE 電腦版啟動都會去連這個更新資訊檔 https://desktop.line-scdn.net/win/v1/real/update_info.json 內容大概長這樣 可以看出針對各版本的更新 type 有 force, ...
-
xrdp 是 Linux 版的 RDP server (遠端桌面) 它運作時需要 Xvnc 的 libvnc.so, 所以安裝時需要連同 VNC 一起安裝(只需 minimal) dnf -y install xrdp tigervnc-server-minimal system...
-
以前都是用 rp-pppoe 套件裡的 adsl-setup 來設定 PPPoE 現在比較新的 Linux 已經沒有這個套件了,要用 NetworkManager 的 nmcli 來設定 設定也很簡單,準備帳號、密碼及網路卡就行了 以下範例帳號是 xxxx@hinet.net 密...
-
比較舊版的電視盒,無法裝新版的 Kodi , Android 4.x 版只能裝到 16.1 這個版本 kodi-16.1-Jarvis-armeabi-v7a.apk
-
Windows 的 NFS Client 從 Windows 7 之後就內建了,但預設沒有開啟, 要到 設定 / 應用程式 / 程式與功能 / 開啟或關閉 Windows 功能 開啟 Client for NFS 但是預設的情況下,遇到中文檔名會有亂碼, 到 設定 / 時間與語言...
-
這個方法網路要通,直接抓 image 寫入硬碟 隨便找一片 Linux ISO 開到 rescue 模式 fdisk -l 看一下硬碟位置,如果是 /dev/sda curl https://repo.jing.rocks/openwrt/releases/23.05.3/tar...
-
跨來源資源共用(CORS) Mozilla 這邊文章寫得很詳細 簡單講當 User 去連 A 站,裡面的 AJAX 動作去 call B 站的資料,B 站就必需在 HTTP header 裡加入 Access-Control-Allow-Origin: * 使用完整 Source...
-
乘法的補數算法,也有人稱印度乘法 這個原理是這樣 95x88 = 95x(100-12) = 95x100-95x12 = 95x100-(100-5)x12 = (95-12)x100+5x12 適用 2 位數乘 2 位數接近 100 的乘法,若補數相乘超過 100,不會...
-
RouterOS 的管理工具 winbox,因為還不支援 UTF-8, 雖然可以在 Wireless 設定中文的 SSID,但是實際上會看到亂碼, WiFi 的 SSID 是走 UTF-8 編碼,需要把 UTF-8 中文轉成 HEX 碼,再用指令設定 寫了一個小工具提供大家使用...
-
2020年十月,微軟宣布在台建立資料中心,沒有公布時間表,滿期待的 之後台灣機房除了 Google 以外還有第二個選擇 Microsoft to establish its first datacenter region in Taiwan as a part of its &...