2026年11月11日 星期三

squid-openssl 設定範例

設定金鑰
sudo mkdir -p /etc/squid/certs
cd /etc/squid/certs

# 產生私鑰與根憑證
sudo openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 \
  -keyout squid-ca.key \
  -out squid-ca.pem \
  -subj "/CN=Debian-Squid-CA/O=Internal Proxy/C=TW"

# 產生瀏覽器/終端系統匯入用的 DER 格式 (選用)
sudo openssl x509 -in squid-ca.pem -outform DER -out squid-ca.der

# 設定安全權限,避免非授權存取私鑰
sudo chown -R proxy:proxy /etc/squid/certs
sudo chmod 400 /etc/squid/certs/squid-ca.key
sudo chmod 444 /etc/squid/certs/squid-ca.pem


編輯 /etc/squid/squid.conf
# 1. 網路監聽與 SSL-Bump 核心配置

# 監聽 3128 埠並啟用 SSL-Bump 支援
http_port 3128 tcpkeepalive=60,30,3 ssl-bump \
  cert=/etc/squid/certs/squid-ca.pem \
  key=/etc/squid/certs/squid-ca.key \
  generate-host-certificates=on \
  dynamic_cert_mem_cache_size=20MB

# 憑證產生輔助程式 (Debian 13 預設路徑)
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 20MB
sslcrtd_children 8 startup=2 idle=1

# 信任系統預設 CA 憑證庫
sslproxy_cafile /etc/ssl/certs/ca-certificates.crt

# 2. ACL 定義 (Access Control Lists)
# 允許連線的內網來源網段 (請依實際內網配置調整)
acl localnet src 192.168.0.0/16
acl localnet src 10.0.0.0/8
acl localnet src 172.16.0.0/12

# 連接埠與協定定義
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 443         # https
acl Safe_ports port 1025-65535  # unregistered ports
acl CONNECT method CONNECT

# 欲阻擋的 HTTP 寫入 / 上傳方法
acl UploadMethods method POST PUT PATCH

# 內部自簽測試主機 (針對先前 10.6.140.1 除錯)
acl InternalTestServer dst 10.6.140.1
acl InternalTestSNI ssl::server_name apache2-test.loc

# 3. 憑證錯誤處理 (排除 503 / broken_cert 核心設定)
# 允許內部測試主機略過自簽憑證驗證
#sslproxy_cert_error allow InternalTestServer
#sslproxy_cert_error allow InternalTestSNI

# 關閉對端強制憑證驗證,避免 IP 存取時因主機名稱不符造成連線中斷
sslproxy_flags DONT_VERIFY_PEER

# 其餘外部網站維持嚴格憑證驗證
sslproxy_cert_error deny all

# 4. HTTP 存取控制規則 (順序關鍵:deny 必須置於 allow 之前)
# 基本安全檢查:拒絕非安全連接埠與非 SSL 埠的 CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# 快取管理員權限
http_access allow localhost manager
http_access deny manager

# 【核心阻擋】拒絕所有 POST / PUT / PATCH 請求
http_access deny UploadMethods

# 允許內網與本機發起其餘合法連線 (GET, HEAD, CONNECT 等)
http_access allow localnet
http_access allow localhost

# 預設拒絕其餘未定義來源
http_access deny all

# 5. SSL-Bump 處理流程
# 步驟 1:窺探連線取得 SNI 與 IP
acl step1 at_step SslBump1
ssl_bump peek step1

# (備用選項) 若希望特定主機直接穿透而不進行任何解密檢視,可取消註解下一行:
# ssl_bump splice InternalTestServer
# 步驟 2/3:對其餘所有 HTTPS 流量執行解密 (Bump),以落實 POST/PUT 檢查

ssl_bump bump all

# 6. 快取與系統日誌
access_log daemon:/var/log/squid/access.log squid
coredump_dir /var/spool/squid
shutdown_lifetime 3 seconds

Debian 13 加入系統信任庫的憑證

sudo cp internal_device.crt /usr/local/share/ca-certificates/internal_device.crt
sudo update-ca-certificates

移除
sudo update-ca-certificates --fresh
sudo rm /usr/local/share/ca-certificates/internal_device.crt

2026年11月6日 星期五

NFS v3 使用 PORT

遠端配額伺服器連接埠       RQUOTAD_PORT:4001   
鎖定 TCP 連接埠上的要求  LOCKD_TCP_PORT:32768   
鎖定 UDP 連接埠上的要求  LOCKD_UDP_PORT:32769   
掛載常駐程式連接埠            MOUNTD_PORT:32767   
NSM 服務常駐程式連接埠   STATD_PORT:32765   
埠號範圍必須在 1025~65535 之間

2026年11月5日 星期四

Conda Channel

Conda-Forge 官方 CDN
https://conda.anaconda.org/conda-forge/

Anaconda.org 官方社群 CDN
各大專案的官方頻道(如 PyTorch、BioConda 等):
PyTorch:https://conda.anaconda.org/pytorch/
BioConda:https://conda.anaconda.org/bioconda/

歐洲學術:
主通道:https://ftp.fau.de/anaconda/pkgs/main/
Conda-Forge:https://ftp.fau.de/anaconda/cloud/conda-forge/

巴西利亞大學開源(UnB - Universidade de Brasília)
主通道:https://mirror.unb.br/anaconda/pkgs/main/
Conda-Forge:https://mirror.unb.br/anaconda/cloud/conda-forge/

設定使用範例
編輯使用者目錄下的 .condarc 檔案(Windows: C:\Users\<使用者名稱>\.condarc,Linux/macOS: ~/.condarc)

YAML
channels:
  - conda-forge
  - defaults

show_channel_urls: true

default_channels:
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r

custom_channels:
  conda-forge: https://conda.anaconda.org/conda-forge
  pytorch: https://conda.anaconda.org/pytorch

測試
conda clean -i -y
conda search numpy -c conda-forge

2026年11月4日 星期三

Proxmox VE LXC 安裝 Tailscale

編輯 /etc/pve/lxc/[[lxc-id]].conf 加入

lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file

2026年10月21日 星期三

FreeBSD 時間設定

時區設定
tzsetup
cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime

adjkerntz -a

NTP 設定
編輯 /etc/ntp.conf
# 指定僅向 tock.stdtime.gov.tw 進行對時
server tock.stdtime.gov.tw iburst

# 預設拒絕外部所有不信任的存取(安全性設定)
restrict default limited kod nomodify notrap noquery nopeer
restrict source limited kod nomodify notrap noquery

