2026年8月2日 星期日

在 Ubuntu 26.04 安裝與設定 Blocky DNS(DNS Proxy / Ad-blocking DNS)

一、更新系統
    sudo apt update
    sudo apt upgrade -y

二、安裝必要工具  wget curl tar
    sudo apt install -y wget curl tar

三、下載與安裝 Blocky
    (1) 下載   
wget https://github.com/0xERR0R/blocky/releases/download/v0.34.0/
blocky_v0.34.0_Linux_x86_64.tar.gz

    (2) 解壓
        tar -xzf blocky_v0.34.0_Linux_x86_64.tar.gz

    (3) 安裝到 /usr/local/bin
        sudo mv blocky /usr/local/bin/
        sudo chmod +x /usr/local/bin/blocky

    (4) 檢測是否安裝成功
        blocky version

四、建立設定目錄
        sudo mkdir -p /etc/blocky

    (1)建立設定檔
        sudo nano /etc/blocky/config.yml
        範例內容:
upstream: 
    default:
        - https://dns.cloudflare.com/dns-query 
        - https://dns.google/dns-query 

blocking: 
   blackLists:
      ads:
          - https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts     

   clientGroupsBlock:
      default:
          - ads
ports:
    dns: 53

caching:
    minTime: 300
    maxTime: 3600

 log:
     level: info

        這個設定:
            本機提供 DNS 服務
            上游使用 Cloudflare / Google DoH
            阻擋廣告網域
            啟用 DNS cache

四、停用 systemd-resolved,讓 Blocky 接管 DNS port 53
    (1) 停止並停用 systemd-resolved
        sudo systemctl disable --now systemd-resolved
    (2) 確認 port 53 釋放
        sudo ss -lntup | grep :53
    (3) 修正 /etc/resolv.conf

五、測試 Blocky
    (1)啟動
        sudo blocky --config /etc/blocky/config.yml
        Ctrl + C 停止。
    (2)重新載入並重啟
        sudo systemctl restart blocky
    (3)查看狀態
        sudo systemctl status blocky
    (4)查看即時日誌
        sudo journalctl -u blocky -f

在 192.168.91.x/24 網段,架設兩台DNS。當Master變更,讓client電腦對Slave 進行變更後的正解與反解

系列文章:

一、環境說明:
在 192.168.91.x/24 閘道 192.168.91.254,ubuntu 26.04 主機架設BIND9:一台MASTER:IP:192.168.91.2、一台SLAVE:IP:192.168.91.3 ,MASTER變更,讓 client IP:192.168.91.201 對SLAVE  進行變更後的正解與反解。
二、Master (192.168.91.2)
(1) 安裝
      sudo apt update
      sudo apt install bind9 bind9-utils bind9-dnsutils -y

(2)設定 /etc/bind/named.conf.lan
     sudo nano /etc/bind/named.conf.lan
    內容:
zone "lab.lan" { 
     type master; 
     file "/etc/bind/db.lab.lan"; 

     allow-transfer { 
           192.168.91.3; 
     }; 

     also-notify { 
           192.168.91.3; 
     }; 
};

zone "91.168.192.in-addr.arpa" { 
     type master; 
     file "/etc/bind/db.192.168.91"; 

     allow-transfer { 
            192.168.91.3; 
      }; 

      also-notify { 
             192.168.91.3; 
      }; 
};

(3)設定正解區 /etc/bind/db.lab.lan
    sudo nano /etc/bind/db.lab.lan
    內容:
$TTL 86400 

