顯示具有 debian 標籤的文章。 顯示所有文章
顯示具有 debian 標籤的文章。 顯示所有文章

2020年8月4日 星期二

wget使用方法

啟動:
  -V,  --version           顯示 Wget 版本並離開
  -h,  --help              印出這段說明文字
  -b,  --background        啟動後進入背景作業
  -e,  --execute=指令      執行 ‘.wgetrc’ 形式的指令

紀錄訊息及輸入檔案:
  -o,  --output-file=檔案    將紀錄訊息寫入<檔案>中
  -a,  --append-output=檔案  將紀錄訊息加入<檔案>末端
  -d,  --debug               印出偵錯訊息
  -q,  --quiet               安靜模式 (不輸出訊息)
  -v,  --verbose             詳細輸出模式 (預設使用這個模式)
  -nv, --non-verbose         關閉詳細輸出模式,但不啟用安靜模式
  -i,  --input-file=FILE     download URLs found in local or external FILE.
  -F,  --force-html          以 HTML 方式處理輸入檔
  -B,  --base=URL            resolves HTML input-file links (-i -F)
                             relative to URL.

下載:
  -t,  --tries=次數              設定重試次數 (0 表示無限)
       --retry-connrefused       即使連線被拒仍然會不斷嘗試
  -O   --output-document=檔案    將資料寫入指定檔案中
  -nc, --no-clobber              不覆寫已經存在的檔案
  -c,  --continue                繼續下載已下載了一部份的檔案
       --progress=方式           選擇下載進度的表示方式
  -N,  --timestamping           除非遠端檔案比較新,否則不下載遠端檔案
  -S,  --server-response         顯示伺服器回應訊息
       --spider                  不下載任何資料
  -T,  --timeout=秒數            指定所有時限為同一數值
       --dns-timeout=秒數        指定 DNS 查找主機的時限
       --connect-timeout=秒數    指定連線時限
       --read-timeout=秒數       指定讀取資料的時限
  -w,  --wait=秒數               每次下載檔案之前等待指定秒數
       --waitretry=秒數          每次重覆嘗試前稍等一段時間 (由 1 秒至指
                                 定秒數不等)
       --random-wait             每次下載之前隨機地指定等待的時間
       --no-proxy                禁止使用代理伺服器
  -Q,  --quota=大小              設定下載資料的限額大小
       --bind-address=位址       使用本機的指定位址 (主機名稱或 IP) 進行連線
       --limit-rate=速率         限制下載速率
       --no-dns-cache            不記憶 DNS 查找主機的資料
       --restrict-file-names=OS  只使用作業系統能夠接受的字元作為檔案字元
       --ignore-case             ignore case when matching files/directories.
  -4,  --inet4-only              只會連接 IPv4 地址
  -6,  --inet6-only              只會連接 IPv6 地址
       --prefer-family=FAMILY    優先採用指定的位址格式,可以是 IPv6、IPv4
                                 或者 none
       --user=用戶               指定 ftp 和 http 用戶名稱
       --password=PASS           指定 ftp 和 http 密碼
       --ask-password            prompt for passwords.
       --no-iri                  turn off IRI support.
       --local-encoding=ENC      use ENC as the local encoding for IRIs.
       --remote-encoding=ENC     use ENC as the default remote encoding.
目錄:
  -nd  --no-directories           不建立目錄
  -x,  --force-directories        強制建立目錄
  -nH, --no-host-directories      不建立含有遠端主機名稱的目錄
       --protocol-directories     在目錄中加上通訊協定名稱
  -P,  --directory-prefix=名稱    儲存檔案前先建立指定名稱的目錄
       --cut-dirs=數目            忽略遠端目錄中指定<數目>的目錄層