# 開放本機無限制存取
restrict 127.0.0.1
restrict ::1

# 閏秒清單
leapfile "/var/db/ntpd.leap-seconds.list"

啟用服務
service  ntpd onestart

FreeBSD Sylve Jail 設定 xrdp + 中文輸入

pkg install -y xrdp xfce xorg xorgxrdp
pkg install -y xorg xfce xfce4-goodies
pkg install -y noto-tc
pkg install -y zh-CJKUnifonts
pkg install -y zh-CNS11643-font
fc-cache -f -v

pkg install -y fcitx5 fcitx5-configtool fcitx5-gtk2 fcitx5-gtk3 fcitx5-gtk4 fcitx5-qt5 fcitx5-qt6
pkg install -y zh-fcitx5-chewing zh-fcitx5-chinese-addons zh-fcitx5-table-extra zh-fcitx5-table-other

service dbus start
service xrdp start
service xrdp-sesman start 

XRDP 設定 ~/.startwm.sh
編輯 /usr/local/etc/xrdp/startwm.sh
# 系統選單與桌面語系
export LANG=zh_TW.UTF-8
export LC_CTYPE=zh_TW.UTF-8
export LC_MESSAGES=zh_TW.UTF-8

# Fcitx5 輸入法模組
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx

exec startxfce4

修正 /usr/local/etc/xrdp/key.pem /usr/local/etc/xrdp/cert.pem
service xrdp stop
rm -f /usr/local/etc/xrdp/cert.pem /usr/local/etc/xrdp/key.pem

# OpenSSL 手動生成現代化 SHA256 憑證 (有效期限 3650 天)
openssl req -x509 -newkey rsa:2048 -sha256 -nodes \
  -keyout /usr/local/etc/xrdp/key.pem \
  -out /usr/local/etc/xrdp/cert.pem \
  -days 3650 \
  -subj "/CN=FreeBSD-Jail-xrdp"

# 修正檔案權限,確保 xrdp 帳號可存取
chown _xrdp:_xrdp /usr/local/etc/xrdp/key.pem /usr/local/etc/xrdp/cert.pem
chmod 600 /usr/local/etc/xrdp/key.pem
chmod 644 /usr/local/etc/xrdp/cert.pem

2026年10月20日 星期二

FreeBSD 更新

更新 FreeBSD 系統本體 (Base System)
檢查並下載系統更新檔
freebsd-update fetch

安裝下載好的系統更新
freebsd-update install

更新第三方套件 (Pkg)
pkg update
pkg upgrade

清理無用的舊版套件與快取
pkg autoremove
pkg clean -a

FreeBSD 安裝 sshfs

pkg install -y fusefs-sshfs

載入 FUSE 核心模組
kldload fusefs

設定開機載入 fusefs
sysrc -f /boot/loader.conf fusefs_load="YES"

FreeBSD 啟用 Serial Console(透過 Serial 登入系統)

編輯 /boot/loader.conf,加入以下內容以啟動 Boot Loader 的 Serial 輸出:
boot_multicons="YES"
boot_serial="YES"
comconsole_speed="115200"
console="comconsole,vidconsole"

編輯 /etc/ttys 修改
ttyu0   "/usr/libexec/getty 3wire.115200"   vt100   on  secure

2026年10月19日 星期一

NAT LoopBack Iptable 設定範例

IF=vmbr0
PORT_FROM=3142
PORT_TO=3142
DEST=172.16.255.8
LAN_NET="172.16.0.0/16"

# 1. DNAT:將外部或內部存取 Port 的流量轉發至目標 VM/LXC
# (移除 -i $IF 限制,允許來自內網與外網的流量都能觸發轉發)
iptables -t nat -A PREROUTING -p tcp --dport $PORT_FROM -j DNAT --to $DEST:$PORT_TO

# 2. NAT Loopback (Hairpin SNAT):
# 當來源為內網 (LAN_NET) 且目的地為 DEST:PORT_TO 時,將來源 IP 改寫為防火牆的 LAN IP
iptables -t nat -A POSTROUTING -s $LAN_NET -d $DEST -p tcp --dport $PORT_TO -j MASQUERADE

# 3. FORWARD:允許此轉發流量通過防火牆
iptables -A FORWARD -p tcp -d $DEST --dport $PORT_TO -j ACCEPT

2026年10月16日 星期五

FreeBSD Sylve 增加 pam 登入方式

編輯  /usr/local/etc/sylve/config.json 修改
"auth": {
        "enablePAM": true 
    },

service sylve restart

2026年10月12日 星期一

FreeBSD 15安裝 xrdp + xfce + fcitx 中文輸入法

pkg install xorg xfce xfce4-goodies
pkg install noto-tc
pkg install zh-CJKUnifonts
pkg install zh-CNS11643-font
fc-cache -f -v

pkg install fcitx5 fcitx5-configtool fcitx5-gtk2 fcitx5-gtk3 fcitx5-gtk4 fcitx5-qt5 fcitx5-qt6
pkg install -y zh-fcitx5-chewing zh-fcitx5-chinese-addons zh-fcitx5-table-extra zh-fcitx5-table-other

XRDP 設定 ~/.startwm.sh
# 系統選單與桌面語系
export LANG=zh_TW.UTF-8
export LC_CTYPE=zh_TW.UTF-8
export LC_MESSAGES=zh_TW.UTF-8

# Fcitx5 輸入法模組
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx

2026年10月8日 星期四

FreeBSD 15x 安裝 xrdp

pkg install -y xfce
pkg install -y dbus

sysrc dbus_enable="YES"
sysrc xrdp_enable="YES"
sysrc xrdp_sesman_enable="YES"

service dbus start
service xrdp start
service xrdp-sesman start

echo "exec startxfce4" > ~/.startwm.sh
chmod +x ~/.startwm.sh

編輯 /usr/local/etc/xrdp/startwm.sh
exec ~/.startwm.sh

xrdp 連線 unknown target image 警告

編輯 /usr/local/etc/xrdp/xrdp.ini [Globals] 區段,新增或修改
cliprdr_image_conversion=false

FreeBSD 15.x 安裝 xfce + 中文輸入法

pkg install -y xorg xfce xfce4-goodies
pkg install -y noto-tc

#pkg install -y zh-CJKUnifonts
#pkg install -y zh-CNS11643-font

fc-cache -f -v

pkg install -y fcitx5 fcitx5-configtool fcitx5-gtk2 fcitx5-gtk3 fcitx5-gtk4 fcitx5-qt5 fcitx5-qt6
pkg install -y zh-fcitx5-chewing zh-fcitx5-chinese-addons zh-fcitx5-table-extra zh-fcitx5-table-other