@ IN SOA dns1.lab.lan. admin.lab.lan. ( 
                   2026080201 
                   3600 
                   1800 
                   604800 
                   86400 

@               IN   NS    dns1.lab.lan. 
@               IN   NS    dns2.lab.lan. 

dns1           IN    A      192.168.91.2 
dns2           IN    A      192.168.91.3 

master        IN     A       192.168.91.2 
slave           IN     A       192.168.91.3 
client          IN     A        192.168.91.201

(4)設定反解區 /etc/bind/db.192.168.91
    sudo nano /etc/bind/db.192.168.91
    內容:
$TTL 86400 
 
@ IN SOA ns1.lab.lan. admin.lab.lan. ( 
                  2026080201 
                  3600 
                  1800 
                  604800 
                  86400 

@              IN             NS           dns1.lab.lan. 
@              IN             NS           dns2.lab.lan. 

2                IN              PTR         master.lab.lan. 
3                IN              PTR         slave.lab.lan. 
201            IN              PTR         client.lab.lan.

(5)檢查
     sudo named-checkzone lab.lan /etc/bind/db.lab.lan 
     sudo named-checkzone 91.168.192.in-addr.arpa  /etc/bind/db.192.168.91
     sudo named-checkconf 

(6)重新啟動
    sudo systemctl restart bind9

三、Slave (192.168.91.3)
(1) 安裝
      sudo apt update
      sudo apt install bind9 bind9-utils bind9-dnsutils -y

(2)設定 /etc/bind/named.conf.lan
     sudo nano /etc/bind/named.conf.lan
    內容:
zone "lab.local" { 
     type slave
     masters {      192.168.91.2;   };
     file "/var/cache/bind/db.lab.lan"; 
};

zone "91.168.192.in-addr.arpa" { 
     type slave
     masters {      192.168.91.2;   };
     file "/var/cache/bind/db.192.168.91"; 
};

(3)重新啟動
    sudo systemctl restart bind9

(4)確認是否已同步
    ls /var/cache/bind
    當出現 db.192.168.91 與 db.lab.lan 即是OK

四、Master 修改資料
     新增一筆資料  pc50        192.168.91.50
    (1)修改正解區 /etc/bind/db.lab.lan
        sudo nano /etc/bind/db.lab.lan
        內容:
$TTL 86400 

@ IN SOA dns1.lab.lan. admin.lab.lan. ( 
                   202608020
                   3600 
                   1800 
                   604800 
                   86400 

@               IN   NS    dns1.lab.lan. 
@               IN   NS    dns2.lab.lan. 

dns1           IN    A      192.168.91.2 
dns2           IN    A      192.168.91.3 

master        IN     A       192.168.91.2 
slave           IN     A       192.168.91.3 
client          IN     A        192.168.91.201
pc50           IN     A         192.168.91.50    

    (2)修改反解區 /etc/bind/db.192.168.91
        sudo nano /etc/bind/db.192.168.91
        內容:
$TTL 86400 
 
@ IN SOA dns1.lab.lan. admin.lab.lan. ( 
                  2026080202 
                  3600 
                  1800 
                  604800 
                  86400 

@              IN             NS           dns1.lab.lan. 
@              IN             NS           dns2.lab.lan. 

2                IN              PTR         master.lab.lan. 
3                IN              PTR         slave.lab.lan. 
201            IN              PTR         client.lab.lan.
50              IN              PTR         pc50.lab.lan.

    (3)重新載入
        sudo rndc reload
        或
        sudo systemctl reload bind9

五、Client (192.168.91.201)
     (1) 修改 DNS 的 IP:192.168.91.3
          cd /etc/netplan
          sudo cp 00-installer-config.yaml 00-installer-config.yaml.BK
          sudo nano 00-installer-config.yaml
          內容如下:

          # This is the network config written by 'subiquity'
            network:
                ethernets:
                    ens33:
                        dhcp4: false
                        addresses:
                            - 192.168.91.201/24
                        routes:
                            - to: default
                               via: 192.168.91.254
                        nameservers:
                            addresses:
                                - 192.168.91.3
            version: 2


     (2)測試正解
        dig pc50.lab.lan

     (3)測試反解
        dig -x 192.168.91.50

六、驗證 Slave 已更新
    (1) 在 Slave 執行
          dig @192.168.91.3 lab.lan SOA

七、更新流程

此架構可確保 Master 更新後,Slave 自動同步,而 Client 指向 Slave 查詢時能取得最新的正解與反解紀錄。


在 192.168.91.x/24 網段中,架設DNS,讓client電腦進行正解與反解

一、環境說明:
在 192.168.91.x/24 閘道 192.168.91.254,ubuntu 26.04 主機IP:192.168.91.2 架設BIND9,讓 client IP:192.168.91.201 進行正解與反解。
二、架設DNS與測試
1.安裝BIND9
    (1)更新套件
        sudo apt update
    (2)安裝
        sudo apt install bind9 bind9-utils bind9-dnsutils -y     (3)確認版本
        named -v 

2.設定固定IP
    (1) 設定固定IP:192.168.91.2
          cd /etc/netplan
          sudo cp 00-installer-config.yaml 00-installer-config.yaml.BK
          sudo nano 00-installer-config.yaml
          內容如下:
          # This is the network config written by 'subiquity'
            network:
                ethernets:
                    ens33:
                        dhcp4: false
                        addresses:
                            - 192.168.91.2/24
                        routes:
                            - to: default
                               via: 192.168.91.254
                        nameservers:
                            addresses:
                                - 127.0.0.1
                                - 8.8.8.8
            version: 2

    (2)套用設定
         sudo netplan apply    

3.建立 Forward Zone
    (1)編輯 named.conf.lan
        sudo nano /etc/bind/named.conf.lan
        加入內容:

zone "lab.lan" {
        type master;
        file "/etc/bind/db.lab.lan";
};
zone "91.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192.168.91";
};

4.建立 Forward Database
    (1)建立  db.lab.lan
        sudo nano /etc/bind/db.lab.lan
        內容為:
$TTL 604800 @ IN SOA dns.lab.lan. admin.lab.lan. ( 2026080201 604800 86400 2419200 604800 ) @ IN NS dns.lab.lan. dns IN A 192.168.91.2 client IN A 192.168.91.201

5.建立 Reverse Zone
  (1)建立 db.192.168.91
     sudo nano /etc/bind/db.192.168.91
     內容為:
$TTL    604800

@       IN      SOA     dns.lab.lan. admin.lab.lan. (
                        2026080201
                        604800
                        86400
                        2419200
                        604800 )

@       IN      NS      dns.lab.lan.
2       IN      PTR     dns.lab.lan.
201     IN      PTR     client.lab.lan.

6.允許 LAN 查詢
  (1)修改 named.conf.options
     sudo nano /etc/bind/named.conf.options  
    內容為:
options { directory "/var/cache/bind"; recursion yes; allow-query { localhost; 192.168.91.0/24; }; listen-on { any; }; listen-on-v6 { none; }; dnssec-validation auto; };

7.檢查設定
  (1)Forward
    sudo named-checkzone lab.lan /etc/bind/db.lab.lan
(2)Reverse
     sudo named-checkzone 91.168.192.in-addr.arpa /etc/bind/db.192.168.91
(3)整體設定
     sudo named-checkconf
沒有輸出,表示正常

8.重新啟動
   (1) 重新啟動 Bind9
         sudo systemctl restart bind9
   (2) 設定開機啟動 Bind9
         sudo systemctl enable bind9
   (3) 查看狀態
         sudo systemctl status bind9

三、Client 設定 DNS

1.設定固定IP
    (1) 設定固定IP:192.168.91.201
          cd /etc/netplan
          sudo cp 00-installer-config.yaml 00-installer-config.yaml.BK
          sudo nano 00-installer-config.yaml
          內容如下:
          # This is the network config written by 'subiquity'
            network:
                ethernets:
                    ens33:
                        dhcp4: false
                        addresses:
                            - 192.168.91.201/24
                        routes:
                            - to: default
                               via: 192.168.91.254
                        nameservers:
                            addresses:
                                - 192.168.91.2
            version: 2

    (2)套用設定
         sudo netplan apply    

四、測試正解
    (1)在 client 執行
        nslookup dns.lab.lan
        或
        dig dns.lab.lan

    (2)DNS 本機測試
        dig @127.0.0.1 dns.lab.lan

五、測試反解
    (1)在 client 執行
        nslookup 192.168.91.2
        或
        dig -x 192.168.91.2
    (2)DNS 本機測試
        dig @127.0.0.1 -x 192.168.91.201



2026年7月30日 星期四

在 Ubuntu 26.04 架設網域名稱伺服器(DNS)及相關設定說明


        BIND(Berkeley Internet Name Domain 伯克利網際網路域名) 是全世界最廣泛用來提供DNS服務的軟體,能夠將 網域名稱 <-對應-> IP 。提供兩種工具:1.named  2.rndc (遠端管理named 工具)
        1.安裝BIND
           sudo apt install bind9

        2.檢測是否安裝成功
            sudo ss -tulnp | grep named
            各個指令的意義:
             ss 顯示 Socket 相關的資訊
             -t 顯示 TCP連線
             -u 顯示 UDP連線
             -l 顯示 監聽中的連線
             -n 顯示 連接埠數字
             -p 顯示 占用連線的行程(process)
            (1).當 TCP 與 UDP 監聽 連接埠 53 表示 BIND 安裝成功
            (2).當TCP 監聽 連接埠 953 表示 rndc 會用到的連接埠  
       一、named:BIND 提供的守護程式(daemon)
       1.主要設定檔- named.conf:預設位置 /etc/bind/
        named.conf 內容:
       (1) named.conf.options 用來存放 options (選項),內容:
    其中 directory "/var/cache/bind";
                    directory 指定一個目錄,作為DNS資料庫,預設目錄為 /var/cache/bind
            forwarders {    
                 0.0.0.0;       
            };                     
                    forwarders 指定多個IP,以分號 ; 區隔。當我們DNS 無法回應使用者的查詢請求時,
                    轉移(forward) 指定的IP (就目前的IP為 0.0.0.0)
            dnssec-validation auto;
                    讓我們DNS 支援 DNSSEC (Domain Name System Security Extension)
            Listen-on-v6 設定監聽 IPv6範圍
       (2) named.conf.local 用來存放本地和使用者自定的 Zone 區塊。設定A.正解 B.反解
            A.正解(用網域名稱 查 IP) 
            B.反解(用IP 查 網域名稱)
       (3) zones.rfc1918 用來定義私有網域為 10.0.0.0 ~10.255.255.255、172.16.0.0~172.31.255.255、192.168.0.0 ~ 192.168.255.255,內容為
       172.16.0.0~172.16.255.255 zone的反解寫法:
        zone "16.172.in-addr.arpa" {    ...    };
        那 zone "16.172.in-addr.arpa" { type master; file "/etc/bind/db.empty";  };
       file 指定一個檔案給 zone 區塊對應的網域或IP,
             而該檔案內有DNS資源紀錄(Resource Record  RR)。        
       /etc/bind/db.empty 是 BIND 內建的設定檔,內容如下:
       type 設定值有三:A.master B.slave C.hint
        A.master 表示 zone 是主從架構的DNS中的 主要主機 
        B.slave   表示 zone 是主從架構的DNS中的 從屬主機
        C.hint     用於對應 . 的時候。 . 表示 [根域名](root name)
       (4) db.empty 內容:
       $TTL 86400
   
    $TTL 設定此RR(資源紀錄Resource Record) 作為解答的快取時間,單位是秒。
       $TTL 86400 意思是使用者的查詢請求只要問過DNS一次,就可以持續一整天(86400秒)

        @   IN  SOA localhost. root.localhost. (                                                   
                           1     ; Serial      
                 604800     ; Refresh     
                   86400     ; Retry       
               2419200     ; Expire      
                   86400 )   ; Negative Cache TTL
                   @                                       代表   zone name :目前網域(Zone Root )
                  IN                                       代表   Class          :InterNet 類別
  SOA(Start Of Authority 授權開始)  代表   這筆DNS紀錄值的格式
              localhost.                               代表   主要(master)主機的網域名稱                  
           root.localhost.                           代表   管理者的電子信箱
              Serial                                      代表   版本序號
              Refresh                                   代表   從屬(slave)主機的更新時間
               Retry                                     代表    重試的時間間隔
             Expire                                     代表    逾時時間
      Negative Cache TTL                     代表    最小的TTL值

        @   IN   NS   localhost.
                NS(Name Server)                代表    指定此網域的權威 DNS 伺服器                                      
      其他常用的DNS 資源記錄類型,如下:
      A            :指定網域名稱所對應的IPv4。正解用。
      AAAA   :指定網域名稱所對應的IPv6。正解用。
      PTR       :指定IP所對應的網域名稱。反解用。
      CNAME:指定別名。正解用。
      MX        :用於指定電子郵件交換器的主機名稱。
       TXT      :指定網域名稱對應某筆字串資料,通常用於驗證網域所有權。

資料來源:

2026年6月29日 星期一

Windows 11 建立本地端 AI (Ollama + qwen2.5-coder:7B + docker + webui)

0.自己本地端設備環境:Ultra 7 155H + 32G RAM + Intel Arc Pro Graphics 128M 

1.ollama 下載 ->下載後點兩下進行安裝

或是 以系統管理員身分開啟 PowerShell 進行安裝
安裝指令:irm https://ollama.com/install.ps1 | iex
  (1).測試是否安裝成功:ollama --version
  (2).檢查有多少模型:ollama list   (3).下載模型指令:ollama pull qwen2.5-coder:7B (4).安裝模型指令:ollama run qwen2.5-coder:7B

2. docker 安裝前,要先安裝 WSL
    (1). 以系統管理員身分開啟 PowerShell 
        安裝指令:wsl --install
    (2). 重啟電腦
    (3). 確認是否安裝成功指令:wsl --version

3.下載 docker desktop ->下載後點兩下進行安裝

或是 以系統管理員身分開啟 PowerShell 進行安裝-> 重啟電腦
安裝指令:winget install -e --id Docker.DockerDesktop
確認是否安裝成功指令:docker --version

4.下 powershell 指令啟動 Open WebUI:
docker run -d ^
--name open-webui ^
-p 3000:8080 ^
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 ^
-v open-webui:/app/backend/data ^
--restart unless-stopped ^
ghcr.io/open-webui/open-webui:main

安裝完後,重開機。該如何啟動本地端AI?
    (1)由於重開機後,ollama 會開機後啟動。所以無需另行啟動。
    (2)只要啟動 docker desktop 即可。
    (3)打開瀏覽器 http://localhost:3000

在 Ubuntu 26.04 安裝與設定 Blocky DNS(DNS Proxy / Ad-blocking DNS)

一、更新系統     sudo apt update     sudo apt upgrade -y 二、安裝必要工具   wget curl tar     sudo apt install -y wget curl tar 三、下載與安裝 Blocky     (1) 下載 ...