HTTP 選項:
       --http-user=用戶        指定 HTTP 用戶名稱
       --http-passwd=密碼      指定 HTTP 密碼
       --no-cache              不使用伺服器中的快取記憶資料
       --default-page=NAME     Change the default page name (normally
                               this is `index.html'.).
  -E,  --adjust-extension      save HTML/CSS documents with proper extensions.
       --ignore-length         忽略 ‘Content-Length’ 標頭欄位
       --header=字串           在連線資料標頭中加入指定字串
       --max-redirect          maximum redirections allowed per page.
       --proxy-user=用戶       設定代理伺服器用戶名稱
       --proxy-password=密碼   設定代理伺服器密碼
       --referer=URL           在 HTTP 請求中包括 ‘Referer: URL’ 標頭
       --save-headers          將 HTTP 連線資料標頭存檔
  -U,  --user-agent=AGENT      宣稱為 AGENT 而不是 Wget/VERSION
       --no-http-keep-alive    不使用 HTTP keep-alive (持久性連線)
       --no-cookies            不使用 cookie
       --load-cookies=檔案     程式啟動時由指定檔案載入 cookie
       --save-cookies=檔案     程式結束後將 cookie 儲存至指定檔案
       --keep-session-cookies  會載入和儲存暫時性的 cookie
       --post-data=字串        使用 POST 方式送出字串
       --post-file=檔案        使用 POST 方式送出檔案內容
       --content-disposition   honor the Content-Disposition header when
                               choosing local file names (EXPERIMENTAL).
       --auth-no-challenge     send Basic HTTP authentication information
                               without first waiting for the server's
                               challenge.

HTTPS (SSL/TLS) 選項:
       --secure-protocol=PR     選擇安全通訊協定,可以使用 auto, SSLv2,
                                SSLv3 或 TLSv1
       --no-check-certificate   不檢驗伺服器的憑證
       --certificate=檔案       指定用戶端的憑證檔案名稱
       --certificate-type=類型  用戶端憑證的類型,可以是 PEM 或 DER
       --private-key=檔案       指定私鑰檔案
       --private-key-type=類型  私鑰的類型,可以是 PEM 或 DER
       --ca-certificate=檔案    載有憑證管理中心 (CA) 簽章的檔案
       --ca-directory=目錄      載有憑證管理中心 (CA) 簽章的目錄
       --random-file=檔案       作為 SSL 隨機數產生程序 (PRNG) 的來源數據檔案
       --egd-file=檔案          產生隨機數據的 EGD socket 檔案名稱

FTP 選項:
       --ftp-user=用戶         指定 FTP 用戶名稱
       --ftp-password=密碼     設定 FTP 密碼
       --no-remove-listing     不刪除 ‘.listing’ 檔案
       --no-glob               不展開有萬用字元的 FTP 檔名
       --no-passive-ftp        不使用「被動」傳輸模式
       --retr-symlinks         在遞迴模式中,下載鏈結指示的目標檔案
                               (不包括目錄)

遞迴下載:
  -r,  --recursive          遞迴下載
  -l,  --level=數字         最大搜尋深度 (inf 或 0 表示無限)
       --delete-after       刪除下載後的檔案
  -k,  --convert-links      make links in downloaded HTML or CSS point to
                            local files.
  -K,  --backup-converted   將檔案 X 轉換前先備份為 X.orig
  -m,  --mirror             相等於 -N -r -l inf --no-remove-listing 選項
  -p,  --page-requisites    下載所有顯示網頁所需的檔案,例如圖片等
       --strict-comments    用嚴格方式 (SGML) 處理 HTML 注釋。

遞迴下載時有關接受/拒絕的選項:
  -A,  --accept=清單               接受的檔案樣式,以逗號分隔
  -R,  --reject=清單               排除的檔案樣式,以逗號分隔
  -D,  --domains=清單              接受的網域,以逗號分隔
       --exclude-domains=清單      排除的網域,以逗號分隔
       --follow-ftp                跟隨 HTML 文件中的 FTP 鏈結
       --follow-tags=清單          會跟隨的 HTML 標籤,以逗號分隔
  -G,  --ignore-tags=清單          會忽略的 HTML 標籤,以逗號分隔
  -H,  --span-hosts                遞迴模式中可進入其它主機
  -L,  --relative                  只跟隨相對鏈結
  -I,  --include-directories=清單  準備下載的目錄
  -X,  --exclude-directories=清單  準備排除的目錄
  -np, --no-parent                 不進入上層的目錄

2018年7月11日 星期三

Debian 9.4 安裝配置 MariaDB (MySQL)

本文參考https://ralf.ren/1717國立白河商工日誌
Debian 9 使用 MariaDB 徹底代替了 MySQL。相較於 mariadb-server,使用 mysql-server 能夠保證對 MySQL 的兼容性。
  1. 安裝MariaDB (MySQL)
    apt-get install mysql-server
  2. 如果允許遠端連線資料庫(非必須)
    vim /etc/mysql/mariadb.conf.d/50-server.cnf 將bind-address=127.0.0.1改成可連線的網段或0.0.0.0全部開放(mark起來也可)
  3. 使用原生 MySQL 認證
    因為默認使用了 UNIX SOCKET 認證,有些 phpMyAdmin 在登入時會發生 「Access Denied」 錯誤。我們可以更改 UNIX SOCKET 認證為原生 MySQL 認證。
    • update mysql.user set plugin = 'mysql_native_password' where User='root';
    • flush privileges;
  4. 修改root密碼
    • 方式一:
      mysqladmin -u root password 'new_password'
    • 方式二
      mysql直接進入資料庫
      Grant All Privileges On *.* To root@localhost Identified By 'password' With Grant Option;
      • Grant All Privileges : 代表將所有權限授權給
      • On *.* : 代表在那裡,第一個*為資料庫名稱,第二個星為資料表名稱,*.*為全部授權的意思
      • To root@localhost : 代表給 localhost 上的 root 這個人
      • Identified By ‘password’ : 在此輸入密碼
      • With Grant Option; : 表示這個使用者可以再 Grant 權限給其它使用者
      • 在使用 Grant 指令時,每個指令的第一個字要大寫
      • 這樣就完成權限設定的動作了
  5. 重新啟用資料庫
備註:
  1. 考量當初資料庫預設字元為Latin1,新系統已將之改為utf8mb4,若要沿用:
    • 將/etc/mysql/mariadb.conf.d/50-server.cnf
      • #character-set-server  = utf8mb4
      • #collation-server      = utf8mb4_general_ci
    • 將/etc/mysql/mariadb.conf.d/50-client.cnf
      • #default-character-set = utf8mb4
  2. 若要使用新版moodle或SFS3U,有必要將原系統innodb-base的文件格式Antelope改為Barracude(Antelope是innodb-base的文件格式,Barracude是innodb-plugin引入的文件格式,同時Barracude也支持Antelope文件格式。),可在50-server.cnf設定當中設定:(參考杜子的網管筆記
    • max_allowed_packet = 100M   (加入這行,可以讓轉碼時每次處理 5000筆以上,加快速度)
    •  innodb_file_format = Barracuda
    •  innodb_file_format_max = Barracuda
    •  innodb_file_per_table = 1
    •  innodb_large_prefix

2016年11月10日 星期四

利用 arp-scan 來查詢區域網路的 IP 和 Mac address

安裝
# apt-get install arp-scan

查詢區域網路的IP和Mac
# arp-scan --localnet

其他查詢範例
# arp-scan 192.168.0.0/24
# arp-scan 192.168.0.1-192.168.0.254

nmap -
# nmap -sP 192.168.199.0/24
# nmap -sP 192.168.199.1-254

配合nmap使用可以得到較完整的資訊

2016年10月14日 星期五

debian 8.5版之mysql5.5優調

登入mysql介面後,執行 show variables; 查看相關參數。
相關參數範例,可至 /usr/share/doc/mysql-server-5.5/examples/ 查詢,裡頭包括:
my-huge.cnf、my-innodb-heavy-4G.cnf、my-large.cnf、my-medium.cnf、my-small.cnf
my.cnf設定備忘
  1. back_log: 要求 MySQL 能有的連接數量。當主要MySQL線程在一個很短時間內得到非常多的連接請求,這就起作用,然後主線程花些時間(儘管很短)檢查連接並且啟動一個新線程。 back_log值指出在MySQL暫時停止回答新請求之前的短時間內多少個請求可以被存在堆棧中。只有如果期望在一個短時間內有很多連接,你需要增加它,換句話說,這值對到來的TCP/IP連接的偵聽隊列的大小。默認數值是50,改為500。注意,這個值不可以大於系统参数tcp_max_syn_backlog的值,必要時更改 /etc/sysctl.conf之net.ipv4.tcp_max_syn_backlog = 1024,並執行sysctl -p,才可以。
  2. max_connections預設100,改為500
  3. interactive_timeout、wait_timeout在伺服器關閉交互式、非交互式連接前等待活動的秒數預設為28800秒(8小時),改為3600
  4. 其餘設定,則參考相關範例。

2016年9月12日 星期一

debian 8.5版之apache2.4優調(避免流量暴增時掛點)

  1. vim /etc/apache2/apache2.conf
    • Timeout 60 預設值300
      不論接收或傳送,當持續連線等待超過 60 秒則該次連線就中斷。
    • KeepAlive On 預設
      如果你的網頁內含很多圖檔,那麼一次連線就會將所有的資料送完。
    • MaxKeepAliveRequests 500 預設值100
      該次連線能夠傳輸的最大傳輸數量,0 代表不限制。
    • KeepAliveTimeout 5 預設值5
      該次連線在最後一次傳輸後等待延遲的秒數,如設太高則在較忙碌的系統上將會有較多的 Apache 程序佔用資源。
  2. MPM (Mutil-Processing Module)設定(重要,連接數設定)
    1. MPM 有兩種:prefork 和 worker。debian 8.5預設啟動prefork
    2. 可執行apachectl -V 做確認,prefork設定
      • vim /etc/apache2/mods-available/mpm_prefork.conf
        • ServerLimit 500 伺服器限制,預設無,如果想將MaxRequestWorkers設超過256,必須設定,且放在MaxRequestWorkers上面。
        • StartServers 5 預設,啟動 apache2 時,喚醒幾個 PID 來處理服務。
        • MinSpareServers 5 預設,最小的預備使用的 PID 數量
        • MaxSpareServers 10 預設,最大的預備使用的 PID 數量
        • MaxRequestWorkers 500 預設150,最大連線數到 apache2
        • MaxConnectionsPerChild 0 預設0,每個程序所能夠提供的最大傳輸次數要求,0代表無限制。
      • 執行 apachectl configtest 測試參數是否正確
  3. 關閉apache後,再開啟。不可使用restart的方式
  4. 本文參考
減少不必要的等待(參考廖子儀文件
vim /etc/apache2/apache2.conf
為了效能,建議關閉 DNS 的查尋和提高 MaxKeepAliveRequests 的選項、把 Timeout 值調低。
Timeout 值要縮短,在一個大流量的網路服務(良好的硬體設備,高頻寬的網路速度),在同一時間是需要能夠服務更多的使用者,如果 Timeout 太高,那麼在連線佔滿時下一個連線請求就要等到有連線結束掉才能夠被服務;相反的若設定太低那麼就要常常重新連線。
當一個連線被建立之後,使用者很有可能會在短時間之內又提出新的請求,所以為了避免再次
的連線,就會在本次要求結束後,保持連線 KeepAliveTimeout 秒,若是超過了keepAliveTimeout秒,其 Timeout 就會轉交給連線逾時,也就是 Timeout 秒之後,會自動斷掉連線。
  1. Timeout 60 連線超過 60 秒失敗就重試
  2. KeepAlive On
  3. MaxKeepAliveRequests 5000
  4. KeepAliveTimeout 3 KeepAlive 多久要自動 Timeout 掉
  5. HostnameLookups Off 關掉那費時的 DNS 查尋
減少TIME_WAIT避免造成伺服器無法訪問
linux指令:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

說明:
SYN_RECV表示正在等待處理的請求數
ESTABLISHED表示正常數據傳輸狀態
TIME_WAIT表示處理完畢,等待超時結束的請求數。

改變系統內核
sysctl -a 查詢系統目前狀態(設定值)

改變系統內核設定
vim /etc/sysctl.conf
  1. net.ipv4.tcp_syncookies=1 表示開啟SYN Cookies。當出現SYN等待隊列溢出時,啟用cookies來處理,可防範少量SYN攻擊,默認為0
  2. net.ipv4.tcp_tw_reuse=1 允許將TIME-WAIT sockets重新用於新的TCP連接,默認為0
  3. net.ipv4.tcp_tw_recycle=1 表示開啟TCP連接中TIME-WAIT sockets的快速回收,默認為0
  4. net.ipv4.tcp_keepalive_time = 1200  預設7200秒
  5. net.ipv4.tcp_keepalive_intvl = 30  預設75秒
  6. net.ipv4.tcp_keepalive_probes = 3 預設9次
如果TCP連接1200秒後,內核發起probe,如果probe3次(每次30秒)不成功,內核才徹底放棄,認為該連接已失效。
sysctl -p 執行

2016年3月21日 星期一

sfs3伺服器研習備忘

  1. 安裝片base on ubuntu 14.04.3
    1. 網咯卡設定 /etc/network/interfaces
    2. DNS查詢 /etc/resolv.conf (不用重開機)
      nameserver 127.0.1.1
      nameserver 168.95.1.1
      nameserver 8.8.8.8
      nameserver 168.95.192.1
  2. 校時工作
    sudo /usr/sbin/ntpdate time.stdtime.gov.tw
    sudo ntpdate time.windows.com
  3. 網站目錄設定
    1. 預設網站設定檔 /etc/apache2/sites-enabled/000-default.conf
    2. 預設 SSL 網站的設定檔 /etc/apache2/sites-enabled/default-ssl.conf
    3. ACFS設定檔 /etc/apache2/sites-enabled/acfs_sfs.1404.conf
  4. 新版mysql資料庫使用InnoDB為預設引擎,造成使用tar備份時的錯誤。因此必須對舊資料庫檢查與修護。
    1. mysqlcheck -uroot -p -r sfs3(進行檢查與修護),若為新建資料表InnoDB格式,會發生錯誤訊息。
    2. mysqlcheck -uroot -p sfs3(修護完畢後,再檢測一次是否正確)
  5. 若正確進行資料庫備份(順便用gzip壓縮)
    mysqldump -uroot -p sfs3 --default-character-set=latin1 | gzip > sfs3_DB.sql.gz
    待日後使用gunzip sfs3_DB.sql.gz解壓縮。
  6. 還原備份資料庫
    mysqladmin -uroot -p create sfs3 ==>1.建好空資料庫
    mysql -uroot -p sfs3 < sfs3_DB.sql ==>2.倒入資料
  7. 遠端ftp備份,預設以163.23.200.28縣網主機,日後會開放申請放置大家的異地備份檔。
  8. 下載最新版本學籍系統程式
    wget http://sfscvs.tc.edu.tw/sfs_stable5.tar.gz
  9. 資料庫加密
    1. 安裝「aespipe」加解密工具
    2. 在/home/webadmin下,增加一個「AespipeKey.txt」,裡頭寫入20個位元以上自訂的密語
      加密 $ aespipe -P 字典檔.txt < 原始檔案 > 加密後檔案.enc
      解密 $ aespipe -d -P 字典檔.txt < 加密後檔案.enc > 解開後檔案
    3. 日後要還原,必先解密備份檔,再解壓,再dump進資料庫
  10. 修改「ACFSsfsBKv2.txt」放置在/bin,及改crontab

加裝denyhosts防止ssh暴力破解

本文參考自 站長評測網
  1. 清除SSH登錄記錄,防止裝完屏蔽自己。
    echo "" > /var/log/auth.log
  2. 安裝denyhosts
    apt-get install denyhosts
  3. vim /etc/denyhosts.conf
    SECURE_LOG = /var/log/auth.log
    PURGE_DENY = 30m #過多久清除已阻止IP
    HOSTS_DENY = /etc/hosts.deny #將阻止IP寫入到hosts.deny
    BLOCK_SERVICE = sshd
    DENY_THRESHOLD_INVALID = 3 #允許無效用戶登錄失敗的次數
    DENY_THRESHOLD_VALID = 5 #允許普通用戶登錄失敗的次數
    DENY_THRESHOLD_ROOT = 3 #允許root登錄失敗的次數
    DENY_THRESHOLD_RESTRICTED = 1 #設定 deny host 寫入到該資料夾
    WORK_DIR = /var/lib/denyhosts #將deny的host或ip紀錄到Work_dir中
    SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
    #如果為YES,所有在$WORK_DIR/allowed-host時面的IP地址將會被認為是可疑的,如果設置為NO,所有在allowd-hosts試圖登陸的結果,將不會發送警告郵件!所有不在$WORK_DIR/allowed-host時面的IP地址將會發送警告!
    HOSTNAME_LOOKUP=NO #是否將IP地址解析為主機名。
    LOCK_FILE = /var/run/denyhosts.pid #定義PID文件的位置,確保同時只有一個Denyhost進程在運行
    ADMIN_EMAIL = root@localhost
    SMTP_HOST = localhost
    SMTP_PORT = 25
    SMTP_FROM = DenyHosts
    SMTP_SUBJECT = DenyHosts Report
    AGE_RESET_VALID=5d #多長時間后,用戶登錄失敗的次數被置為0,這里是指在/etc/passwd里面定義的用戶,如果不設置,永遠都不會置0
    AGE_RESET_ROOT=25d #多長時間后,root用戶登錄失敗的次數置為0,如果不設置,永遠都不會置0
    AGE_RESET_RESTRICTED=25d #在$WORK_DIR/hosts-restricted時面定義的用戶,多長時間失敗次數計數器被置為0
    AGE_RESET_INVALID=10d #無效用戶(不在/etc/passwd里面的用戶)的失敗次數計數器,多長時間被置為0
    RESET_ON_SUCCESS = yes #當某個IP使用某個用戶登錄成功后,該IP對應的用戶失敗次數將會被置為0
    DAEMON_LOG = /var/log/denyhosts #當denyhost運行在守護進程模式的時候,日志文件存儲的位置
    DAEMON_SLEEP = 30s #輪詢查看SSHD日志的間隔
    DAEMON_PURGE = 1h #多長時間清空$HOSTS_DENY中的IP地址,如果PURGE_DENY為空,這個設置將無效
  4. 重啟/etc/init.d/denyhosts restart
  5. 設定白名單(出現不小心打錯密碼被列入黑名單後, 雖然手動去 /etc/hosts.deny 移除, 但不久又被 denyhosts 自動加回時, 需要處理的程序)
    vim /etc/hosts.allow

apache網頁瀏覽限制ip並隱藏apache和php的版本訊息

一、apache網頁瀏覽限制ip
  1. 修改httpd.conf內的設定, 針對"/var/www/html/abc"這個目錄做設定
    <Directory /var//www/abc/>
    Options MultiViews
    AllowOverride Limit
    Order allow,deny
    Allow from all
    </Directory>
  2. 在"/var/www/abc"目錄內加上".htaccess"這個檔案, 內容如下
    order deny,allow
    allow from 163.23.115.64/26
    deny from all
ps.目錄下的子目錄也行
二、防火牆限制ip(此方法會將該伺服器內的網站全部封鎖) 
iptables -X
iptables -Z
iptables -A INPUT -i eth0 -s 163.23.115.64/26 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j DROP
iptables-save(儲存iptables設定)
三、隱藏apache和php的版本訊息
  1. vim /etc/apache2/conf.d/security
    ServerTokens ProductOnly
    ServerSignature Off
  2. vim /etc/php5/apache2/php.ini
    expose_php Off
  3. 重新啟動apache2

sfs3研習筆記

  1. 檢查版本:lsb_release -acat /etc/issue
    檢查linux核心版本:ll /boot/vmlinuz-*
  2. php 7 與現行sfs3程式不相容
  3. linux系統使用的網卡名稱可能是em1、p4p1、p2p1...等名稱,不一定是eth0,可使用
    ls /proc/net/dev_snmp6 查詢
    查看網路介面 (/proc是核心模擬出來的軟體檔案系統,它是核心對於外界的資訊窗口)
  4. DNS查詢設定,更改後立即生效 vim /etc/resolv.conf
    nameserver 168.95.1.1
    nameserver 8.8.8.8
    nameserver 8.8.4.4
  5. echo $PATH 系統預設搜尋路徑
    crontab 使用絕對路徑
  6. 改變ipv6、ipv4網路使用優先權。vim /etc/gai.conf,增加以下指令:
  7. precedence ::ffff:0:0/96  100
  8. 手動安裝某個套件
    sudo dpkg -i XXXX.deb
  9. 清除套件
    sudo apt-get clean
  10. 移除已安裝的套件(連相依套件一併清除)
    sudo apt-get autoremove --purge 套件
  11. 將相依且無用的套件移除
    sudo apt-get autoremove
  12. 清除舊核心
    1. dpkg --get-selections linux-image*
    2. 查目前使用核心:uname -r
    3. 查看全部核心
      dpkg -l | grep linux-image
    4. 移除舊核心:apt-get autoremove --purge linux-image-XXXX
  13. 執行更新指令
    sudo apt-get dist-upgrade -y
  14. 移除套件含設定檔
    sudo apt-get remove --purge 套件
  15. 安裝unzip套件(Debian預設沒有裝,上傳格式檔會出錯)
    apt-get install p7zip p7zip-full unzip
  16. 修改SSH可連線區域 (可參考 denyhosts套件進行防護)
    • sudo vim /etc/hosts.allow
      sshd:163.23. ,172.16. ,192.168.1.
      mysqld: 163.23.200.2
    • sudo vim /etc/hosts.deny
      ALL:ALL
  17. 學務系統資料庫備份與重建
    • 利用學務系統之問題工具箱 / 備註清除 (將上述InnoDB資料表改為MyISAM傳統格式)
      參考語法:mysqldump  -uroot -p --default-character-set=latin1 sfs3 > sfs_DB.sql
    • 新版mysql資料庫使用InnoDB為預設引擎,造成使用tar備份時的錯誤。因此必須對舊資料庫檢查與修護。
    • 檢查與修護
      mysqlcheck -uroot -p sfs3 (有InnoDB資料表要加-r,自動修復之意)
    • 備份並壓縮mysqldump -uroot -p sfs3 --default-character-set=latin1 | gzip > sfs3_DB.sql.gz
    • 資料庫重建
      • gunzip sfs3_DB.sql.gz (gunzip -k 可保留原gzip檔案)
      • mysqladmin -u root -p create sfs3
      • mysql -u root -p sfs3 < sfs3_DB.sql
  18. 將資料庫之資料表InnoDB格式改為MyISAM
    ALTER TABLE `scholarship_plan` ENGINE = MyISAM;
  19. 學務系統新學期建立之資料表預設格式為InnoDB,可進入學務系統 / 系統管理 / 問題工具箱 / 備註清除(找到InnoDB格式然後轉換成MyISAM)
  20. 學務系統移機(重建)完成後,須進入 系統管理/系統維護與管理/連結列修正
  21. 在virtualbox啟用剪貼簿(雙向)功能
  22. 指令
    • 預設服務 sysv-rc-conf
    • 查詢主機排程 crontab -l
  23. 相關資源:
    1. 最新sfs3下載:http://sfscvs.tc.edu.tw/sfs_stable5.tar.gz
    2. 自動備份:http://163.23.89.100/pub/sfs_tool/ACFSsfsBKv3.txt
    3. 彰化縣學籍系統
  24. 學務系統網頁安全預設(置於/etc/apache2/sites-enabled)
    1. 網站根目錄設定(不開放目錄)
      • Options FollowSymLinks
      • AllowOverride none (是否允許額外設定檔 .htaccess 的某些參數覆寫,none表示讓.htaccess失效)
      • Require all granted (全部允許)# Require all denied     #全部拒絕# Require host  chc.edu.tw #允許的網域
    2. 學籍系統data目錄設定
      • Options MultiViews FollowSymLinks (MultiViews 多國語言的支援)
      • AllowOverride none
      • php_flag engine off (禁止執行php)
    3. 網站工具目錄設定(較危險,限制IP)
      • Options Indexes MultiViews FollowSymLinks (Indexes沒出現首頁,就顯示目錄)
      • AllowOverride none
      • Require ip 127.0.0.1 172.16 163.23
  25. 修改SSH可連線區域
    1. vim /etc/hosts.allow
      sshd:163.23. ,172.16. ,192.168.1.
      mysqld:163.23.200.2
    2. vim /etc/hosts.deny
      ALL:ALL

無法將 /var/lib/dpkg/lock 鎖定

本文參考 手把手玩Linux
更新套件庫或安裝套件時,會出現這個訊息 E: 無法將 /var/lib/dpkg/lock 鎖定
  1. 用 lsof 找出目前是那個程序在使用 /var/lib/dpkg/lock
    sudo lsof /var/lib/dpkg/lock
  2. 如果,找出來的程序是己經沒在執行又遺忘在那開啟的話,直接用 kill 殺掉那個程序 
ps. dpkg 作業如遭中斷,必須手動執行 'sudo dpkg --configure -a' 以修正問題。

常見繁簡文互換或中文編碼問題

編碼轉換(不轉換繁、簡文)
  • 改變將路徑下的目錄與檔案名稱的編碼方式
*  需安裝 convmv
* 先測試看看:從 big5 編碼轉成 utf8
convmv -f big5 -t utf8 -r --nosmart folder_name
* 強制轉換
convmv -f big5 -t utf8 -r --nosmart --notest folder_name

繁、簡體轉換
  • 轉換檔案內容:利用 iconv 進行繁、簡互轉
* 先考慮簡單的情況:
將 gb2312 編碼的簡體轉為 big5 編碼的繁體
iconv sc-gb2312.txt -f gb2312 -t big5 -o output.txt
若需要再把編碼轉為 utf8 則再換一次
iconv sc-gb2312.txt -f gb2312 -t big5 | iconv -f big5 -t utf8   -o output.txt
big5 繁體中文要轉成 utf8 編碼的繁體中文
cat tc-big5.txt | iconv -f big5 -t utf8 > output.txt
但比較麻煩的不知道編碼的格式為何。如此,可以用 autob5, autogb (需要安裝 zh-autoconvert ) 來協助,需要再轉換 utf8 編碼再 pipe 給 iconv 做,如下:
cat sc-unknow.txt | autob5 | iconv -f big5 -t utf8 >  output.txt
反之亦然,如:
cat tc-big5.txt | autogb | iconv -f gbk -t utf8 > output.txt

* 複雜的情況:
文件內容為 utf8 編碼之簡體,要轉換成 utf8 繁體,則需要中介編碼,如下
cat sc-utf8.txt | iconv -f utf8 -t gb2312  | iconv -f gb2312 -t big5 | iconv -f big5 -t utf8 output.txt

下面則是轉換都是 utf8 的方式繁、簡檔名
  • utf8簡體檔名轉成utf8繁體檔名
* 需安裝 zh-autoconvert
* 先轉換目錄名稱
for i in $(find . -type d)  ;  do mv $i $(echo $i | autob5 --input utf8 | iconv -f big5 -t utf8) ; done
* 再轉換檔案名稱
for i in $(find . -type f)  ;  do mv $i $(echo $i | autob5 --input utf8 | iconv -f big5 -t utf8) ; done

查詢硬體資訊 - dmidecode 終端機指令

sudo dmidecode -t 硬體類型
硬體類型可以是索引值或英文名稱,包括:
0 bios
1 system
2 baseboard
3 chassis
4 processor
16, 17 memory
7 cache
8 connector
9 slot

關閉ipv6


  1. vim /etc/default/grub
    將 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    改為 GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"
  2. update-grub

awk的使用

  1. 取得欄位值
    awk 指令在讀取檔案或資料流時,以一行為單位,一次單以一行進行處理,預設的欄位以空白或Tab(\t)進行分隔,分隔完的欄位值從左邊第一欄為 $1 開始,往右遞增累加。在使用 awk 時,除了直接讀取檔案之外,也可以利用管線(pipe, |)將資料流導向給 awk 進行處理。
    p.s. $0 代表未經分隔的完整一行, NF(保留字, 無$)代表全部欄位數
    例如:將 ls -al 結果簡化成檔案名稱對應檔案擁有者
    ls -al | awk '{print $9"\t=>\t"$3}'
  2. if-else
    例如:Salary.txt
    A 19000
    B 22000
    C 10500
    D 65000
    awk '{if($2 > 22000) {print $1" is rich!"} else {print $1" is poor..."}}' Salary.txt
    // output
    A is poor...
    B is poor...
    C is poor...
    D is rich!
  3. 更改欄位分隔依據
    例如分隔 csv 檔案時,所需用到的分隔依據就不再是空白或Tab(\t)了,此時可以使用參數 -F 更改欄位分隔符號。例如:
    awk -F ',' '{print $1}' csv_file.txt
本文參考Jedi Linuxer

netstat用法

windows的netstat功能較弱
netstat -tn 目前連線
netstat -ano | find /I "listening" 目前本機listen的情況(netstat -o顯示pid,find類似unix的grep,find /I忽略大小寫)
===========================================================

查看本地端連結遠端的IP
netstat -na|grep ESTABLISHED|awk '{print $5}'|sort|uniq -c|sort -r -n
netstat -an --inet --inet6 (ipv4或ipv6)

uniq重覆資料只算一筆;uniq -c 重覆資料只算一筆並計算次數
sort [-fbMnrtuk] [file or stdin]
選項與參數:
-f  :忽略大小寫的差異,例如 A 與 a 視為編碼相同;
-b  :忽略最前面的空白字元部分;
-M  :以月份的名字來排序,例如 JAN, DEC 等等的排序方法;
-n  :使用『純數字』進行排序(預設是以文字型態來排序的);
-r  :反向排序
-u  :就是 uniq ,相同的資料中,僅出現一行代表;
-t  :分隔符號,預設是用 [tab] 鍵來分隔;
-k  :以那個區間 (field) 來進行排序的意思

一些實用的 netstat 語法,可以檢查主機的連線數量:
  • netstat -na
    顯示主機上所有已建立的連線。
  • netstat -an | grep :80 | sort
    顯示所有 port 80 的連線,並把結果排序。
  • netstat -n -p|grep SYN_REC | wc -l
    列出主機上有多少個 SYNC_REC,一般上這個數字應該相當低。
  • netstat -n -p | grep SYN_REC | sort -u
    同樣是列出 SYNC_REC,但不只列出數字,而是將每個 SYNC_REC 的連線列出。
  • netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
    列出發送 SYNC_REC 的所有 ip 地址。
  • netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
    計算每一個 ip 在主機上建立的連線數量。
  • netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
    列出從 TCP 或 UDP 連線到主機的 ip 的數量。
  • netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
    列出每個 ip 建立的 ESTABLISHED 連線數量。
  • netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1
    列出每個 ip 建立的 port 80 連線數量。
netstat參數說明
-a或–all 示所有連線中的Socket
-A<網絡類>或–<網絡類> 列出該網絡類連線中的相地址。
-c或–continuous 列出網絡狀態
-C或–cache 示路由器配置的快取信息。
-e或–extend 網絡其他相信息。
-F或–fib FIB
-g或–groups 示多重播功能群組組員
-h或–help 線幫助。
-i或–interfaces 網絡界面信息表
-l或–listening 控中的服器的Socket
-M或–masquerade 偽裝網絡連線
-n或–numeric 直接使用IP地址,而不通域名服器。
-N或–netlink或–symbolic 網絡硬件外圍設備的符號連接名
-o或–timers 計時器。
-p或–programs 示正在使用Socket的程序識別碼和程序名
-r或–route Routing Table
-s或–statistice 網絡工作信息統計表。
-t或–tcp TCP傳輸協議連線狀況
-u或–udp UDP傳輸協議連線狀況
-v或–verbose 示指令程。
-V或–version 示版本信息。
-w或–raw RAW傳輸協議連線狀況

使用sysv-rc-conf關閉更多系統服務(Service)

本文取自 宇若彎彎
安裝:
sudo apt-get install sysv-rc-conf
在我們開始搞亂它們之前,我要在這裡引入一些運行等級知識 ....全部開機進程執行順序如下:
  • 運行等級 S:開機進程中的第一個運行等級。/etc/init.d/rcS腳本將被調用到開啟並且/etc/rcS.d目錄下的所有進程將被執行。 
  • 運行等級 1:單用戶模式。/etc/rc1.d目錄下的所有進程將被執行。
  • 運行等級 2,3,4,5:在debian系統裡是多用戶環境,可能不包含圖形用戶界面。同樣的,在相應目錄下的進程將被運行。 
  • 運行等級 0:關閉計算機
  • 運行等級 6:重起計算機 
服務:
  • acpi-support 這個是關於電源支持的默認是1,2,3,4,5下啟動,我認為你可以把它調整到s級別。
  • acpid acpi的守護程序,默認是2-5開啟,我認為可以不用管。
  • alsa alsa聲音子系統,應該不用開啟它。
  • alsa-utils 這個服務似乎取代了alsa,所以開啟這個就可以了,我在S級別開啟它。
  • anacron 這是一個用於執行到時間沒有執行的程序的服務,我認為它無所謂,所以關了它,這個可以隨便。
  • apmd 也是一種電源管理,我認為電腦如果不是很老,它就沒有開啟的必要了。
  • atd 和anacron類似,我把它關了。
  • bluez-utiles 傳說中的藍牙服務,然後遺憾我沒有,所以關了。
  • bootlogd 似乎使用來寫log的,安全期間開著他也許比較好。
  • cron 指定時間運行程序的服務,所以開著比較好的。
  • cupsys 打印機服務,所以如果你有,就開啟吧。
  • dbus 消息總線系統,非常重要,一定要開。
  • dns-clean 撥號連接用的,如果不用,就關了它。
  • evms 企業卷管理系統,由於我並不明白什麼叫做企業卷,所以我關了它。
  • fetchmail 用於郵件守護,我關了它。
  • gdm gnome桌面管理器,我關了它,然後用startx啟動gnome。
  • halt 關機用的,不要更改
  • hdparm 這個我剛才有講,如果沒有ide硬盤也就不用開啟它了。
  • hotkey-setup 這個是給某些品牌筆記本設計的熱鍵映射,台式機用戶請關了它
  • hotplug 這個是用於熱插拔的,我已經測試過了,在某些電腦上關閉它會使聲卡無效,請在S級別開啟它。
  • hplip hp打印機專用的,應該可以關了它。
  • ifrename 網絡接口重命名,好像沒用,關了。
  • ifupdown 這個使用來打開網絡的,開著它。
  • ifupdown-clean 同上。
  • klogd linux守護程序,接受來自內核和發送信息到syslogd的記錄,並記錄為一個文件,所以請開著它。
  • linux-restricted-modules-common 這個使用來使用受限制的模塊的,你可以從/lib/linux-restricted-modules下查看,如果沒有什麼,你可以關掉它。
  • lvm 邏輯卷管理器,如果你沒有請關了它。
  • makedev 用來創建設備到/dev/請不要動他。
  • mdamd 管理raid用,如果你沒有請關閉它。
  • module-init-tools 從/etc/modules 加在擴展模塊的,這個一般開著。
  • networking 增加網絡接口和配置dns用,將它開啟。
  • ntp-server 與ubuntu時間服務器進行同步的,關了。
  • pcmcia 激活pcmica設備,遺憾我有生以來都沒有見過這樣的設備,關了它。
  • powernowd 用於管理cpu的客戶端程序,如果有變頻功能,比如amd的quite' cool 那麼就開啟它吧。
  • ppp 撥號用的,我關了它。
  • ppp-dns 一樣,也關了。
  • readahead 預加載服務,讓我想起了win的預讀,當然他們不同,它會使啟動變慢3-4妙,所以我關了它。
  • reboot 重啟用的,不要動。 sync; sync; sync; reboot (配合寫入緩衝資料的 sync 指令動作)
  • rmnologin 如果發現nologin,就去除它,在筆記本上不用開啟。
  • rsync rsync協議守護,請視情況而定。
  • screen-cleanup 一個清除開機屏幕的腳本,隨便。
  • sendsigs 重啟和關機時向所有進程發送消息。所以不要管它。
  • single 激活但用戶模式,不用管它。
  • stop-bootlogd 從2,3,4,5級別停止bootlogd,不用管它。
  • sudo 這個不用說吧,不用管它。
  • sysklogd 用於記錄系統日誌信息,不用管它。
  • udev 用戶空間dev文件系統,不用管它。
  • udev-mab 同上。
  • umountfs 用來卸載文件卷的,不用管它。
  • urandom 生成隨即數的,不知道怎麼用,不用管它。
  • usplash 那個漂亮的啟動畫面,但是我關了它,它也存在,所以想關他需要把內核起動參數中的splash一句刪掉。
  • vbesave 顯卡bios配置工具,不用管它。
  • xorg-common 設置x服務ice socket。不用管它。
  • redhat下常用的一些服務
  • anacron 不考慮系統downtime期間的cron服務
  • amd 自動安裝NFS守候進程
  • apmd 高級電源管理
  • arpwatch 記錄日誌並構建一個在LAN接口上看到的以太網地址和IP地址對數據庫
  • atd 用於at和batch的服務
  • autofs 自動安裝管理進程automount,與NFS相關,依賴於NIS
  • crond 為Linux下自動安排的進程提供運行服務.
  • Gpm 提供字符模式下對鼠標的支持.
  • Keytable 用於裝載鍵盤鏡像
  • Kudzu 硬件探測器
  • Netfs 安裝和卸載NFS、SAMBA和NETWARE網絡文件系統
  • Network 激活已配置網絡接口的腳本程序
  • Nfslock NFS鎖定
  • Pcmcia 安裝pcmcia卡(一般用於筆記本電腦)
  • Sshd OpenSSH服務器
  • Syslog 一個讓系統引導時啟動syslog和klogd系統日誌守候里程的腳本
  • Xfs Xwindow字型服務器,為本地和遠程X服務器提供字型集
  • Xinetd 支持多種網絡服務的核心守候程序

2016年3月17日 星期四

在php5使用pear中的Auth套件發生錯誤(消除錯誤訊息)

出現Deprecated: Assigning the return value of new by reference is deprecated in /usr/share/php/Auth.php on line 469 錯誤訊息
google一下,發現是Auth套件在php5運行時,發生的訊息。
不知如何修改,只好把該訊息清除掉:(清除php相容性警告)
vim /etc/php5/apache2/php.ini (debian系統)
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT 

安裝FCKeditor2.6.6線上編輯器心得

請下載FCKeditor官方網站http://ckeditor.com/download下載
  1. 解壓縮後,置於網站內.
  2. 修改fckeditor\fckconfig.js,改變FCKeditor工具列圖示
    FCKConfig.ToolbarSets["Default"] = [
        ['Source','Preview'],
        ['Cut','Copy','Paste','PasteText','PasteWord','-','SpecialChar','PageBreak'],
        ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
        ['FitWindow','-','About'],
        '/',
        ['Bold','Italic','Underline','StrikeThrough'],
        ['OrderedList','UnorderedList','-','Outdent','Indent'],
        ['JustifyLeft','JustifyCenter','JustifyRight','JustifyFull'],
        ['Link','Unlink'],
        ['Image','Flash','Table','Rule','Smiley'],
        '/',
        ['FontFormat','FontName','FontSize'],
        ['TextColor','BGColor','-','Subscript','Superscript']
    ] ;
  3. 修改fckeditor\fckconfig.js,改變表情符號為相對位址
    FCKConfig.SmileyPath = FCKConfig.BasePath + 'images/smiley/msn/' ;
    改為 FCKConfig.SmileyPath = '/fckeditor/editor/images/smiley/msn/' ;
  4. 檔案上傳功能啟用
    • fckeditor/editor/filemanager/connectors/php/config.php
      • $Config['Enabled'] = true ;
      • $Config['UserFilesPath'] = '/upfiles/' ; <--底下還有file,image,flash,media四個資料夾須建立
      • $Config['UserFilesAbsolutePath'] = '/webs/wles5/upfiles/' ;
    • 讓exe執行檔也能上傳
      • fckeditor\editor\filemanager\connectors\php\config.php
        $Config['AllowedExtensions']['File']    = 加上 , 'exe'
      • fckeditor\fckconfig.js
        FCKConfig.LinkUploadAllowedExtensions    = 加上 |exe
  5. 啟用FCKeditor系統(自建function)
    function getFCK($content='',$object='content',$height='480px') {
        include('./fckeditor/fckeditor.php');  //載入fckeditor套件
        $oFCKeditor = new FCKeditor($object) ; //建立fckeditor物件
        $oFCKeditor->BasePath  = './fckeditor/'; //設定fckeditor物件基本路徑
        $oFCKeditor->Width = '640px'; // fckeditor物件的長
        $oFCKeditor->Height = $height; //fckeditor物件的寬
        $oFCKeditor->Value = $content; //預設內容
        //$oFCKeditor->Create();
        return $oFCKeditor;
    }

在debian安裝pear

  1. apt-get install php-pear
  2. whereis pear
    • 可用pear指令直接安裝
    • 設定檔研究:/etc/pear/pear.conf
    • pear套件安裝在 /usr/share/php
  3. 安裝套件
    • pear install Db
      新版 pear install MDB2
      MDB2DB
      queryAllgetAll
      queryRowgetRow
      queryColgetCol
      queryOnegetOne
      autoExecuteautoExecute(需要载入extended module)
      autoPrepareautoPrepare(需要载入extended module)
      db與MDB2的差異(表格內容取自 某人的栖息地
    • pear install Auth
    • pear install pager
    • pear install channel://pear.php.net/Image_Transform-0.9.5
  4. 重要指令:

    pear install 套件名稱:安裝stable版套件
    pear install –f 套件名稱:安裝最新的stable版,若沒有則安裝beta版或alpha版
    pear install –a 套件名稱:安裝stable版套件,並將所有有可能相依的套件一併安裝
    pear install -o 套件名稱 : 安裝stable版套件,並將一定有相依的套件一併安裝
    pear list:顯示已安裝套件
    pear list-all:顯示可安裝套件(會搜尋較長時間)
    --------------------------------------------------------------------------------

    pear uninstall 套件名稱:移除某套件,但若與某套件相依將無法移除。
    pear uninstall –n 套件名稱:不管相依套件,強制移除。
    --------------------------------------------------------------------------------

    pear upgrade 套件名稱:升級某套件
    pear upgrade-all :一次升級所有套件
    --------------------------------------------------------------------------------

    pear channel-update pear.php.net:更新pear官網的下載channel。
    --------------------------------------------------------------------------------

    pear config-get php設定項:例如pear config-get php_dir可看到pear套件被安裝在那個路徑下。
    pear config-set php設定項:例如pear config-set php_dir=/usr/share/pear可以重新設定pear套件要安裝在/usr/share/pear下。
    pear config-show:顯示所有設定資訊

debian 之 Bind IPv6 設定

作業系統:Debian 5.07 / Ubuntu 10.10

實作目的為將 DNS 與網頁伺服器設定 IPv6 位址,以及增加 DNS 網域名稱伺服器 IPv6 解析記錄。過程主要包含這兩部主機的網路環境,以及 Linux Bind 兩部份的設定。

【網路設定】
ifconfig 指令顯示兩行
  inet6 addr: 2001:288:563f:0:20c:29ff:fe66:xxxx/64 Scope:Global
  inet6 addr: fe80::20c:29ff:fe66:xxxx/64 Scope:Link
表示網卡已支援 IPv6 通訊協定,只需增加 IPv6 固定位址設定即可。

vim /etc/network/interfaces

DNS 伺服器及網頁伺服器分別加入 IP 設定,如:
iface eth0 inet6 static
address 2001:288:xxxx::2
netmask 64
gateway 2001:288:xxxx::1
末行 Gateway 省略不指定也可以。

增加 IPv6 位址還有一個方法,加裝一張 IPv6 位址專用的網路卡「eth1」,在「/etc/networkinterfaces」裡加入設定:
auto eth1
iface eth1 inet6 static
  address   2001:288:xxxx::3
  netmask  64

網路服務重新啟動
sudo /etc/init.d/networking restart

以 ip 指令查看
ip -6 addr show dev eth0(或eth1)
顯示「2001:288:xxxx::x」IPv6位址:
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2001:288:xxxx:x:20c:29ff:fe15:21f2/64 scope global dynamic
       valid_lft 2591978sec preferred_lft 604778sec
    inet6 2001:288:xxxx::x/64 scope global
       valid_lft forever preferred_lft forever

【網路連線測試】
以「ping6」指令 ping 到「ipv6.l.google.com」
ping6 2404:6800:8005::6a

或使用另一部支援 IPv6 協定的電腦,ping 回這部主機:
ping6 2001:288:xxxx::2
ping6 2001:288:xxxx::3

如果 ping 的結果正常,表示兩部主機皆已具備 IPv6 網址。網頁伺服器部份至此「完工」,接下來進入「Bind9」DNS 伺服器設定步驟。

【DNS 伺服器設定】
sudo vi /etc/bind/named.conf
在 options 區段內有些 Bind 版本需加入以下內容:
listen-on-v6 { any; };
Debian 5.07 的 Bind 以「named -v」查看版本訊息,顯示為「BIND 9.6-ESV-R3」,不用這段設定也能運作,就先試著省略設定,等有問題再回來除錯。

DNS 正解檔設定
「/etc/bind/db.yyes.chc.edu.tw」裡列出正解設定,IPv6 的寫法除了IP位址不同外,另一差別只是將「A」改成「AAAA」,加上兩列關於這兩部主機新的設定:
dns             IN      AAAA    2001:288:xxxx::2
www           IN      AAAA    2001:288:xxxx::3

重新啟動DNS
sudo /etc/init.d/bind9 restart

【DNS 測試】
到另一部電腦以「nslookup」指令測試 DNS 伺服器,這部電腦同樣需有 IPv6 網路界面。Debian 5 如果沒有 nslookup 指令,需再額外用「sudo apt-get install dnsutils」指令新增。
開始 nslookup 指令測試:
指定學校 DNS 伺服器 IP 為查詢主機,「set type=aaaa」表示查詢模式為 IPv6,查詢學校網頁伺服器。
nslookup
> server 163.23.114.xx
Default server: 163.23.114.xx
Address: 163.23.114.xx#53

> set type=aaaa
> www.xxxx.chc.edu.tw
Server: 163.23.114.xx
Address: 163.23.114.xx#53
www.xxxx.chc.edu.tw has AAAA address 2001:288:xxxx::3

再用 Hinet DNS 伺服器查詢,確認從學術網路以外的地方也能解析網域名稱。
> server 168.95.1.1
Default server: 168.95.1.1
Address: 168.95.1.1#53
> set type=aaaa
> www.xxxx.chc.edu.tw
Server:         168.95.1.1
Address:        168.95.1.1#53

Non-authoritative answer:
www.xxxx.chc.edu.tw     has AAAA address 2001:288:xxxx::3

Authoritative answers can be found from:
xxxx.chc.edu.tw nameserver = dns.xxxx.chc.edu.tw.
dns.xxxx.chc.edu.tw     internet address = 163.23.114.xx
dns.xxxx.chc.edu.tw     has AAAA address 2001:288:xxxx::2

這樣應該就大功告成了!因為用其他的網域名稱查詢,出現錯誤訊息:)

相關網站:關於IPv6 BIND9 Server Howto 縣網 IPv6 檢測網站 網站IPv6支援檢測 Test your IPv6