2026年10月5日 星期一

BreeBSD Bridge 筆記

ifconfig bridge create name vmbr0
ifconfig vmbr0 addm igb0
ifconfig vmbr0 up

sysrc cloned_interfaces+="bridge0"
sysrc ifconfig_bridge0_name="vmbr0"
sysrc ifconfig_vmbr0="addm igb0 up"

ifconfig vmbr0
ifconfig vmbr0 deletem igb0
ifconfig vmbr0 down
ifconfig vmbr0 destroy

sysrc cloned_interfaces-="bridge0"
sysrc -x ifconfig_bridge0_name
sysrc -x ifconfig_vmbr0

2026年9月14日 星期一

LXC 安裝 Squid

 若 LXC 阻擋了 systemd 自動建立目錄的權限,請覆蓋該設定:
修改 systemd 設定覆蓋 RuntimeDirectory

檢視 Squid 的 RuntimeDirectory 配置
systemctl show squid.service -p RuntimeDirectory

sudo systemctl edit squid.service

[Service]
RuntimeDirectory=
ExecStartPre=-/bin/mkdir -p /run/squid
ExecStartPre=-/bin/chown proxy:proxy /run/squid

Apache2 設定編碼方式

編輯  /etc/apache2/conf-available/charset.conf 加入
AddDefaultCharset UTF-8

編輯 .htaccess
AddDefaultCharset UTF-8
AddType 'text/html; charset=UTF-8' .html .htm
AddType 'application/json; charset=UTF-8' .json




Vi 使用滑鼠時完全不觸發 Visual Mode

:set mouse=

配置文件 vim ~/.vimrc

保持 Vim 滑鼠功能,按住 Shift鍵選取

Linux mirror port 設定筆記

清除 eth2 IP 設定混雜模式
sudo ip addr flush dev eth2
sudo ip link set dev eth2 up
sudo ip link set dev eth2 promisc on

設定 tc eth1 進入規則
sudo tc qdisc add dev eth1 handle ffff: ingress
sudo tc filter add dev eth1 parent ffff: protocol all u32 match u32 0 0 action mirred egress mirror dev eth2

設定 tc eth1 流出規則
sudo tc qdisc add dev eth1 root handle 1: prio
sudo tc filter add dev eth1 parent 1: protocol all u32 match u32 0 0 action mirred egress mirror dev eth2

檢查 tc 規則
sudo tc filter show dev eth1 ingress
sudo tc filter show dev eth1 parent 1:

刪除 tc 規則
sudo tc qdisc del dev eth1 handle ffff: ingress
sudo tc qdisc del dev eth1 root

關閉 eth1 的混雜模式
sudo ip link set dev eth2 promisc off


modprobe ifb act_mirred
ip link set dev nic2 promisc on
tc qdisc add dev nic1 handle ffff: ingress
tc filter add dev nic1 parent ffff: protocol all u32 match u32 0 0 action mirred egress mirror dev nic2

tc qdisc add dev nic1 root handle 1: prio
tc filter add dev nic1 parent 1: protocol all u32 match u32 0 0 action mirred egress mirror dev nic2

tc filter show dev nic1 ingress
tc filter show dev nic1 parent 1:

2026年8月25日 星期二

Open WebUI 設定為免帳號、免登入使用 Docker 執行

 docker run -d -p 3000:8080 \
  -e WEBUI_AUTH=False \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui-data:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

Apache2 修改 加密設定

 SSLHonorCipherOrder on

SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1

nginx 修改 加密設定

ssl_prefer_server_ciphers on;

ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';

#ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384;

ssl_protocols TLSv1.2 TLSv1.3;

LEAF Shorewall NAT LOOPBACK 範例

編輯 /etc/shorewall/interfaces 增加 routeback
net             eth0                    dhcp
loc             eth1                    dhcp,routeback

編輯 /etc/shorewall/nat
100.109.54.55   eth0            192.168.9.55    Yes             No

編輯/etc/shorewall/snat
MASQUERADE     192.168.9.0/24 eth1 

編輯  /etc/shorewall/rules
SSH(ACCEPT)     net:100.109.54.0/24  loc:192.168.9.55
#DNAT       net      loc:192.168.9.55:22   tcp     22   -   100.109.54.55
#DNAT       loc      loc:192.168.9.55      tcp     22   -   100.109.54.55

Nginx Reverse Proxy 設定範例

 server {
 listen 80 ;
 listen [::]:80 ;

    server_name 192.168.26.162;
    set $backend_librenms "http://192.168.255.1";
    location / {
        # 注意:目標網址結尾「不要」加斜線 /
        # 這樣存取 /ipam/xxx 時,會自動轉發至 http://hostname2/ipam/xxx
        proxy_pass $backend_librenms;
        # 傳送原始請求標頭
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 處理後端發出的 301/302 重導向(將 hostname2 替換為 hostname1)
        proxy_redirect $backend_librenms $http_host;

        # 停用快取與調整超時限制(適合 phpIPAM / NetBox 等管理工具)
        proxy_buffering off;
        proxy_read_timeout 90;
    }

    set $backend_ipam "http://192.168.255.2";
    location /ipam {
        # 注意:目標網址結尾「不要」加斜線 /
        # 這樣存取 /ipam/xxx 時,會自動轉發至 http://hostname2/ipam/xxx
        proxy_pass $backend_ipam;

        # 傳送原始請求標頭
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # 處理後端發出的 301/302 重導向(將 hostname2 替換為 hostname1)
        proxy_redirect $backend_ipam $http_host;

        # 停用快取與調整超時限制(適合 phpIPAM / NetBox 等管理工具)
        proxy_buffering off;
        proxy_read_timeout 90;
    }
}

2026年7月28日 星期二

IDs assigned but not accepted

#Nginx 設定
http {
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets on;
}

測試
openssl s_client -connect host:443 -reconnect -state

HSTS(Strict Transport Security)

#Nginx 設定
server {
    listen 443 ssl http2;
    server_name example.com;
    # 啟用 HSTS(建議維持至少 1 年 = 31536000 秒)
    # includeSubDomains: 套用至所有子網域
    # preload: 允許加入瀏覽器預載清單
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
}

#Apache2 設定
<VirtualHost *:443>
    ServerName example.com   
    # 啟用 HSTS
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</VirtualHost>

測試
chrome://net-internals/#hsts
curl -I https://127.0.0.1
Plaintext
HTTP/2 200
...
strict-transport-security: max-age=31536000; includeSubDomains; preload
...

Qualys SSL Labs(權威檢測)
網址:https://www.ssllabs.com/ssltest/

HSTS Preload 狀態檢查
網址:https://hstspreload.org/

2026年7月23日 星期四

請透過 Squid Proxy 下載 docker hub 公開 image

 #異動 docker 設定
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo cat <<EOF > /etc/systemd/system/docker.service.d/http-proxy.conf
Environment="HTTP_PROXY=http://squid:3128"
Environment="HTTPS_PROXY=http://squid:3128"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com"
EOF

#重新載入設定並重啟 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

#確認是否生效
sudo docker info | grep -i proxy

Squid Proxy 開放網址
auth.docker.io
registry-1.docker.io
production.cloudfront.docker.com

透過 Squid Proxy 下載 ollama models

#編輯 /etc/systemd/system/ollama.service
[Service] 區塊中加入
Environment="HTTPS_PROXY=http://squid:3128"
Environment="HTTP_PROXY=http://squid:3128"

# 重新載入並重啟 Ollama
sudo systemctl daemon-reload
sudo systemctl restart ollama

#確認是否生效
sudo systemctl show ollama --property=Environment


Squid Proxy 開放網址
ollama.com
registry.ollama.ai
.cloudflarestorage.com

2026年7月20日 星期一

Proxmox VE local vm snt 設定範例

 #!/bin/sh
iptables -F -t nat
echo "1" > /proc/sys/net/ipv4/ip_forward

OIF=vmbr0
IIF=vmbr9
SNIP=172.16.255.0/24

# 1. 建立 NAT:將來自 vmbr9 網段的封包,在從 vmbr0 出去時轉換為 vmbr0 的 IP
iptables -t nat -A POSTROUTING -o ${OIF} -s ${SNIP} -j MASQUERADE

# 2. 允許 eth9 到 eth0 的轉發流量 (建立連線)
iptables -A FORWARD -i ${IIF} -o ${OIF} -s ${SNIP} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# 3. 允許從 eth0 回到 eth9 的已建立連線流量 (回應封包)
iptables -A FORWARD -i ${OIF} -o ${IIF} -d ${SNIP} -m state --state ESTABLISHED,RELATED -j ACCEPT

#NAT PORT
OPORT=8007
IPORT=8007
IIP=172.16.255.1

iptables -t nat -A PREROUTING -i ${OIF} -p tcp --dport ${OPORT} -j DNAT --to-destination ${IIP}:${IPORT}

# 2. 確保轉發鏈允許該流量通過 (如果你的 FORWARD 預設是 DROP)

iptables -A FORWARD -p tcp -d ${IIP} --dport ${IPORT} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

OPORT=8443
IPORT=8443
IIP=172.16.255.2

iptables -t nat -A PREROUTING -i ${OIF} -p tcp --dport ${OPORT} -j DNAT --to-destination ${IIP}:${IPORT}

iptables -A FORWARD -p tcp -d ${IIP} --dport ${IPORT} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Proxmox VE 7/8/9 initrd 損毀無法開機

mkdir /mnt/pve
mount /dev/pve/root /mnt/pve
#mount /dev/sda2 /mnt/pve/boot/efi   # <--- EFI 分區代號

for i in dev proc sys run;do mount -o bind /${i} /mnt/pve/${i};done
chroot /mnt/pve

# 為所有已安裝的 Kernel 重新生成 initrd 映像檔
update-initramfs -u -k all

# 適用於 PVE 7/8/9 使用 proxmox-boot-tool 的系統)
proxmox-boot-tool refresh
update-grub
exit

umount -R /mnt/pve
reboot

2026年7月17日 星期五

Proxmox VE 9.x Alternative Names 重新自動掃描與產生

# 刪除 PVE 指令產生的設定
rm -f /usr/local/lib/systemd/network/50-pve-*.link
rm -f /usr/local/lib/systemd/network/50-pmx-*.link

# 刪除系統安裝時的設定
rm -f /etc/systemd/network/50-pve-*.link
rm -f /etc/systemd/network/50-pmx-*.link

#更新開機映像檔
update-initramfs -u -k all

#掃描並自動產生全新 Pinning
pve-network-interface-pinning generate

#更新開機映像檔
update-initramfs -u -k all

IPMI 網路 dhcp 重新取得 IP

 ipmitool lan set 1 ipsrc static && ipmitool lan set 1 ipsrc dhcp

2026年7月2日 星期四

Task Spooler 使用摘要

Debian 13 安裝
apt install task-spooler

新增任務到佇列
tsp 指令

查看目前佇列狀態
tsp

查看特定任務的輸出
tsp -c jobid

即時追蹤任務輸出
tsp -t jobid

刪除或取消任務
tsp -r jobid

調整任務的優先順序
ts -u jobid

調整並行數量
ts -S 數量

環境變數
TS_SOCKET

Linux nq 筆記

nq 說明
Linux 輕量、無需設定的命令列任務佇列工具
完全依賴檔案系統鎖(File-system lock)來管理佇列,不需要任何額外的設定或維護。

Debian 安裝
apt install nq

nq 環境變數
NQDIR:存放任務佇列目錄。預設為目前的執行目錄,透過 NQDIR 設定不同的路徑,可以同時管理多個佇列。
NQJOBID:nq 回傳給執行中任務的 Job ID,可用於腳本中追蹤。

使用範例
建立專屬 nq 佇列
export NQDIR="$HOME/nq"; mkdir -p ${NQDIR}

執行方式
export NQDIR="$HOME/nq"
nq ./my-script.sh
nq ./my-script2.sh
nq ./my-script3.sh
nq ./my-script4.sh
nq ./my-script5.sh

查詢目前 nq 佇列 Job
ls -lF ${NQDIR}   ## Ctrl-C 離開不中斷執行

查詢結果說明
-rw-r--r-- 1 root root 47 Jul  2 10:38 ,19f20aeff65.125177   已執行完畢
-rwxr--r-- 1 root root 22 Jul  2 10:38 ,19f20af01e5.125180*  <-* 表示目前正在執行
-rw-r--r-- 1 root root 20 Jul  2 10:38 ,19f20b17894.125225   未執行
-rw-r--r-- 1 root root 20 Jul  2 10:38 ,19f20b17bb4.125228   未執行
-rw-r--r-- 1 root root 20 Jul  2 10:38 ,19f20b17dc3.125231   未執行

,19f20af01e5.125180  <- ,開頭為 nq 狀態檔案,19f20af01e5 Job 送出時間,125180 系統執行的 process id

刪除 nq 佇列 Job ,19f20b17dc3.125231
rm ${NQDIR}/,19f20b17dc3.125231

中斷 nq 佇列 Job ,19f20b17dc3.125231
kill 125231

查詢 nq 佇列 Job ,19f20b17dc3.125231 執行內容或結果
cat  ${NQDIR}/,19f20b17dc3.125231

刪除已執行完畢 nq 佇列Job ,19f20b17dc3.125231
rm ${NQDIR}/,19f20b17dc3.125231

查詢目前  Job 執行狀態
nqtail  # Ctrl-C  離開,不中斷程式

共用 nq 佇列
nqdir=/var/spool/nq
nqgroup=nqusers
mkdir -p ${nqdir}
chown :${nqgrou} ${nqdir}
chmod 2775 ${nqdir}

更多的 指令說明
man nq
man nqtail

2026年6月22日 星期一

Asus ASMB11-iKVM 預設帳號密碼

Administrator / superuser

Debian13 單機 Queue

Task Spooler
apt install task-spooler

nq
apt install nq

使用 smbnetfs 存取 cifs

安裝
sudo apt update
sudo apt install smbnetfs

在檔案中加入遠端主機的帳密
mkdir -p ~/.smb
cp /etc/smbnetfs.conf ~/.smb/

編輯  ~/.smb/smbnetfs.conf 加入
auth "192.168.1.1" "username" "password"

存取方式
cd ~/nas/192.168.1.1/share_folder

卸載方式
fusermount -u ~/nas

使用 gio / gvfs 存取 CIFS

安裝
sudo apt update
sudo apt install gvfs-backends gvfs-fuse samba-common smbclient

掛載方式
gio mount smb://username@192.168.1.1/share_folder
gio mount smb://DOMAIN\;username:password@192.168.1.1/share_folder

存取方式
cd /run/user/$(id -u)/gvfs/

卸載方式
gio mount -u smb://username@192.168.1.1/share_folder

2026年6月16日 星期二

Linux 使用 tc 將 eth0 封包 mirror 至eth1

清除 eth1 IP 設定混雜模式
sudo ip addr flush dev eth1
sudo ip link set dev eth1 up
sudo ip link set dev eth1 promisc on

設定 tc eth0 進入規則
sudo tc qdisc add dev eth0 handle ffff: ingress
sudo tc filter add dev eth0 parent ffff: protocol all u32 match u32 0 0 action mirred egress mirror dev eth1

設定 tc eth0 流出規則
sudo tc qdisc add dev eth0 root handle 1: prio
sudo tc filter add dev eth0 parent 1: protocol all u32 match u32 0 0 action mirred egress mirror dev eth1

檢查 tc 規則
sudo tc filter show dev eth0 ingress
sudo tc filter show dev eth0 parent 1:

刪除 tc 規則
sudo tc qdisc del dev eth0 handle ffff: ingress
sudo tc qdisc del dev eth0 root

關閉 eth1 的混雜模式
sudo ip link set dev eth1 promisc off

相關 module 
 ifb act_mirred

2026年6月12日 星期五

wireguard 日誌記錄

 #!/bin/bash
LOG_FILE=/home/WGlog/202606
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")

echo "=== Log entry at $TIMESTAMP ===" >> $LOG_FILE
# 抓取介面、Peer ID、端點 IP 以及最後交握時間

wg show all dump | awk 'NF>1 {print TIMESTAMP, $1, $2, $4, $5}' TIMESTAMP="$TIMESTAMP" >>$LOG_FILE

echo "" >> $LOG_FILE

LEAF設定 WireGuard

編輯 leaf.cfg加入
wireguard

編輯 /etc/modules 加入
wireguard

編輯  /etc/shorewall/interfaces 加入
wg0    wg0     tcpflags,nosmurfs,routefilter,routeback

編輯  /etc/shorewall/zones 加入
wg0             ipv4

編輯 /etc/shorewall/rules 加入
ACCEPT    net                     fw      UDP 51820
ACCEPT    wg0:192.168.226.1       wg0     TCP 22
ACCEPT    wg0     wg0:192.168.226.1       TCP 4119,4120,4122,22
DROP         wg0                     wg0     all
Ping(ACCEPT)    wg0                     fw

產生 設定檔
#!/bin/sh
nodenum=20

spri=$(wg genkey); spub=$(echo $spri|wg pubkey)

# wireguard server
Endpoint=192.168.228.2:51820

# configure file
wg0conf=wg0.conf-
client=client.conf-

:>${client}
cat <<EOF0 >$wg0conf
#pri=${spri}
#pub=${spub}
[Interface]
Address = 192.168.226.253/24
ListenPort = 51820
PrivateKey = ${spri}

EOF0

for i in `seq 1 $nodenum`;do
pri=$(wg genkey); pub=$(echo $pri|wg pubkey)

cat <<EOF >>$client
## node $i ##############################################
[Interface]
PrivateKey = ${pri}
Address = 192.168.226.${i}/24

[Peer]
PublicKey = $spub
AllowedIPs = 192.168.226.0/24
Endpoint = ${Endpoint}
PersistentKeepalive = 25

EOF

cat <<EOF0 >>$wg0conf
## node $i ##############################################
[Peer]
PublicKey = ${pub}
AllowedIPs = 192.168.226.$i/32

EOF0

done

2026年5月27日 星期三

Debian 13 安裝中文輸入法 Fcixt5

sudo apt install fcitx5 fcitx5-config-qt fcitx5-frontend-gtk2 fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 fcitx5-frontend-qt5

sudo apt install fcitx5-table-extra
sudo apt install fcitx5-chinese-addons
sudo apt install fcitx5-chewing

sudo apt install fcitx5-table-extra fcitx5-table-other
sudo apt install fcitx5-table-boshiamy

Debian 13 安裝 Fcix5


sudo apt install fcitx5 fcitx5-config-qt fcitx5-frontend-gtk2 fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 fcitx5-frontend-qt5

sudo apt install fcitx5-table-extra
sudo apt install fcitx5-chinese-addons
sudo apt install fcitx5-chewing

sudo apt install fcitx5-table-extra fcitx5-table-other
sudo apt install fcitx5-table-boshiamy

2026年5月15日 星期五

Linux script 載入 module

 _MODULES="overlay squashfs loop"

_USB_MODULES="xhci_pci xhci_hcd ehci_pci ohci_hcd uhci_hcd"
_USB_MODULES="$_USB_MODULES usb_storage uas"
_USB_MODULES="$_USB_MODULES sd_mod"
_USB_MODULES="$_USB_MODULES vfat exfat"

timeout 300 sh -c 'while true;do _t=1;for i in /modules/*;do insmod ${i}&&_t=0;done; [ ${_t} -gt 0 ]&&break; done;'

find /sys/devices -name modalias|xargs -n 1 cat|xargs -r modprobe -abq
for i in $_MODULES $_USB_MODULES;do modprobe ${i};done

2026年5月14日 星期四

/proc/cmdline 變數解析

 for i in $(cat /proc/cmdline);do case $i in *=*) eval $i;  ;; esac; done

inotify module 摘要

支援狀態
grep INOTIFY_USER /boot/config-$(uname -r)

通常為核心功能(Built-in)
modprobe inotify_user

事件類型
IN_ACCESS:檔案或目錄被存取時。
IN_MODIFY:檔案的內容被修改時。
IN_ATTRIB:檔案或目錄的屬性被改變時。
IN_OPEN:檔案被開啟時。
IN_CLOSE_WRITE:一個已開啟的檔案或目錄被關閉時。
IN_MOVED_FROM:被移動的檔案或目錄是來自於被監控的目錄。
IN_MOVED_TO:被移動的檔案或目錄被放置到被監控的目錄。
IN_DELETE:檔案或目錄被刪除時。
IN_CREATE:檔案或目錄建立時。

相關組態
/proc/sys/fs/inotify/max_queued_events
設定個別的實例可允許放入隊列中的監控事件(Event)最大個數,即表示每個實例所監控的檔案或目錄,異動的次數在一段時間內不能超過此組態所設定的值,檔案預設值為16384。

/proc/sys/fs/inotify/max_user_instances
每一個使用者最大可建立的實例個數,檔案預設值為128。

/proc/sys/fs/inotify/max_user_watches
每個實例最大能監控的檔案及目錄的個數,檔案預設值為8192。

inotify 相關軟體
inotify-tools、sersync、lrsyncd、fswatch

2026年5月13日 星期三

Debian13 使用 pptp

apt install pptp-linux
apt install network-manager-pptp-gnome

Debian 13 啟用 Serial port 登入

 sudo systemctl enable serial-getty@ttyS0.service

sudo systemctl start serial-getty@ttyS0.service

2026年5月11日 星期一

備份 sqlite3 檔案包含 .db-shm (共享記憶體) 和 .db-wal (寫入預先記錄) 檔案

sqlite3 config.db ".backup '/tmp/config_backup.db'"

Debian usb flash module 載入摘要

載入模組的順序如下:
控制器偵測/核心傳輸層:xhci_pci
協定識別/協定轉譯層:usb_storage 或 uas
裝置映射/裝置類型層:sd_mod
掛載讀取/檔案系統層:vfat 

1. 核心傳輸層:USB 宿主控制器 (HCD)
xhci_pci / xhci_hcd:USB 3.x
ehci_pci:USB 2.0
ohci_hcd / uhci_hcd:USB 1.1

2. 協定轉譯層:USB Mass Storage
usb_storage:實作「USB Mass Storage Class (MSC)」
uas (USB Attached SCSI): 較新的技術,支援 USB 3.0。

3. 裝置類型層:SCSI 模擬
sd_mod (SCSI Disk): 管理磁碟裝置。
scsi_mod: SCSI 核心子系統,提供基礎的儲存管理框架。

4. 檔案系統層 (File Systems)
vfat / fat、exfat、ntfs3 / ntfs 、isofs / udf

2026年5月5日 星期二

Debian 11 安裝 R 4.2.0

apt install texinfo
apt install texlive-base texlive-latex-extra
apt install texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra

wget https://cran.r-project.org/src/base/R-4/R-4.2.0.tar.gz
tar zxvf R-4.2.0.tar.gz
cd R-4.2.0
./configure --prefix=/opt/R/4.2.0 --enable-R-shlib
make
make install

2026年4月28日 星期二

DietPi 安裝中文

apt install fonts-noto-cjk
apt install scim im-config zenity
apt install scim-chewing
im-config -n scim

apt install fcitx5 fcitx5-chewing

2026年4月16日 星期四

Debian 13 安裝 docker

 docker 安裝

# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo systemctl status docker
sudo systemctl start docker
sudo systemctl enable --now docker

 ps -e -o pid,user:16,args:64,cgroup | grep lxc/4001/

Proxmox VE 8.x 更新 9.x

編輯 /etc/network/interfaces 新增 
source /etc/network/interfaces.d/*

2026年4月13日 星期一

Proxmox VE 8.X安裝 CPU microcode package 'intel-microcode'

編輯  /etc/apt/sources.list 加入 non-free-firmware

sudo apt update; apt install intel-microcode

重啟系統,微代碼必須在啟動初期載入才能生效

確認指令
journalctl -k | grep microcode

2026年4月7日 星期二

取得 pyenv cache 連結

 #!/bin/bash

PYENVDIR=~/.pyenv/
cd $PYENVDIR/plugins/python-build/share/python-build

parse1() {
for i in *;do [ -d "$i" ]&&continue
cat $i|grep install_package
done|xargs -n 1 |grep -e http:// -e https:// |sort
}

for i in $(parse1);do t=${i%\#*};t=${t#src=};echo $t;done

Debian 13 更改網路卡別名

編輯  /etc/systemd/network/10-eth1.link

[Match]
MACAddress=00:11:22:33:44:55

[Link]
Name=eth1

方法二 UDEV設定方式
編輯 /etc/udev/rules.d/10-rename-it.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:11:22:33:44:55", NAME="eth1"
Debian 網路命名規則通常在開機 initramfs 階段就決定,須更新 initramfs
update-initramfs -u

2026年4月2日 星期四

Debian 13 SCIM 安裝設定

 apt -y install scim scim-tables-zh scim-chewing

設定
Applications - Settings - SCIM Input Method Setup - Generic Table
Show prompt
Show key hint

2026年3月27日 星期五

ollama + docker + open webui 免帳號密碼

docker 安裝
# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo systemctl status docker
sudo systemctl start docker
sudo systemctl enable --now docker

安裝 Ollama
apt install -y zstd
curl -fsSL https://ollama.com/install.sh | bash
ollama --version
mv /usr/share/ollama  /usr/share/ollama.bak
ln -s /home/ollama/ /usr/share/ollama 

編輯 /etc/systemd/system/ollama.service 加入
[Service]
Environment="OLLAMA_HOST=0.0.0.0"

docker Open WebUI  設定
編輯 nginx.conf
server {
    listen 80;
    location /admin { return 403; }
    location /api/v1/admin { return 403; }
    location /api/v1/auth/update { return 403 "Action Denied: Profile updates are disabled.";  }
    location /api/v1/users {  return 403 "Action Denied.";  }

    if ($request_method = DELETE) {
        return 403 "Delete operations are strictly prohibited on this server.";
    }

    location /api/models {
        if ($request_method = DELETE) { return 403; }
        proxy_pass http://open-webui:8080;
    }

    location / {
        proxy_pass http://open-webui:8080;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

編輯docker-compose.yml
services:
  nginx-proxy:
    image: nginx:alpine
    container_name: nginx-proxy
    ports:
      - "3000:80"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - open-webui

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    environment:
      - "WEBUI_AUTH=False"
      - "OLLAMA_BASE_URL=http://host.docker.internal:11434"
      - "DEFAULT_USER_ROLE=user"
      - "ENABLE_ADMIN_EXPORT=False" 
      - "SHOW_ADMIN_DETAILS=False" 
      - "ENABLE_MODEL_CHANGES=False" 
      - "ENABLE_PERSISTENT_CONFIG=False"
      - "ENABLE_COMMUNITY_SHARING=False"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    volumes:
      - open-webui-data:/app/backend/data
    restart: always

volumes:
  open-webui-data:

docker compose up -d

相關指令
docker stop open-webui
docker rm open-webui
docker volume rm open-webui
docker volume rm docker_open-webui-data
docker volume rm open-webui-data
docker stop nginx-proxy;docker rm nginx-proxy


2026年3月25日 星期三

Shorewall Hairpin NAT 或 NAT Loopback 設定方式

fw  eth0:192.168.119.253/24
ap  eth2:192.168.119.231/24:3142

編輯 /etc/shorewall/interfaces
增加 內網介面  routeback 選項( Shorewall 會丟棄在同一個介面「進又出」的封包)
loc             eth2                    dhcp,routeback

編輯 /etc/shorewall/snat  (偽裝來源,讓伺服器以為是「防火牆」在找它)
SNAT(192.168.119.253)   192.168.119.0/24 eth2 tcp 3142 -

編輯/etc/shoreall/rule (定義轉發:當內網存取fw ,目標轉向伺服器)
DNAT:NFLOG(4) loc    loc:192.168.119.231 tcp 3142 - -

2026年3月9日 星期一

LEAF 關機前搬移 LOG 至封存目錄

# !/bin/sh
# /root/stoplog.sh

f=stoplog$(date +%Y%m%d-%H%M%S).tar.gz
mount /dev/vda /mnt
tar czvf /mnt/archive/$f /var/log
umount /mnt

設定方式
編輯  /etc/default/local.stop
## Commands that will be executed at the beginning of shutdown
#

/root/archivelog.sh
/root/stoplog.sh

取代 netstat-nat 指令

[ -f /proc/net/nf_conntrack ]&& cat  /proc/net/nf_conntrack
[ -f /proc/net/ip_conntrack ]&& cat /proc/net/ip_conntrack

相關模組
nf_conntrack
ip_conntrack (2.6.24 核心之前)

查詢目前連線數:
cat /proc/sys/net/netfilter/nf_conntrack_count

查看連線數上限:
sysctl net.netfilter.nf_conntrack_max

LEAF 定期搬移 LOG 至 封存目錄

#!/bin/sh
# /root/archivelog.sh
# move log to archive
#:> /var/log/conntrackd.log;

date >/tmp/archive.sh.run
echo $$>>/tmp/archive.sh.run

ADEV=/dev/vda
AMNT=/mnta
ADIR=${AMNT}/archive
LOGDIR=/var/log

Exit_safely (){ umount -f ${AMNT};  rmdir ${AMNT}; }

/usr/bin/logrotate

[ -d $AMNT ]||mkdir -p $AMNT
mount |grep ${AMNT}
[ $? -gt 0 ]&&{ mount $ADEV $AMNT && trap Exit_safely EXIT|| exit 1; }

# echo mount archive directory  ${ADEV} ${AMNT} 

[ -d ${ADIR} ]||mkdir -p ${ADIR}

for i in $LOGDIR/*.gz;do [ -f "$i" ]||exit;done

for i in $LOGDIR/*.gz;do
t=$(basename $i);t=${t%.gz}-$(date +%Y%m%d_%H%M%S).gz;echo $i $t;mv $i ${ADIR}/$t;
done

執行方式
編輯 /etc/crontab
0 *     * * *   root    /root/archivelog.sh

Dnsmasq DNS 查詢增加黑名單

 #!/bin/sh
# adblockMY.sh 

urls="donate.ssl.xmrig.com "

conf=/etc/dnsmasq.d/adblockMY.conf
for url in $urls;do echo server=/${url}/;done >${conf};

/etc/init.d/dnsmasq restart
leaf119x# 

Dnsmasq DNS 查詢增加黑名單 (pgl.yoyo.org)

#!/bin/sh
# adblock.sh

url=https://pgl.yoyo.org/as/serverlist.php?hostformat=dnsmasq-server;showintro=0
conf=/etc/dnsmasq.d/adblock.conf
tmp=${conf}.tmp

wget --no-check-certificate "${url}" -q -O ${tmp}
[ $? -gt 0 ]&&exit $?;

cat ${tmp}|grep server= >${conf} 
[ -f "${tmp}" ]&&rm ${tmp};
dnsmasq -C ${conf} --test && /etc/init.d/dnsmasq restart || rm ${conf}; 

Dnsmasq DNS 查詢增加黑名單 (filter.futa.gg)

 #!/bin/sh
# adblockFutaGuard.sh 
# https://github.com/FutaGuard/LowTechFilter?tab=readme-ov-file

#
urls="https://filter.futa.gg/hosts_domains.txt"
urls="$urls https://filter.futa.gg/TW165_domains.txt"
urls="$urls https://filter.futa.gg/TWNIC-RPZ_domains.txt"
urls="$urls https://filter.futa.gg/nofarm_domains.txt"
urls="$urls https://filter.futa.gg/nrd/past-01day_domains.txt"

for url in $urls;do
conf=/etc/dnsmasq.d/adblock$(basename $url|awk -F . '{print $1}').conf
tmp=${conf}.tmp
wget --no-check-certificate "${url}" -q -O ${tmp}
[ $? -gt 0 ]&& { [ -f "${tmp}" ]&&rm ${tmp}; continue; };                                                

cat ${tmp}|awk '{print "server=/"$1"/"}' >${conf}
[ -f "${tmp}" ]&&rm $tmp;
dnsmasq -C ${conf} --test || rm ${conf};
done

/etc/init.d/dnsmasq restart; 

2026年2月6日 星期五

使用 /proc 取得 ip address

 cat /proc/net/fib_trie

LEAF 7.x 預設設定

#修改 /etc/crontab
cat >>/etc/crontab <<'EOF'
*/20 *     * * *   root    /root/marklog.sh
0    *     * * *   root    /root/archivelog.sh
EOF

#修改 /etc/default/local.stop 
cat >>/etc/default/local.stop  <<'EOF'
/root/marklog.sh
/root/archivelog.sh
EOF

#新增 /root/marklog.sh 
cat >/root/marklog.sh <<'EOF'
#!/bin/sh
_log=/var/log/shorewall.log
_xx=$(date +"%Y-%m-%d %H:%M:%S");
echo "### MARK ${_xx}" >>${_log}
EOF

#新增 /root/archivelog.sh
cat >/root/archivelog.sh  <<'EOF'
#!/bin/sh
#:> /var/log/conntrackd.log;
date >/tmp/archive.sh.run
echo $$>>/tmp/archive.sh.run

ADEV=/dev/vda
AMNT=/mnta
ADIR=${AMNT}/archive
LOGDIR=/var/log

Exit_safely (){ umount -f ${AMNT};  rmdir ${AMNT}; }

/usr/bin/logrotate
[ -d $AMNT ]||mkdir -p $AMNT
mount |grep ${AMNT}
[ $? -gt 0 ]&&{ mount $ADEV $AMNT && trap Exit_safely EXIT|| exit 1; }

echo aaa
[ -d ${ADIR} ]||mkdir -p ${ADIR}
for i in $LOGDIR/*.gz;do [ -f "$i" ]||exit;done

for i in $LOGDIR/*.gz;do
t=$(basename $i)
t=${t%.gz}-$(date +%Y%m%d_%H%M%S).gz
echo $i $t
mv $i ${ADIR}/$t
done
EOF

TiddlyWiki 輸入 --

 ``--ab ``

&#45;&#45;ab

Proxmox VE 選擇開機 Kernel

查看所有可用的核心版本
proxmox-boot-tool kernel list 

系統自動載入特定版本
proxmox-boot-tool kernel pin 6.5.11-8-pve

換回最新版本
proxmox-boot-tool kernel unpin

Debian 13 安裝 QNAP Qfinder

sudo apt update
sudo apt install wget gdebi-core libglib2.0-0 libnss3 libatk1.0-0 libcups2 libdrm2 libgbm1 zenity

2026年2月4日 星期三

更改 Samba AD DNS Forward

編輯 /etc/samba/smb.conf

[global]
        dns forwarder = 192.168.1.1


Debian 13 安裝 Samba 升級 DC 建立網域

安裝軟體
apt install -y sudo
apt install -y samba-ad-dc winbind libpam-winbind libnss-winbind
apt install -y acl attr samba samba-dsdb-modules samba-vfs-modules winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user dnsutils net-tools

apt install samba krb5-config winbind smbclient -y
apt install ldb-tools  -y

systemctl stop smbd nmbd winbind
systemctl disable smbd nmbd winbind
systemctl mask smbd nmbd winbind

升級 Domain Controller
mv /etc/samba/smb.conf /etc/samba/smb.conf.ori
samba-tool domain provision --use-rfc2307 --interactive

mv /etc/krb5.conf /etc/krb5.conf.ori
ln -s /var/lib/samba/private/krb5.conf /etc/krb5.conf   

systemctl start samba-ad-dc

測試
smbclient -L localhost -U%
samba-tool domain level show

2026年1月30日 星期五

Debian 13 安裝 R-Studio

apt install -y r-base
apt install -y libclang-dev 

wget https://download1.rstudio.org/electron/jammy/amd64/rstudio-2026.01.1-403-amd64.deb
dpkg -i rstudio-2026.01.1-403-amd64.deb

2026年1月27日 星期二

Proxmox VE 更新 網路設定異常

WARN: missing 'source /etc/network/interfaces.d/sdn' directive for SDN support!
TASK WARNINGS: 1

編輯 /etc/network/interfaces 末端加入
source /etc/network/interfaces.d/*

Debian 13 lastlog / lastb

Debian 13 (Trixie)  lastlog 被 lastlog2 替代

安裝
sudo apt update;apt install lastlog2 libpam-lastlog2
reboot

# 查詢
lastlog2

相關工具
lastb 由 lslogins --failed 取代

2026年1月6日 星期二

NFS Client 錯誤訊息

open pipe file /run/rpc_pipefs/nfs/blocklayout failed: No such file or directory

停用不必要的 pNFS 服務,一般的 NFS 掛載(非高效能並行檔案系統),關閉這個報錯的服務,不會影響正常的 NFS 掛載

systemctl stop nfs-blkmap
systemctl disable nfs-blkmap
systemctl mask nfs-blkmap

Debian 13 安裝 Proxmox Datacenter Manager

編輯 /etc/apt/sources.list.d/debian.sources 內容如下
Types: deb
URIs: http://deb.debian.org/debian/
Suites: trixie trixie-updates
Components: main contrib non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: http://security.debian.org/debian-security/
Suites: trixie-security
Components: main contrib non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

設定 Repositories
cat <<EOF >/etc/apt/sources.list.d/proxmox.sources
Types: deb
URIs: http://download.proxmox.com/debian/pdm
Suites: trixie
Components: pdm-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF

設定 簽章金鑰
wget https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg -O /usr/share/keyrings/proxmox-archive-keyring.gpg

安裝軟體
apt update
apt install proxmox-datacenter-manager proxmox-datacenter-manager-ui

Quanta IX8D 摘要

Quanta IX8D - 48x25G SFP 8x100G QSFP, Runtime Code 22.06, Linux 4.14.4, 2017.11.00.12
Machine Type   Quanta IX8D - 48x25G SFP 8x100G QSFP
Machine Model  IX8D
Software Version 22.06
Manufacturer Name QSMC
Software Storage mSATA
Operating System Linux 4.14.4
Network Processing Device BCM56873_A0

sudo qnos-console (admin / password)
/etc/debian_version
buster/sid

連線設定
Bps/Par/Bits       : 115200 8N1                                |
Hardware Flow Control : No                                        |
Software Flow Control : No  

Proxmox VE 8.x 安裝時螢幕黑屏

開機選項加入  nomodeset