網路開展事業或在網路創業賺錢的第一步:【架設24小時賺錢網站主機】比網頁設計更優先!

感謝您造訪 Linux主機伺服器架設技術基地。 你可進入替你架設主機.影片教你維護頁面,詳細瞭解Linux主機架設及相關技術維護影片教學(完整配套措施),有主機馬上可以架設網站營運,完全無限制!

租用不如自有主機!聰明的網站經營者都選擇架設Linux主機伺服器做為網站運作平台,因功能完整又強大,免費架站程式超多!完全沒有版權問題,超強『防駭客攻擊與入侵』及安全防護可以讓你無後顧之憂。

                    架設主機.影片教你維護: http://por.tw/linux/new-E_learning/index.php

Linux主機伺服器架設技術基地  維護團隊  敬上
瀏覽模式: 普通 | 列表

郵件伺服器 Postfix 功能概述

郵件伺服器 Postfix 功能概述

Postfix支援的環境:
Postfix 可以在 AIX、BSD、HP-UX、IRIX、LINUX、MacOS X、Solaris、 Tru64 UNIX,以及其它 UNIX 平台上執行。
它需要 ANSI C、 POSIX.1 函式庫,以及 BSD 通訊插座(sockets)。
要運行 Postfix 的檔案系統必須有以下條件:若變更檔案名稱,其 inode 編號仍能保持不變,而且,在 fsync() 函式成功回傳之後,能正常地儲存信件,甚至當檔案在稍後的時間點改變檔名時亦然。

Postfix的設定方式簡單、進階門檻低,更重要的是,Postfix採用模組化的設計,讓郵件伺服器運作穩定、效能卓越、安全性無虞。
Postfix和DNS、POP3、IMAP、資料庫、LDAP、SASL、Dovecot、SMTP授權認證、TLS憑證等組合應用。
Postfix的傳輸限制和內容過濾功能,協助網管人員阻絕垃圾郵件。
運用外部程式,建立過濾垃圾郵件及病毒信件的機制。
建立DomainKeys、DKIM,以防止網域被人偽造。
使用原始碼編譯安裝Postfix和各種模組的方法。

attachments/201304/2568342678.jpg

以下是 Postfix 主要功能列表:
其中某些功能需要搭配第三方提供的函式庫 (例如: LDAP, SQL, TLS)。
有些功能,必須是作業系統有提供支援,而且 Postfix 知道如何去運用時,才會正常可用。
(例如:IPv6,連接快取)。

Postfix支援的協定:
Postfix 2.2     Connection cache for SMTP
Postfix 2.3     DSN status notifications
Postfix 2.3     Enhanced status codes
Postfix 1.0     ETRN on-demand relay
Postfix 2.2     IP version 6
Postfix 1.0     LMTP client
Postfix 2.0     MIME (including 8BITMIME to 7BIT conversion)
Postfix 1.0     Pipelining (SMTP client and server)
Postfix 1.0     SASL authentication
Postfix 2.2     TLS encryption and authentication
Postfix 1.1     QMQP server
棄置信件控管
Postfix 2.1     Access control per client/sender/recipient/etc.
Postfix 2.1     Address probing callout
Postfix 1.1     Content filter (built-in, external before queue, external after queue)
Postfix 2.1     Greylisting plug-in
Postfix 2.1     SPF plug-in
Postfix 2.2     SMTP server per-client rate and concurrency limits
支援的資料庫
Postfix 1.0     Berkeley DB database
Postfix 2.2     CDB database
Postfix 1.0     DBM database
Postfix 1.0     LDAP database
Postfix 1.0     MySQL database
Postfix 2.0     PostgreSQL database
支援的信箱格式
Postfix 1.0     Maildir and mailbox format
Postfix 1.0     Virtual domains
位址處理
Postfix 2.2     Masquerading addresses in outbound SMTP mail
Postfix 2.2     Selective address rewriting
Postfix 1.1     VERP envelope return addresses
Linux主機防火牆規則(Linux主機伺服器架設技術)

Linux 安裝完畢,便已內建基本的防火牆規則,它是採 IPTABLES 來進行封包過濾的動作。
預設的規則列主要在防止外面主機連線至主機,被阻擋的服務有 FTP, SSH, Samba網芳等。


Linux主機防火牆基本原理:

設定檔

設定規則列位置及套用方式是 Linux 專用的方法,與其他 Debian OS 不同。

    * 使用工具: iptables
    * 規則列位置: /etc/rc.local
    * 修改後套用
      root@dns:~# service rc.local start
    * 註: rc.local 原本設計是為開機後要手動執行特定工作的設定區,Linux 把它借來放置防火牆規則列


Linux主機防火牆基本觀念:

    * IPTABLES = "/sbin/iptables"
      這一行是指:設定 IPTABLES 這個變數,以後只要看到 $IPTABLES 這個字串,就代表 /sbin/iptables 這個指令

    * $IPTABLES -F
      這一行是指:把之前所有已設過的規則清空(flush)


Linux主機防火牆封包進出主機方向:

在 /etc/rc.local 內之「設定 filter table 的預設政策」會看到三行設定值,如下:

###-----------------------------------------------------###
# 設定 filter table 的預設政策
###-----------------------------------------------------###
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

筆者將其簡化說明如下:

    * INPUT   --> 外面要進入主機的網路封包,主要用於規範外面如何連線至主機上的各種服務,與 NAT 內網無關
    * OUTPUT  --> 從主機出去的網路封包。
    * FORWARD --> 從 B 網卡轉至 A 網卡,規範於有 NAT 主機或透通式防火牆用途時,內轉外網路封包之控管。
    * 依上例,預設所有的封包皆開放,不阻擋


INPUT規則列的寫法


規則列的寫法,是把預設政策擺在最下面一行,例外規則擺上面,如下所例

# 只有本主機所屬網段才能連到這台主機的 ssh port 22
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 203.68.102.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j DROP


上面的規則列可以用下面這張圖來表達,預設 22 埠是不被連線的,但有四個綠點例外。
Iptables sample.png



進階處理
取消某個通訊埠的阻擋


只要把所有該 port (--dport)的規則列前面加上 # 變成註解,或直接刪除即可,以 FTP 示例如下:

# 只有本主機所屬網段才能連到這台主機的 FTP SERVER port 21
# $IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 21 -j ACCEPT
# $IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 21 -j ACCEPT
# $IPTABLES -A INPUT -p tcp --dport 21 -j DROP

# 只有本主機所屬網段才能連到這台主機的 ssh port 22
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 203.68.102.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j DROP




新增例外連線範圍

若要新增例外連線點,一定要加在相同埠值區塊最後一行之前(建議第一行),假設我們要加中華電信某個網段 59.127.0.0/16 至 Port 22 的例外點上,做法如下:

    * 編輯 /etc/rc.local (紅字為新增部分)
      root@dns:~# vi /etc/rc.local

# 只有本主機所屬網段才能連到這台主機的 ssh port 22
$IPTABLES -A INPUT -p tcp -s 59.127.0.0/16 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 203.68.102.0/24 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 22 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22 -j DROP


    * 套用新規則
      root@dns:~# service rc.local start



新增某個通訊埠連線限制
以 TCP 1723 為例

假設主機有架 VPN 服務,經由「netstat -nlp」查詢後得知其使用的埠值為 TCP 1723。因此,為避免不具善意的網客隨便亂測密碼,我們可以在 /etc/rc.loal加上其連線限制。

假設允許的網段為

   1. 校內: 163.26.182.0/24
   2. 校外某點: 220.130.230.76

    * 編輯 /etc/rc.local,在 IPv4 的設定區(就是 /sbin/ip6tables -F 之上),依 port 值排序,大約在網芳區塊後面加上。
      root@dns:~# vi /etc/rc.local(紅字為新增部分)

 ......

$IPTABLES -A INPUT -p tcp --dport 139 -j DROP
$IPTABLES -A INPUT -p tcp --dport 445 -j DROP
$IPTABLES -A INPUT -p udp --dport 137 -j DROP
$IPTABLES -A INPUT -p udp --dport 138 -j DROP

$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 220.130.230.76 --dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 1723 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 1723 -j DROP

/sbin/ip6tables -F
/sbin/ip6tables -A INPUT -p tcp --dport 21 -j DROP
/sbin/ip6tables -A INPUT -p tcp --dport 22 -j DROP
/sbin/ip6tables -A INPUT -p tcp --dport 23 -j DROP
 ......


    * 套用新規則列
      root@dns:~# service rc.local start



以 ICMP 為例

預設不讓外面網路任意點可以 PING 本主機,造就本主機不存在的假象,但選定數點開放偵測。假設允許的網段為

   1. 教網中心:163.26.200.0/24
   2. 校內: 163.26.182.0/24
   3. 校外某點: 220.130.230.76


    * 編輯 /etc/rc.local,在 IPv4 的設定區,Port 21 規則列上方。
      root@dns:~# vi /etc/rc.local(紅字為新增部分)

 ......


$IPTABLES -A INPUT -p icmp -s 163.26.182.0/24 -j ACCEPT
$IPTABLES -A INPUT -p icmp -s 163.26.200.0/24 -j ACCEPT
$IPTABLES -A INPUT -p icmp -j DROP

# 只有本主機所屬網段才能連到這台主機的 FTP server port 21
$IPTABLES -A INPUT -p tcp -s 163.26.182.0/24 --dport 21 -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 127.0.0.1 --dport 21 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 21 -j DROP
 ......


    * 套用新規則列
      root@dns:~# service rc.local start



防止 DoS 攻擊

筆者朋友主機最近遭到 DoS 攻擊,我本來以 iptables -m limit 來處理,但發現它會不分來源一律阻擋,這樣無辜的 IP Address 也受到限制,非常不公平,思考並搜尋了一個晚上,後來決定以限制單一 IP 同時連線數(connlimit),來處理此類攻擊,它會把單一 IP 來源同時要求服務(--syn)的連線數,限制在一定的數量以內,正常用人工手動點網頁,就算該網頁有 FrameSet ,應也不致於大過 12(自已用手拼命點得到的結論)才對。因此在設定此限制時,以每一個 IP 同時連線數不得超過 15 為參數,並進行後續的觀察。在設定後,經過一段時間的觀察,CPU 再也不會一直維持在 90-100% 高檔了,大約只會偶而跳至 60-70% ,一般皆在 10 % 以內。重點是它只 tcp-reset 有問題的來源,無辜的人仍可享受應有的速度。

設定方式:

    * 請確認 syslog 有下列參數
          o Linux 在 /etc/syslog.conf
          o Ubuntu 在 /etc/rsyslog.d/50-default.conf

# iptables 的記錄可以寫入 /var/log/kern.log
kern.*                          -/var/log/kern.log

    * 先把可能攻擊的 ip 寫入 /var/log/kern.log ,再把它的封包無聲的丟掉;以同時 15 個連線為限。

$IPTABLES -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 -j LOG --log-level 4
$IPTABLES -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 -j REJECT --reject-with tcp-reset

    * 分析攻擊可能來源
          o 螢幕觀看(以 tab 鍵分隔欄位)
            root@dns:~# cat /var/log/kern.log |awk '{print $1 " " $2 " " $9}'
          o 轉至純文字,以供下載至試算表統計
            root@dns:~# cat /var/log/kern.log |awk '{print $1 " " $2 " " $9}' > /root/dosatt.txt
            呈現的結果部分截取如下:

May    10    SRC=60.250.181.66
May    10    SRC=60.250.181.66
May    10    SRC=60.250.181.66
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.251.81.94
May    10    SRC=60.250.181.66
May    10    SRC=60.250.181.66

    * 鎖了吧,可疑者!
      若某個 IP 來源您不認識,但每天常常超過,人工點網頁的極限(同時超過 15 個連線數),可以再加以下規則,把它鎖了吧!


$IPTABLES -A INPUT -i eth0 -p tcp -s 60.250.xxx.xx --dport 80 -j DROP

減少 Linux 上重複檔案的佔用空間

減少 Linux 上重複檔案的佔用空間

警告: 本文所說明之內容僅適合進階使用者應用。未經適當使用,可能會造成系統無法正常運作。

不知道有多少人計算過,其實在你的 Linux 檔案系統中,有不少重複的相同檔案。特別是圖檔、說明文件與修改說明。若是拿將檔案整併,應該可以省下些空間。

於是 Julian Andres Klode (chf) 參考 hardlink.py 的概念寫了一個 hardlink 工具,這個工具會幫你從指定的目錄中找出相同的檔案,以 Hard Link 的方式將多份檔案刪減成一份,如此便可以節省硬碟空間。白話一點說明就是刪掉多重檔案的儲存空間,在檔案系統的目錄中新增一筆連結資訊到同一份儲存位置。

我試著對我的 Debian Sid 上的 /usr 下達這個指令,共找到 11391 個檔案,省下大約 135 MiB 的空間。

attachments/201304/9061220739.jpg

由於 Hard Link 的本質特性,此指令只能用在同一個分割區下,建議不要對全系統下此指令。此外,若已經被 “hard link” 過得檔案分屬不同的軟體,未來若升級軟體時,可能會覆蓋掉共用的檔案而造成軟體無法運作,這點風險請自行承擔。建議使用在較少更新的 Debian Stable 版本。

遠端備份(Linux主機伺服器架設技術)

遠端備份(Linux主機伺服器架設技術)

rSync 是遠端備份資料的機制,而且這個機制是跨平台的,也就是不限作業系統類型。
建議的作法是,用 Linux 架一台 rSync Server ,供其他 Linux Server 或 Windows 平台備份資料。

attachments/201304/9782733307.jpg

在架設上,Linux Server 的方式最簡易,但由於其預設檔名編碼為 Big5 碼,鑑於相容,筆者建議採用 Linux 系列來架設。
但是 Linux 上沒有 Linux server 的 rysnc 快速設定工具, 所以若要把 Linux 當成 rsync server, 就得依下面步驟來處理。
rSync伺服器

    * 修改 /etc/default/rsync
      RSYNC_ENABLE=false → 改成RSYNC_ENABLE=true


    * 到現有的 Linux server 產生伺服器設定檔 /etc/rsyncd.conf 及 /etc/rsyncd.secrets 複製到 Linux 的 /etc 底下。再依以下 rsyncd.conf 示例中所示, 必須建立 /mybk1 資料夾來放備份資料。
          o rsyncd.secrets 的內容為「帳號:密碼」, 示例如下

            my_backup:my_backup_passwd

          o 權限改為 400
            user@Linux:# sudo chmod 400 rsyncd.secrets

          o rsyncd.conf 檔示例

log file = /var/log/rsyncd.log
    [mybk1]                   
    path = /mybk1             
    auth users = my_backup    
    uid = root                
    gid = root                
    secrets file = /etc/rsyncd.secrets
    read only = no

    [mybk2]            
    path = /mybk2             
    auth users = my_backup    
    uid = root                
    gid = root                
    secrets file = /etc/rsyncd.secrets
    read only = no

註:[mybk1]是區段名稱, 從[mybk1]至read only = no為一區段, 而一個設定檔, 允許設定多個區段

    *
          o 建立 /mybk1 及 /mybk2 資料夾
            user@Linux:# sudo mkdir /mybk1
            user@Linux:# sudo mkdir /mybk2



rSync客戶端

    * 到現有的 Linux server 產生客戶端執行檔 bk-Linux.sh 及 rsyncd.secrets 丟至 rsync 客戶端電腦上的 /root 底下, 這兩個檔案的擁有者必須為 root , 而且必須 su 至 root 權限來執行
          o Client 端的 rsyncd.secrets 必須注意兩件事
         1. 內容只含密碼

            my_backup_passwd

         2. 檔案權限必須設定為 400 (-r--------)
          o Client 端的 bk-Linux.sh 內容示例如下

#! /bin/sh

/usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /var/www my_backup@rsync.server::mybk1

註:把 /var/www 備份至 rsync.server這台主機的 mybk1 區段

    * 對 bk-Linux.sh 賦予執行權
      user@Linux:# sudo chmod +x /root/bk-Linux.sh

    * 執行備份動作
      user@Linux:# sudo /root/bk-Linux.sh

    * 設定 crontab , 定時執行 /root/bk-Linux.sh
      user@Linux:# sudo crontab -e

      0 3 * * * /root/bk-Linux.sh

      註:每日 3 時執行 bk-Linux.sh 以備份資料


在 Windows 用 rsync 備份至 Linux 上的 rsync server

    * 請參考下列網址:
      http://myip.tw/itsmw/index.php/DeltaCopy

rSync還原

    * 不論您的 client 端為何種 OS,一律建議使用 FileZilla,使用 SFTP 模式取回即可。請參考下面動畫示範:
      http://myip.tw/Linuxdoc/LinuxBase/m6_filezilla_sftp.htm

DNS雙向解析服務(Linux主機伺服器架設技術)Domain Name Server

本文並不在介紹從無到有寫出 dns 完整的設定檔,主要還是先利用 Linux/Linux Server 提供的工具,產生基本設定檔,再進一步解釋其中涵義,以及如何修改新增/修改主機名稱對映。

DNS開啟Port

    * TCP anynet 53
    * UDP anynet 53
    * TCP localhost 953 (管理指令用)

全球DNS管理

DNS是 Domain Name Server 的簡稱,它的功能在於把 IP(v4 and v6) 位址與英文網址建立起對照表,以提供雙向解析的服務。
在 InterNet 上,所有的 DNS Server 是以階層的方式,層層授權,層層管理。例如:「edu.tw」是教育部電算中心的網域,電算中心會為其架 DNS Server,管理所有的學術網路。
由此,教育部的 DNS Server 授權縣教育網路中心的 DNS Server 自行管理【tnc.edu.tw】的網域。
最後再由 dns.tnc.edu.tw 授權各校的 DNS Server 自行管理學校網域。更詳細的資料,請參考上面所列兩篇文章。

 Domain Name 皆是由 dns.tnc.edu.tw (163.26.200.1) 授權出去的【網域】,所以務必要建置 DNS Server 啟用該網域。
至於特定用途的網站,才由 dns.tnc.edu.tw 指定網址。如:《 xoops.tnc.edu.tw 》、《 x.tnc.edu.tw 》、《 freesf.tnc.edu.tw 》等,皆在 163.26.200.1 中直接指定網址。

安裝與初步設定
DNS 查詢指令簡介
Client DNS 查詢過程

在介紹查詢指令前,我們要先了解什麼是 DNS Cache,而它又和 Client 的 DNS 有關,因此本文在此做一簡單說明。
Client 端的 IP查詢過程

別台 DNS Server 會 cache 學校 dns 記錄,因此 dns server 若做任何變動,Client 電腦並不會立即知道(被 cache 騙了)。
因此,若有變更 dns 記錄,除了要修改 serial 外,想查詢是否設定成功,只得對自己查,這也是為何 dig 指令後面必須加上 @163.26.xxx.xxx 參數的原因。

在 Linux 上常用的 DNS 查詢指令

    * nslookup dc1es.tnc.edu.tw
      直接查詢 dc1es.tnc.edu.tw 的 IP 位址
    * dig dc1es.tnc.edu.tw
      查詢 dc1es.tnc.edu.tw 網域狀況,詢問的對象視 /etc/resolv.conf 內 nameserver 的設定值而異
    * dig @163.26.200.1 dc1es.tnc.edu.tw
      向 163.26.200.1 查詢 dc1es.tnc.edu.tw 網域狀況
    * dig @163.26.200.1 dns.dc1es.tnc.edu.tw AAAA
      向 163.26.200.1 查詢 dns.dc1es.tnc.edu.tw 的 IPv6 網址
    * dig -x 163.26.182.1
      查詢 163.26.182.1 的反解記錄
    * dig @163.26.200.1 -x 163.26.182.1
      向 163.26.200.1 查詢 163.26.182.1 的反解記錄
    * dig @163.26.200.1 -x 2001:288:75a6::1
      向 163.26.200.1 查詢 IPv6 2001:288:75a6::1 的反解記錄
    * dig @163.26.182.1 dc1es.tnc.edu.tw MX
      向 163.26.182.1 查詢收件人為 xxx@dc1es.tnc.edu.tw 的信件會轉送至何處
    * dig @163.26.182.1 dns.dc1es.tnc.edu.tw MX
      向 163.26.182.1 查詢收件人為 xxx@dns.dc1es.tnc.edu.tw 的信件會轉送至何處
    * dig @168.95.1.1 yahoo.com NS
      向 168.95.1.1(中華電信 DNS Server) 查詢 yahoo.com 網域是由那些 Name Server 來服務



DNS Server套件

Linux/Linux Server 已預設裝妥 Bind9 這一套 DNS Server 套件及其設定工具 ols3dns ,使用其產生器,所製造出的設定檔結構解釋如下:

    * 設定檔位置在 /etc/bind/ 底下


    * 無限制遞迴查詢(預設值)
          主控檔: named.conf
            其功能在於指定各網域(Zones)的設定檔名稱暨位置,以下各設定檔是以 ols3dns 產生器為例來進行說明,實務上,檔名只要在 named.conf 定義清楚即可,不一定要遵循下面的範例

rndc.key     

遠端控制(Remote Name Daemon Control)金鑰

RNDC詳解: http://dns-learning.twnic.net.tw/bind/security.html#two
named.ca     最頂層 dns server 定義,在 named.conf 設定時必須使用 type hint 來指定
db.xxxx.tnc.edu.tw     IPv4/IPv6共用正解檔
db.163.26.xxx     IPv4反解檔
2001.288.75xx.rev     IPv6反解檔
localhost     IPv4/IPv6 localhost 正解檔
rev-127.0.0     IPv4 localhost 反解檔
rev.local6     IPv6 localhost 反解檔


    * 限制遞迴查詢設定檔結構
          主控檔: named.conf + auth_zones.conf
            named.conf 主內容在限制遞迴查詢,而可查詢的網域改放在 auth_zones.conf
          其他檔案與上面一致


    * port 值: TCP/UDP 53 ; localhost: 953
    * 手動啟動 | 停止 DNS 服務: /etc/init.d/bind9 start | stop | restart


設定檔內關鍵用語解說

筆者整理了 Bind9 各設定檔常出現的關鍵用語如下,請參考:
$TTL 86400     對方主機查詢完畢,其值要保留(快取)的秒數,例:86400秒
$ORIGIN     宣告本設定檔所列之所有記錄出自於那個網域,最後必須以「.」做結尾,否則會自動再加上網域名稱
$ORIGIN subnet     授權自己的子網域給另一台 DNS Server
@     代表「Zone」

以 db.xxx.tnc.edu.tw 設定檔為例,【@】指的是 xxx.tnc.edu.tw。
以 localhost 設定檔為例,【@】指的是 localhost
IN SOA     開始授權(Star of Authority),後面接了兩個參數是指「本 zone 的管理主機名」及「本 zone 的管理者」
IN NS     負責的 Name Server 主機名稱為何?
IN A     為主機名稱賦予 IPv4 位址
IN AAAA     為主機名稱賦予 IPv6 位址
IN CNAME --> 別名     例: www,ftp,s1...皆是 dns 的分身
IN PTR --> 反解     某 IP 所代表的主機名稱
IN MX -->Mail eXchange     轉信,例:
    mail.tw IN MX 0 spamgw.tw
    mail.tw IN MX 10 mail.tw

說明如下:

   1. 把【xxx@mail.tw】信件先轉給【spamgw.tw】(註: 有兩筆 MX 記錄時,數值低的有較高的優先權)
   2. 【spamgw.tw】收了信之後(並處理之),發現原來指定收信人是在【mail.tw】,因此再把它轉回給【mail.tw】
   3. 如果 spamgw 故障,理論上會送至第二優先 mail.tw(它自己),但依游戲規則,就算是 mail.tw 它自己,它還是會去問 dns.tw ,信件 xxx@mail.tw 的 MX 為何?結果 dns.tw 說,要優先送 spamgw.tw。簡言之,設了 MX 之後,最優先的那台主機一定不可以故障,否則會收不到信件

    * 注意:mail 與 dns 同位址時,不可以採用 CNAME 的設法,一定要用 IN A,才可正常收發信件

限制遞迴查詢 vs 不限制

限制遞迴查詢的意思是,本 DNS Server 只回答所轄網域的問題,其餘不答。不限制的話,就沒有上述限制。例如:當一台 client 向 DNS Server(163.26.182.1)詢問 tw.yahoo.com 時,若有做限制,那麼它不會回答,因為 tw.yahoo.com 不歸 dc1es.tnc.edu.tw 所管。反之,若不做任何限制,它會依其根設定檔(named.ca)一層層往上問,幫 client 找到 tw.yahoo.com 的 IP Address 並回覆之。

可是,貴校可能已設妥限制,而且學校的電腦也都以本校的 DNS Server 為查詢主機,為何還是可以查得到 tw.yahoo.com ?那是因為在 named.conf 內的:「acl allow_clients { 127.0.0.1; 163.26.182.0/24; 2001:288:75a6::/48; };」設定中有說明,要開放給校內的機器查詢。

限制遞迴查詢雖然會造成一些不方便,但它會有較高的安全性,尤其是對 ARP 類病毒偽造網址攻擊,有較高的防禦能力。不過未來若 IPv6 only 實施(沒有 ARP 機制,改用 fe80:...機制),其實限制遞迴查詢,就比較沒有存在意義(目前是 IPv4 與 IPv6並存)。


Linux Server初步設定方法

有兩個方式來設定 DNS 參數

   1. 在設定管理密碼(Linux-setup)時勾選【這台主機要擔任 DNS Server 嗎 ?】,就會在 /etc/bind/ 底下產生不限遞迴查詢的相關設定檔
      注意:本方式僅適用於裝完 Linux Server,第一次登入時。因為 Linux-setup 本身會改變很多設定值(不只 dns),若機器已順利運作多時,勿用。
   2. 直接在終端機介面下指令

   1. 不限遞迴查詢: root@dns~# ols3dns
   2. 限制遞迴查詢: root@dns~# ols3dns --no-recursive
   3. 以大成國小為例
      #-----------------------------------------------------#

      # 臥龍小三 工 具 箱 (1.0.7Linux) Copyright 2006 OLS3  #
      # DNS 自動產生器 1.0.7Linux for Linux          #
      # All rights Reserved.                #
      #-----------------------------------------------------#

      請輸入網域名稱? 例如: jmjh.tnc.edu.tw
      dc1es.tnc.edu.tw
      請輸入IP前三個數字? 例如: 163.26.167
      163.26.182
      請輸入第一台主機的第四個IP?
      例如: 163.26.167.1 的 1
      1
      您要架設第二部 DNS 嗎?(Y/N)
      N

      Done!


Linux初步設定方法

與 Linux Server 一樣,有兩個方式來產生基本的 DNS 設定檔

   1. 在設定管理密碼(Linux-csetup-utf8/Linux-csetup)時,在最後一個問題【這台主機要擔任 DNS Server 嗎 ?】回答「Y」,就會在 /etc/bind/ 底下產生不限遞迴查詢的相關設定檔。
      注意:本方式僅適用於裝完 Linux Server,第一次登入時。因為 Linux-setup 本身會改變許多設定值,若機器已順利運作多時勿用。
   2. 先把終端機的字元編碼改為 Big5 ,再下指令

   1. 不限遞迴查詢: root@dns~# ols3dns
   2. 限制遞迴查詢: root@dns~# ols3dns --no-recursive
   3. 設定過程與上例一樣,請參考上面文件



進階設定
IPv4 的正反解
新增一筆IPv4位址正解

要新增一筆正解記錄只要在正解檔「 /etc/bind/db.xxx.tnc.edu.tw 」內,加上一筆 IN A 的記錄,再把 serial n加1,並重新啟動 DNS Server 即可。 下文,筆者以新增 spamfilter.dc1es.tnc.edu.tw 網址,指向 163.26.182.250 IPv4 位址為例進行解說。

   1. 編輯 /etc/bind/db.xxx.tnc.edu.tw

      $TTL 86400
      @  IN  SOA dns.dc1es.tnc.edu.tw. admin.dns.dc1es.tnc.edu.tw. (
                 2006030801 ; 這個數字是序號(serial no.) , 每修改一次就要加 1 號
                 86400 ; refresh
                 1800 ; retry
                 1728000 ; expire
                 1200 ; Negative Caching
                 )
         IN   NS dns.dc1es.tnc.edu.tw.
      dns IN A 163.26.182.1
      @ IN MX 0 mail.dc1es.tnc.edu.tw.
      ;網域名稱 dc1es.tnc.edu.tw 也要賦予一組 IPv4 位址
      dc1es.tnc.edu.tw. IN A 163.26.182.1
      ;
      s1     IN   CNAME dns.dc1es.tnc.edu.tw.
      www    IN   CNAME dns.dc1es.tnc.edu.tw.
      ftp    IN   CNAME dns.dc1es.tnc.edu.tw.
      proxy  IN   CNAME dns.dc1es.tnc.edu.tw.
      ;
      mail  IN  A  163.26.182.1
      s2    IN  A  163.26.182.2
      nt    IN  A  163.26.182.3
      s4    IN  A  163.26.182.4
      s5    IN  A  163.26.182.5
      nat   IN  A  163.26.182.234
      ;為 spamfilter 加上 IN A 的記錄
      spamfilter IN A 163.26.182.250  
      註1:正反解設定檔是用「;」來標示註解文字,不是「#」,請勿用錯
      註2:每一行都要靠左,除非本行是上一行的附屬設定

   2. 重新啟動 bind9
      root@dns:~# service bind9 restart
   3. 檢查重新啟動的訊息是否正常
      root@dns:~# tail -50 /var/log/syslog



IPv4反解問題


IPv4正解,可以由上層 DNS Server 授權某任一 IPv4 位址來擔任 DNS 工作,不受 IPv4 網段影響。但反解就不行,因為它受到「至少要一個完整 C Class 網段」的限制。因此,所有分配到 163.26.xxx.1 的學校,可以幫其他前三個數字一致的機器做反解,但 163.26.xxx.129 就不行。這也是為什麼,我們可以向中華電信申請 dns 名稱正解管理權,但反解就不行,只能靠它幫忙代管的原因。

基於上述原因,若貴校有非反解不可的原因,又不在 163.26.xxx.0 網段上,可以連絡教網中心主任協助處理。至於 IPv6 的部分,因為所配發網段皆是完整的 prefix 48 ,所以不會有此一困擾。不過如果貴校如果剛好就分配到 163.26.xxx.0 網段,則可以經由編輯 /etc/bind/db.163.26.xxx 來新增一筆 IPv4 反解記錄。
$TTL 86400

@   IN   SOA   dns.dc1es.tnc.edu.tw.   admin.dns.dc1es.tnc.edu.tw. (
      2000082620  ; serial 要加 1
      86400  ; refresh
      1800  ; retry
      1728000  ; expire
      1200  ; Negative Caching
      )
      IN   NS   dns.dc1es.tnc.edu.tw.

1     IN   PTR   dns.dc1es.tnc.edu.tw.
2     IN   PTR   s2.dc1es.tnc.edu.tw.
3     IN   PTR   nt.dc1es.tnc.edu.tw.
4     IN   PTR   s4.dc1es.tnc.edu.tw.
5     IN   PTR   s5.dc1es.tnc.edu.tw.
234   IN   PTR   nat.dc1es.tnc.edu.tw.
250   IN   PTR   spamfilter.dc1es.tnc.edu.tw.


手動增加 IPv6 的正反解
沒限制遞迴查詢(預設)
修改 named.conf

把紅字的部分, 加至 /etc/bind/named.conf
options {

     directory "/etc/bind";
     allow-transfer {
        163.26.182.2; // Secondary DNS
     };
     listen-on-v6 { any; };
};

logging {
     category lame-servers{null;};
};

zone "." {
     type hint;
     file "named.ca";
};

zone "localhost" {
     type master;
     file "localhost";
};

zone "0.0.127.in-addr.arpa" {
     type master;
     file "rev-127.0.0";
};

zone "dc1es.tnc.edu.tw" {
     type master;
     file "/etc/bind/db.dc1es.tnc.edu.tw";
};

zone "182.26.163.in-addr.arpa" {
     type master;
     file "db.163.26.182";
};

// ::1 的反解檔
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa."{
     type master;
     file "rev.local6";
};

// 2001.288.750b 的反解檔
zone "6.a.5.7.8.8.2.0.1.0.0.2.ip6.arpa." {
     type master;
     file "2001.288.75a6.rev";
};


繼續修改 db.xxx.tnc.edu.tw

$TTL 86400
@  IN  SOA dns.dc1es.tnc.edu.tw. admin.dns.dc1es.tnc.edu.tw. (
           2006030802 ; serial 要加 1
           86400 ; refresh
           1800 ; retry
           1728000 ; expire
           1200 ; Negative Caching
           )
   IN   NS dns.dc1es.tnc.edu.tw.
dns  IN  A    163.26.182.1
     IN  AAAA 2001:288:75a6::1
;上面 IN AAAA 前面一定要留空白, 代表是要繼續設 dns 主機的 AAAA(IPv6) 記錄
;
@ IN MX 0 mail.dc1es.tnc.edu.tw.
;
dc1es.tnc.edu.tw. IN A 163.26.182.1
      IN  AAAA  2001:288:75a6::1
;上面兩行指「網域名稱 dc1es.tnc.edu.tw 也賦予一組 IPv4 及 IPv6 位址」
;
s1     IN CNAME dns.dc1es.tnc.edu.tw.
www    IN CNAME dns.dc1es.tnc.edu.tw.
ftp    IN CNAME dns.dc1es.tnc.edu.tw.
proxy  IN CNAME dns.dc1es.tnc.edu.tw.
;
mail   IN  A     163.26.182.1
       IN  AAAA  2001:288:75a6::1
s2     IN  A     163.26.182.2
nt     IN  A     163.26.182.3
s4     IN  A     163.26.182.4
s5     IN  A     163.26.182.5
nat    IN A  163.26.182.234
       IN AAAA  2001:288:75a6::234  
spamfilter IN A  163.26.182.250  
;經過修改 spamfilter.dc1es.tnc.edu.tw 便會有 IPv4 及 IPv6 兩筆記錄


修改 localhost 新增 ::1 正解

$TTL 86400
@    IN   SOA    dns.dc1es.tnc.edu.tw.    admin.dns.dc1es.tnc.edu.tw. (
      2000082620 ; serial 要加 1
      86400 ; refresh
      1800 ; retry
      1728000 ; expire
      1200 ; Negative Caching
      )
     IN   NS   dns.dc1es.tnc.edu.tw.
;
localhost. IN  A    127.0.0.1
           IN  AAAA  ::1

    * 註:紅字為修改之處



建立 ::1 及 2001.288.75xx.rev 反解檔

    * 建立 ::1 IPv6 的 localhost 反解
      root@dns~# vi /etc/bind/rev.local6

$TTL 86400
@ IN  SOA  dns.dc1es.tnc.edu.tw. admin.dns.dc1es.tnc.edu.tw. (1 15m 5m 30d 1h)
    IN   NS  dns.dc1es.tnc.edu.tw.

; (1 15m 5m 30d 1h) 中的 1 是序號, 每次修改都要加 1

;;

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. IN PTR localhost.

註:除了 IN NS 這一行為 SOA 這一行的附屬參數,所以左側留有空白外,其餘各行前面不可留空白

    * 建立 IPv6 反解檔
      root@dns~# vi /etc/bind/2001.288.75a6.rev

$TTL 86400
$ORIGIN 6.a.5.7.8.8.2.0.1.0.0.2.ip6.arpa.
@  IN   SOA dns.dc1es.tnc.edu.tw. admin.dns.dc1es.tnc.edu.tw. (1 15m 5m 30d 1h)
   IN   NS   dns.dc1es.tnc.edu.tw.
;;
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0  IN  PTR  dns.dc1es.tnc.edu.tw.
234.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0  IN  PTR  nat.dc1es.tnc.edu.tw.

限制遞迴查詢

只需修改下面這兩個設定檔,其餘設定值與不限遞迴查詢一致
修改 named.conf

options {
     directory "/etc/bind";
     allow-transfer {
        163.26.182.2;
     };
     listen-on-v6 { any; }; //要加上這一行
};


logging {
     category lame-servers{null;};
};

// 把學校 IPv6 網段加入可允許查詢區,例:新增 2001:288:75a6::/48;
acl allow_clients { 127.0.0.1; 163.26.182.0/24; 2001:288:75a6::/48; };

// 在 acl 中的 IP 允許的操作
view "recursive" {
     match-clients { allow_clients; };
     recursion yes;
     include "auth_zones.conf";
};

// 未在 acl 中的 IP 拒絕使用遞迴式查詢
view "external" {
     match-clients { any; };
     recursion no;
     include "auth_zones.conf";
};


修改 auth_zones.conf

zone "." {
     type hint;
     file "named.ca";
};

zone "localhost" {
     type master;
     file "localhost";
};

zone "0.0.127.in-addr.arpa" {
     type master;
     file "rev-127.0.0";
};

zone "dc1es.tnc.edu.tw" {
     type master;
     file "/etc/bind/db.dc1es.tnc.edu.tw";
};

zone "182.26.163.in-addr.arpa" {
     type master;
     file "db.163.26.182";
};

// 新增 ::1 的反解檔
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa."{
     type master;
     file "rev.local6";
};

// 新增 2001.288.75a6 的反解檔
zone "6.a.5.7.8.8.2.0.1.0.0.2.ip6.arpa." {
     type master;
     file "2001.288.75a6.rev";
};
修改 db.xxx.tnc.edu.tw 正解檔

 與不限遞迴查詢做法相同,請參考前文

建立 ::1 及 2001.288.75xx.rev 反解檔

 與不限遞迴查詢做法相同,請參考前文

獨立主機與虛擬主機的差異

獨立主機與虛擬主機的差異

※、什麼是虛擬主機?
虛擬主機 (Virtual Hosting),又稱共享主機 (Shared Hosting)
市面上還衍生出許多不同名稱如網頁代管、網站代管、網頁空間、虛擬空間等。
虛擬主機是由十數個至數百個網站共同使用一台獨立的實體主機以及網路頻寬,虛擬主機與虛擬主機之間是完全分隔獨立的
且均分別具有其專屬的網域名稱,同時擁有獨立的網頁、信箱、資料庫等。
虛擬主機和實體主機在本質上並無不同,差別在於實體主機乃專門為單一個體戶設置
而虛擬主機則是專門為硬體資源需求較少者設置,透過集體共用一台實體主機資源來創造最大的利用效益。
簡而言之,虛擬主機就好比住戶眾多的公寓大廈,而實體主機好比單一住戶的透天厝。
由於由多個虛擬主機用戶共同分擔硬體設備費用、網路頻寬費用、線路費用
使得租用所耗成本低廉,免除投入伺服器、網路設備以及網管人員等金額龐大的費用,比較適合『小公司』或『個人用戶』。

attachments/201501/Dedicated Servers-OK.jpg

※、什麼是獨立主機?
Dedicated Servers(或 Dedicated Host,獨立主機,又稱專屬主機)
功能完整的伺服器給客戶使用,同時也會把作業系統和軟體都設定好。
客戶擁有完整的主機資源和所有權限,就像自行購買一台主機放到ISP的機房代管那樣。
客戶不需要煩惱軟硬體安裝和系統安全、監控等瑣碎的事。

Dedicated Servers適合網站有大量流量、需要複雜運算、有大量會員或資料庫存取的用戶。
另外如果您想安裝比較特殊的軟體(例如比較冷門的資料庫如DBMaker),那就需要使用獨立主機。
雖然VPS(虛擬私有伺服器)也可以讓使用者自行安裝軟體,不過仍有部分的軟體不能在VPS的作業系統下安裝,這時候獨立主機是唯一的選擇。

獨立主機同時也會提供獨立的固定IP位址,也幾乎都會提供SSL安全認證,所以非常適合流量較大的購物網站。
若是您有大量寄發郵件的必要性,通常也建議使用獨立主機的服務,因為虛擬主機和VPS通常會限制用戶大量寄發郵件的數量或頻率,但獨立主機則比較沒有這方面的限制
(但仍不可寄發Spam Mail廣告垃圾郵件,因為違反歐美地區的法律)。
-----------------------------------------------------------------------------------
獨立主機與虛擬主機的差異:
獨立主機與虛擬主機最大的的差異當然在於『專屬性』與『自主性』
這就好像『分租房子』與『自己擁有房子』之差異
需用虛擬主機:就好像租用宿舍大家共用一條網路線(或一棟大樓大家共用一條網路線)
你想會怎樣?雖然省錢,但討厭的事情你就要:忍耐一點!
當然最大的差異在於:虛擬主機限制很多(獨立主機隨你喜歡設定!)
新手(傻傻還搞不清楚時),一租用虛擬主機,就會遇到(這個不能用,那個限制用....等等的挫折...好像架站不是那麼容易?)
其實,等你自己擁有一台自己的獨立主機時,你終於可以脫離那些限制與管制啦!
--------------------------------------------------------------------------
當然,獨立主機就會出現『誰替你維護?』『維護每個月要花多少錢』?的問題!
能否『魚』與『熊掌』兼得呢?答案是:肯定的!
只要你申購:『架設Linux主機架站維護教學課程遠端協助專案』全方位配套措施+線上技術諮詢
http://por.tw/linux/new-E_learning/index.php

那網路就是您的天下!你要架設幾個網站都可以!
你要因增幾個資料庫都可以!你要多大的空間(只要增大硬碟),那還怕空間不夠用?
你的主機系統PHP.ini(所以的細項設定,都可以隨你需求自由設定)
那還有誰能限制了你?還有什麼比自己獨立擁有更有隱私與主權?
對啦!這就是網路創業賺錢的成功第一大步!邁出此一大步(你的網路賺錢之路將更開闊、更自由!)
--------------------------------------------------------------------------
網站發生警語:atal error: Allowed memory size of 16777216 bytes exhausted(記憶體不夠用)之處理方法

網站架站或網站升級後,網站發生類似警語:atal error: Allowed memory size of XXXXXXXX bytes exhausted
不管是管理介面(Dashboard),或者登入出問題,看來幾乎都是記憶體不夠用。


例如其發生的警語:
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 4023 bytes)

這是什麼意思呢?又該如何解決?
答案是:記憶體的需求是更大了,這邊提供幾個解決的方法。

當出現以下的類似情況,要來調整PHP的記憶體,來執行更多的程式
1.找到php.ini的路徑(/etc/php5/apache2/php.ini)
2.搜尋:memory_limit 字串
3.找到:memory_limit = 16M      ; Maximum amount of memory a script may consume (16MB)

A.如果有權限修改php.ini,那麼請將memory_limit = 32M的32提高,看是要64還是96或者128。
    
B.如果沒有權限修改php.ini,可以在.htaccess裡面加上php_value memory_limit 32M,或者更高的數字。

備註:php.ini修改後apache要重新啟動才會生效!

語法如下:
service apache2 restart


-------------------------------------------------------------
解決安裝完 Linux 後修改各伺服器設定檔困擾的好工具:YHTools

YHTools工具集是為解決安裝完 Linux 之後,還要花長時間去修改各伺服器設定檔的困擾而出現。
所提供的功能,請見下方工具的簡介文。
工具的開發軟體有二,一是 python3.x 開發(副檔名為 pyw),需要圖形化介面暨 UTF-8 中文顯示的能力,因此請在具有 python3 環境下的 linux 套件執行。
另一種是 BASH ,副檔名為 .sh 可直接在終端機畫面執行。


版權暨免責聲明

    * 本工具以 GPL v2 授權方式給大家使用
    * 開發本工具的兩種程式皆是具純文字檔兼可執行的 SCRIPT ,因此下載後便可瀏覽/修改原始碼,您可自行修改成符合您自己需求的狀態再使用。
    * 無論 BASH 或是 Python3 對筆者而言都是初學的程式語言,因此程式碼不儘完善,無法保證任何執行結果。


使用前注意

    * 底下各工具使用說明均極簡化,請各位一定要配合本站各伺服套件相關文件說明來使用
    * 基本上 YHTools 就只是把文件上要各位輸入的設定檔「快速製造」出來,以省去您打字的時間而已。


改版說明

    * 2011-05-09 改版:fw4local.pyw 單機防火牆規則列勾選防禦 SSH Port 卻變成 FTP Port 之錯誤修定
    * 2011-05-10 改版
          o 新增 yhtools/chmodadv.sh 程式,使 chmod 777|755 時會自動判斷資料夾(777|755)或檔案(666|644)
          o 修改 homechown.sh 為不必先複製到 /home 底下也可以執行
    * 2011-05-11 小改 yhtools/chmodadv.sh 的提示字元
    * 2011-05-12 修改
          o yhtools/fw4nat.pyw 裡面有註解「#」符號之前誤 key 成全形字元
          o yhtools/dhcpconf.pyw 修改成產生 dhcpd.conf 及 isc-dhcp-server 分別準備要放至 /etc/dhcp 及 /etc/default
            這是 debian squeeze 及 ubuntu 11.04 版本,最新的做法,之前使用 ubuntu 10.10 沒注意到,現在修改。

工具使用系統要求

   1. Debian Squeeze 或 Ubuntu 10.10 以上並必須安裝 X-Window 視窗
   2. python3.1.x, python3-tk(8.5以上)
          * apt-get update
          * apt-get install python3 python3-tk



工具下載

    * 下載
          o root@dns:~# wget http://myip.tw/download/yhtools.tar.gz
    * 解壓
          o root@dns:~# tar xzvf yhtools.tar.gz
    * 使用
      執行每個工具前,在輸入程式名稱前一定要加「./」,例:
          o root@dns:~# cd yhtools
          o root@dns:~/yhtoosl# ./dnsconf.pyw




工具集程式列表

.
|-- chmodadv.sh
|-- dhcpconf
|   |-- dhcp3-server
|   |-- dhcpconf.pyw
|   `-- dhcpd.conf
|-- dnsconf
|-- dnsconf.pyw
|-- dnsconf.sample
|   |-- db.0
|   |-- db.127
|   |-- db.255
|   |-- db.local
|   |-- db.root
|   |-- named.conf
|   |-- named.conf.default-zones
|   `-- named.conf.options
|-- firewall
|   |-- fw4br.pyw
|   |-- fw4local.pyw
|   |-- fw4nat.pyw
|   |-- fwtc4_l7filter.sh
|   `-- fwtc.sh
|-- homechown.sh
|-- maccount
|   |-- maccount.sh
|   |-- passwd.txt
|   `-- readme.txt
|-- pubfolder.sh
|-- README.TXT
|-- rsync
|   |-- rsync_c.pyw
|   `-- rsync_s.pyw
`-- test.py




各工具簡介
chmodadv.sh

    * 使用時機:修改檔案權限
      有時我們從網路下載,並用圖形化工具解壓縮出資料夾檔案權限為 700 ,但我們需要的卻是 777|755 (例:xoops 目錄要755才可被安裝)。可利用本工具把 700 的權限連同子目錄改成 777|755 ,而且它不限幾層子目錄,也具自動判斷功能,會把資料夾設為 777|755,檔案設為 666|644。
    * 注意事項:若資料夾內含可執行權的檔案,也會一律被改成 644
    * 使用方式:chmodadv.sh 777|755 資料夾名稱
          o 可複製到 /usr/local/bin 以方便執行
            root@dns:~# cp yhtools/chmodadv.sh /usr/local/bin
          o 例一:root@dns:~/下載/xoops-2.5.0# chmodadv.sh 755 htdocs
          o 例二:root@dns:~/下載/xoops-2.5.0/htdocs# chmodadv.sh 777 uploads


dhcpconf.pyw

    * 使用時機:快速產生 DHCP3 Server 所需的設定檔,/etc/default/dhcp3-server 及 dhcpd.conf
    * 注意事項:各版本的 dhcp3 主設定放置地點不一定一樣,可能在 /etc/dhcp3 ,也可能在 /etc/dhcp
    * 使用方式:
          o 執行本工具
            root@dns:~/yhtools/dhcpconf# ./dhcpconf.pyw
          o 把產出的 dhcp3-server 及 dhcpd.conf 複製到各自的位置


dnsconf.pyw

    * 參考文件:http://myip.tw/itsmw/index.php/DNS
    * dnsconf.pyw 為使用 python3 撰寫之圖形化 dns server 設定檔產生器
          o 網域名稱與 IPv4 位址為必填項目
          o 有 IPv6 者,請填 IPv6 網段及末碼 IP 值,例:2001:288:75a6 及 19 程式會自己組合成 2001:288:75a6::19 參數。


    * OB2D sqz 使用者,一定要把視窗介面安裝起來
    * 若已使用過 OB2D sqz 內建的 DNS 產生器(曾勾選這台要擔任DNS伺器),那麼:
         1. 把 ./yhtools/dnsconf.sample/ 底下所有檔案先複製到 /etc/bind 底下
         2. 執行 dnsconf.pyw後,再把產生在 ./yhtools/dnsconf 底下的另一批設定檔,也複製到 /etc/bind 去。
    * 非 OB2D sqz 或新安裝 OB2D sqz 但未勾選過要「擔任DNS伺服器」時
          o 只要把執行 ./yhtools/dnsconf.pyw 產生在 ./yhtools/dnsconf/ 底下的設定檔複製到 /etc/bind 底下即可。


fwtc.sh

    * 參考文件: http://myip.tw/itsmw/index.php/Link_Control
    * 程式 yhtools/firewall/fwtc.sh 為在 NAT 或 Bridge Route 防火牆下協助做流量管制的工具。
    * 使用方式:請先直接編輯 fwtc.sh 內的設定值再啟用
          o 啟動: ./firewall/fwtc.sh start
          o 中止: ./firewall/fwtc.sh stop
          o 顯示: ./firewall/fwtc.sh show


fw4local.pyw

    * 參考文件: http://myip.tw/itsmw/index.php/OB2D_Iptables
    * 程式: yhtools/firewall/fw4local.pyw 本機防火牆規則列設定
    * 使用:
          o cd firewall
          o ./fw4local.pyw 填入各參數,點「確定」產生 ./rc.local
          o 按「Escape」離開本工具
          o 檢視內容若沒問題,覆蓋 /etc/rc.local 即可
          o 套用新規則列: service rc.local start


fw4br.pyw

參考文件:http://myip.tw/itsmw/index.php/OB2D_Firewall

    * 程式: yhtools/firewall/fw4br.pyw 透通式防火牆設定工具
    * 說明:
          o 請先確認 /etc/network/interfaces 內容只剩 lo 的設定,詳見 http://myip.tw/itsmw 文件
          o cd ./yhtools/firewall
          o ./fw4br.pyw
          o 同前所述,依您需求填求,並點「確定」產生 rc.local
          o 按「Escape」離開本工具
          o 檢視內容若沒問題,覆蓋 /etc/rc.local 即可
          o 套用新規則列: service rc.local start


fw4nat.pyw

    * 參考文件: http://myip.tw/itsmw/index.php/OB2D_NAT
    * 程式: yhtools/firewall/fw4nat.pyw 建立虛擬 IP 網段設定工具
    * 說明:
          o 請先確認已設妥 eth0 及 eh1 網卡一為公用 IP 一為私有 IP,詳見 http://myip.tw/itsmw 文件
          o cd ./yhtools/firewall
          o ./fw4nat.pyw
          o 同前所述,依您需求填求,並點「確定」產生 rc.local
          o 按「Escape」離開本工具
          o 檢視內容若沒問題,覆蓋 /etc/rc.local 即可
          o 套用新規則列: service rc.local start


homechown.sh

homechown.sh 快速恢復 /home 底下各家目錄為原使用者。

    * 程式: yhtools/homechown.sh
    * 參考文件:http://myip.tw/itsmw/index.php/LinuxDataTrans ,文件內第 4.3 節
    * 要求:各家目錄的使用者必須先建立完畢
    * 使用:直接執行 homechown.sh,若沒任何訊息,代表成功執行
          o root@dns:~/yhtools# ./homechown.sh


maccount.sh

工具:maccount.sh 是以 BASH 寫成的大量建帳號工具,支援 samba 同步及 MySQL 同名資料庫建立。程式與使用方式,請切換至 yhtools/maccount 底下,詳讀 yhtools/maccount/readme.txt 裡面的說明。

    * 程式: yhtools/maccount/maccount.sh
    * 說明文件: yhtools/maccount/readme.txt ;請務必先讀本說明再使用


pubfolder.sh

pubfolder.sh 是 bash 寫成的共用資料夾設定工具,它為協助使用者建立 ftp 共用資料夾專用的小程式由於 vsftpd 基於安全性,會設定使用者登入後不得切換至其他資料夾(chroot_local_user=YES) ,因此,每個使用者都只能登入自己的資料夾,此時,若要建立起的一個共用資料夾供所有使用者皆可讀寫,那麼就可以採用本方案。
註:本方案,會把所輸入的「共用資料夾」建在 /home/ftp 底下

    * 程式: yhtools/pubfolder.sh
    * 參考文件:http://myip.tw/itsmw/index.php/Ob2d_Vsftp
    * 使用方法:
          o 共用時:pufolder.sh -m 共用資料夾名稱
          o 解除共用: pubfolder.sh -u 共用資料夾名稱
          o 下次開機也能自動掛載時,請在 rc.local 的底下, exit 0 之上,加上 「pubfolder.sh -m 共用資料夾名稱」


rsync_s.pyw

    * 功能:建立 rsync server 快速產生器
    * 參考文件: http://myip.tw/itsmw/index.php/RSync
    * 程式: yhtools/rsync/rsync_s.pyw
    * 說明:
          o 請先手動修改 /etc/default/rsync 裡面的 ENABLE 為 true
          o 再執行本工具
          o 它將會產生 /etc/rsyncd.conf 及 /etc/rsyncd.secrets 設定檔
          o 執行完本工具,仍得手動啟動 service rsync start


rsync_c.pyw

    * 功能: 建立 rsync client 快速產生器
    * 參考文件: http://myip.tw/itsmw/index.php/RSync
    * 程式: yhtools/rsync/rysnc_c.pyw
    * 說明:
          o 它會產生 /root/rsncbk.sh 及 /root/rsyncd.secrets 設定檔
          o 它會為 root 加定時排程,請以 root 身份 crontab -e 修改成自已偏好的備份時間

本文引用來至:http://myip.tw/itsmw/index.php/YHTools

網路技術概論(Linux主機伺服器架設技術)

網路技術概論(Linux主機伺服器架設技術)

網路的基本理論,提供給學員網管人員參考。希望對網管在網路故障偵錯、伺服安裝與設定等能有一定的幫助。

網路(NetWork)是利用傳輸線(或無線電波),把四散的電腦連結起來,使彼此的資料可以互通。
在早期,台灣網路尚未十分發達之前,電腦與電腦之間如果要交換文件,大多是靠磁碟片來做為媒介。
只是有時資料量太大,多張碟片就會變成一種麻煩。因此在當時,會利用電腦列表埠,以 LL3 線材連結,再塔配特定軟體,把兩台電串接起來,以方便交換檔案。
網路,就有點像是這個樣子,但更加的複雜化。

到了現代,大多數人對網路的印象就是上網(surf the internet),因為在網路的世界,可以玩游戲、看新聞、購物...等。
在這樣的概念之下,我們可以發現有兩個主體觀念出現:一是網站服務主機 (Server),如 tw.yahoo.com,它可以提供新聞、購物、拍賣、字典...等眾多服務,等客人上門。
另一個是:客戶端電腦(Client),它只負責讓使用者在網址列上輸入網址,按個「Enter」,便把對方的網頁秀在螢幕上。
而這兩者之間地理上的距離,可以是近在咫尺,也可能是遠在天邊。
為達成此目的,在此簡要介紹。

網際網路InterNet

我們知道,網路叫「Net」,以學員而例,整個電腦用網路線接起來,便會形成「網際網路」。
依此理論,兩所學員互連,便是「校園網路」與「校園網路」之間互連。
而英文字:「inter-net」便是代表了這個狀況:「網路與網路之間」互連,簡言之,InterNet 就是全世界串在一起的網路系統,讓我們可以在學員連到自己學員的官方網站,也可以連到美國 amazon 買書,或是大陸淘寶網購物。

網路基本概念
OSI 七層次架構與 TCP/IP 四層次架構

    OSI 七層
    TCP / IP 四層
    簡要說明
Layer 7
    應用層
    
應用層
 
功能:應用程式,如 IE, Firefox, FTP...等
相關設備:電腦、網路電話、入侵防禦系統(IPS)等
Layer 6
    表達層
Layer 5
    對談層
Layer 4
    傳送層
    TCP / UDP
    

功能:控制資料傳輸之正確性;為應用程式開設服務窗口(Port)
TCP:強調資料正確;多用於 HTTP, FTP等注重資料完整性的網路服務
UPD:強調資料傳送順暢;多用於多媒體資料或網路電話語音傳送
相關設備:防火牆等
Layer 3
    網路層
    IPv4 / ICMP / ARP
IPv6 / NDP(芳鄰探索協定)     

功能:定義網際網路位址(v4/v6);網卡 MAC 位址之對映
相關設備:路由器或 L3 Switch
Layer 2
    資料連接層
    Host-to-Network
MAC
    

功能:實際負責網路封包的傳送與接收之硬體設備
每張網卡皆會有一組全球唯一值的 MAC 位址
相關設備:有線/無網網卡、集線器
Layer 1
    實體層
網路的相連,中間隔了很多各種不同的設備。要讓它們之間能互通有無,就必須遵循相同的語言(通訊協定),否則你講你的,他講他的,誰也上不了網。基於這個構想,國際標準組織(ISO)就制定一組開放系統互連(OSI)參考模型。TCP/IP 網路架構也是基於這個理念所發展而成,而且,它在美國強力的推廣之下,已然取得全球的認可,成為全球互連的主要標準。以下,把上面兩篇引薦文繁雜的內容,整理簡化成以下幾個重點:
Socket

   1. Server 應用程式啟動後,必先建立網路 Socket ,而這個 Socket 包含了 IP 位址及監聽 Port Number(1-1024)
   2. Client 應用程式啟動並開始連線時,同樣會建妥 Socket,只是 client 的 Port Number 介於 1024 -65535
   3. Client 連線至 Server 時,便形成 Socket pair,進行連線並傳輸資料

Soket Pair

Client應用程式
例:Firefox
    →     

Server 應用程式
例:Apache2+PHP

來源 IP Address
例: 163.26.182.99
    

目的 IP Address
例: 163.26.200.3

來源 Port
例:port 6524
    

目的地 Port
例: 80


資料傳送

    * Server 端會先把所有等待傳輸的資料切割打包(建立封包),再分批送至 client 端。 而且它並不是乖乖的把所有封包依順序走同一條路(路由)到目的地,而是由路由器挑出所有可能的較短路徑,分批送出。到了目的地之後,再組合回來。
    * 每個封包(Packet),皆分成 header 及 data 兩大部分,其中 header 便記載來源 IP,目的地 IP,以及通訊協定等資料
    * 封包送至 Client 時,要先判斷目的地的 IP Address 是否處在同一網段
          o 同網段 → 找到對方的網卡,把封包送出去
                + IPv4:透過 ARP 查詢,找到該網卡之 MAC Address ,經由集線器傳送封包
                + IPv6:透過 NDP(Neighbor Discovery Protocol)之 neighbor solicitataion message 暨 neighbor advertisement message,找到目的地 MAC 位置後,把封包送至對方主機
          o 不相同 → 把封包交給路由器處理
                + IPv4:由 ARP 查詢,找到路由器的 MAC Address,直接交給路由器,路由器再根據目的地 IP Address 送至對方主機
                + IPv6:由 NDP 的 Router solicitation message 暨 Router advertisement message,找到路由器 MAC 位址,再交由其處理傳送

    * 判斷是否相同網段的方法,請見下一段文件「IPv4網段分割」之簡要說明
    * 關於 IPv6 的芳鄰探索協定(Neighbor Discovery Protocol; NDP),可參考下列文件
          o http://140.116.82.34/dclin/technique_paper/IPv6/neighbor_discovery.htm
          o http://technet.microsoft.com/en-us/library/cc781068%28WS.10%29.aspx
          o http://www.cu.ipv6tf.org/literatura/chap6.pdf
          o http://www.cu.ipv6tf.org/literatura/chap4.pdf

以IPv4為例細說不同網段兩台電腦交換資料的過程

本文是承接上面資料傳送部分,進一步以圖片來加強說明。文章是以 IPv4 作為說明的主軸,與 IPv6 的差異點僅在尋找 MAC Address 的過程不同(IPv4→ARP; IPv6→NDP),其餘的部分是一樣的。

甲主機有資料要送到乙主機,資料封包會由應用層到資料鏈結層,層層加上 Header,其中比較重要的是:

    * 從應用層傳到網路層時:加上來源 IP 及目的地 IP
    * 往下送至資料鏈結層時:加上乙主機的 MAC Address
      因甲主機依其網路設定值,在判讀乙主機的 IP Adress 後知道,他們同處一個網段,因此直接加上乙主機的 MAC Address
    * 最後封包由實體層送至 Switch Hub


當封包送到 Switch Hub 時,Switch Hub 經判讀封包的 Hearder 得知目的 MAC Address,便直接把封包丟給乙主機,完成傳送。乙主機接收封包之後,會從最下層,層層分解封包,分述如下:

    * 上傳到網路層 (IP 層):解析出來源 IP Address
    * 再往上到傳輸層 (TCP .or. UDP)時:解析出 port 值,依其值轉給適當之應用程式
    * 到最上方的三層(process/application)時:由網路應用程式接收來自甲主機的資料


網內與網外節點如何溝通

甲主機有資料要送到另一網段的乙主機,其傳送過程如下:

    * 資料封包下到網路層時:加上來源 IP 及目的地 IP
    * 再往下到資料鍵結層時:加上 Router 1 的 MAC Address
      因為甲主機分析後發現:乙主機與他並不在同一網段,所以他會把目的地的 MAC Address 設成 Gateway MAC Address,也就是《Router 1》,至於 Router 1 要如何建立路徑通往 Router 2 ,就不是甲主機的事情了。
    * 送到 Router 1 的資料鍵結層時:Router 1 會把目的地的 MAC Address 改成 Router 2 ,並經由路由表判定,送至 Router 2
    * 當資料封包送至 Router 2 時:Router 2 會根據網段內的 IP ←→ MAC 對照表(ARP 表),把資料封包送至乙主機
      如果,Router 2 在 ARP 表找不到乙主機的 IP Address 與 MAC 對照時,會在網段內進行 ARP 廣播,向各節點詢問:【請擁有此 IP Address 的主機把 MAC Address 交出來】,乙主機接受到此訊息,便會對 Router 2 做 ARP 回應。得到乙主機 MAC Address 的 Router 2,便直接把封包傳給了它。
    * 得到來自甲主機封包的乙主機,其處理程序與上例一致

attachments/201304/4503634531.gif


IP 基本概念

IP 位址的英文為 Ineternet Protocol Address,它是各網路設備上的一組全球唯一識別碼,也可以說是「網路地址」,有了這個地址,電腦與電腦之間的資料才可以正確的被傳送。此時,有人也許會有一些疑慮? 「MAC 位址不也是全球唯一值,為何不使用它來擔任地址的工作?」。原因為: MAC Address 的編碼原則為【廠商識別】+【流水號】,因此只能從它了解其出廠別,無法知其所在的網段所在(地理位置)。因此,必須建立「網路地址」的機制,並依網段來區辨不同的使用團體(Network),進而找到使用者所在(IP Address)。目前,全球通用的 IP Address 版本有二:第四版(IPv4)及第六版(IPv6),而第四版已廣為全球共用,第六版目前仍待推廣。以下筆者針對這兩種版本,做一簡單的描述:
IPv4及IPv6位址表示法


IPv4 概念

IPv4 的網路位址是由四個中進位數字加三個點組成,例: 【163.26.200.1】。可是每一組數字,只允許從 0 到 255 之間,共28 個數字。也就是說,它是由四組 (0 到 28-1)數值所組合而成的符號,代表著某一特定網路地點。依此觀念可知,全球可用的網路節點數是 256 x 256 x 256 x 256 = 232 個節點。

IPv6 概念

第六版的 IP 位址表示法,稱之為 IPv6 。它改用 8 組,每組 4 個 16 進位值來表示,詳見上圖。依此其理論可用範圍為:

  0000:0000:0000:0000:0000:0000:0000:0000 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF

高達 2128 個節點,這麼多點,就算扣除一些保留用途的特殊範圍(FF0x, FE8x...)外,比起 IPv4 來,仍是巨量,依此便可解決 IPv4 的不足。


IPv4 網段分割

雖然目前全球通用的 IP 定址法版本有二,而且它們無論在「定址大小」、「虛擬IP」、「尋找 MAC」...等功能、做法有所不同,但網段分割這部分的原理相同,因此,筆者直接以 IPv4 為例,來解釋網段之分割原理。


無論是 IPv4 或 IPv6 ,它們可都是必須擔當起全球所有上網設備間的互連,在這麼龐大的網路節點上,設備間要能跨縣、跨國交換資料,就要有一套管理方式才可以,也就所謂的分段措施。他們把全部的 IP 切成一段段來分配。而且,每分割完一個網段,其第一個 IP 及最後一個 IP ,皆不可以使用。第一個 IP 稱之為【網段代表號】;最後一個 IP 是【廣播】。例如: 163.26.200.0 - 163.26.200.255 這個 C Class 的網段的 ".0" 及 ".255" 皆是不可運用的 IP。


TCP/IP 的分段是一種階層式定址法,也就是每一個 IP Address皆包含了兩種意義:一是網路位址,另一是主機位址。以 163.26.182.34 為例,其中 【163.26.182】這三組數字是該網段的網路位址,【.34】則是主機位址。判斷是否同段的運算法則為【遮罩】法,什麼是遮罩呢?就是用〔 IP 〕去和〔遮罩〕的二進位碼做 AND 邏輯運算,若兩組不同 IP 和某一遮罩 AND 邏輯運算完,得到相同的值,就代表他們處再同一段網段內。說明如下:


網路遮罩 NetMask
AND 運算

二進位的 AND 邏輯運算是說: 只有《1+1》才等於 1 ;其他相加皆是 0。亦即, 《1+0》《0+1》《0+0》皆等於 0。


舉列如下

請問以下兩組 IPv4 Addres,那一組的兩個 IP 是位於同一網段內? 它們的 NetMask 皆是 255.255.255.128

    IP1: 163.26.108.130  → 10100011.00011010.01101100.10000010
    IP2: 163.26.108.201  → 10100011.00011010.01101100.11001001
Netmask: 255.255.255.128 → 11111111.11111111.11111111.10000000

    IP3: 163.26.100.130  → 10100011.00011010.01100100.10000010
    IP4: 163.26.108.36   → 10100011.00011010.01101100.00100100
Netmask: 255.255.255.128 → 11111111.11111111.11111111.10000000


第一組:
    IP1: 163.26.108.130     IP2: 163.26.108.201
AND
運算     10100011.00011010.01101100.10000010
+ 11111111.11111111.11111111.10000000
--------------------------------------
10100011.00011010.01101100.10000000     10100011.00011010.01101100.11001001
+ 11111111.11111111.11111111.10000000
--------------------------------------
10100011.00011010.01101100.10000000
結果     163.26.108.128     163.26.108.128


第二組:
    IP3: 163.26.108.130     IP4: 163.26.108.36
AND
運算     10100011.00011010.01101100.10000010
+ 11111111.11111111.11111111.10000000
--------------------------------------
10100011.00011010.01101100.10000000     10100011.00011010.01101100.00100100
+ 11111111.11111111.11111111.10000000
--------------------------------------
10100011.00011010.01101100.00000000
結果     163.26.108.128     163.26.108.0


由以上 AND 運算結果得知,第一組得到同一個答案,但第二組則否。因此可說,只有第一組的兩個 IP Address 是位在同網段內。而且,而這個所算出的答案就是「網段代表號」,也就是前文所說的第一個不能動的 IP Address。


IPv4 網路分段原則

IPv4 的網段,會有所謂 A Class、B Class 及 C Class 等說法,至於,我們所說的 A class , B class, C class 到底是什麼意思呢?它可以是兩種意義:

(一). 國際網路組織分配 IP 網段給各國各組織,所制定的遊戲規則。如下表:

    * A Class : 0 - 127.xxx.xxx.xxx 的 IP (0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx),皆是以一個 A Class 的量分配出去。
    * B Class : 128- 191.xxx.xxx.xxx 的 IP(10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxx),分配時,是切成 B Class 的量分配出去。
    * C Class: 192 - 223.xxx.xxx.xxx 的 IP(110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxx),分配時,是切成 C Class 的量分配出去。
    * 224.xxx.xxx.xxx 的 IP 保留其他用途

(二). 另一意義是:它是一種計量單位

    * 一個 A Class 的量: A.0.0.0 -- A.255.255.255 共 256 x 256 x 256 = 16, 777,216 個 IP。
    * 一個 B Class 的量: A.A.0.0 -- A.A.255.255 共 256 x 256 = 65,536 個 IP。
    * 一個 C Class 的量: A.A.A.0 -- A.A.A.255 共 256 個 IP。



如何判定遮罩

在前文,筆者是給 IPv4 Address 及 Netmask,再去判斷這些 IP Address 是否位處同一網段。現在,如果只給一個 IPv4 Address 及其網段大小,那麼,要如何計算出遮罩的數字? 請見下文分解。


以一個 C Class 為例

我們以 163.26.200.0 一個 C Class 為例,它的範圍是: 163.26.200.0 -- 163.26.200.255 。轉成二進位值如下:
10100011.00011010.11001000.00000000


10100011.00011010.11001000.11111111



建立遮罩的原則是:

    * 【網路位址:不會變的部份,如 163.26.200:底下的遮罩值皆填 《1》】
    * 【主機位址:會變的部份,如最後的 0 - 255:底下的遮罩值皆填《0》】。


依此原則:

    * 遮罩二進位值: 11111111.11111111.11111111.00000000 (前面不變的填 1,會變動的部分填 0 )
    * 遮罩十進位值: 255.255.255.0
    * 由二進位值計算,共得到 24 個 《1》,所以本網段也寫成 163.26.200.0/24
    * 值「24」在 IPv6 叫做 prefix 24,它代表子網路的大小


以半個 C Class 為例

我們以 163.26.108.128 開始之後半段 C Class 網段為例,它的範圍是: 163.26.108.128 -- 163.26.108.255,轉成二進位值如下:
10100011.00011010.01101100.10000000


10100011.00011010.01101100.11111111

依上面的原則:

    * 遮罩二進位值:11111111.11111111.11111111.10000000
    * 遮罩十進位值:255.255.255.128
    * 由二進位值計算,共得 25 個《1》,所以本網段也可以記成 163.26.108.128/25


給某個網址及遮罩,請找出其網段代表號及廣播位置

實務上,若只給您一個 IP 值,再告訴您網路遮罩,您要如何算出此網段之代表號及廣播,並以另一型式寫出該網段。
範例: 163.26.119.131 / 255.255.255.192

10100011.00011010.01110111.10000011/11111111.11111111.11111111.11000000

    * 分析一:前面共有 26 個數字不能變化
    * 分析二:所以 10100011. 00011010. 01110111. 10 (163.26.119.128 是不會變化的)
    * 分析三,最小值(代表號)便是: 10100011. 00011010. 01110111. 10000000 (163.26.119.128)
    * 分析四,最大值(廣播)便是: 10100011. 00011010. 01110111. 10111111 (163.26.119.191)
    * 因此,網段另一種寫法是: 163.26.119.128/26


作業: 163.26.62.90 / 255.255.255.192

    * 提示:請自行把上述兩個值轉成二進位值,再進行分析,便可得解。




網路設備如何配置 IP
IPv4 分配原則

網路設備介接至學術網路時,皆會得到一個網段,可能是 1 個 C Class,也可能是半個或 1/4 個 C Class,而網段內某些 IP 是有固定用途的,解說如下:

    * Network:第一個 IP 是網段代表號
    * DNS Server:第二個 IP 給 DNS Server 使用
    * 防火牆: 倒數第三個 IP
    * L3 Switch (路由器):倒數第二個 IP
    * 廣播:最後一個 IP

IPv6 分配原則

    * IPv6 各校配發查詢 http://voip.tnc.edu.tw/ngn/ipv6-iplist.pdf
    * DNS1 Server:2001:288:75xx::1
    * DNS2 Server:2001:288:75xx::2 (非必要)
    * L3 Switch (路由器): 2001:288:75xx::ff

IPv6 文件

相信在看完 IPv4 的相關觀念後,再來理解 IPv6 便不會太大困難。而關於 IPv6 的解說,下面這篇文章已著墨甚多,請大家參閱。

    * IPv6 參考文件: http://ipv6.tnc.edu.tw/ipv6

網路硬體

在講完軟體的通訊協定暨其簡易的運作原理後,再來要談談實現這些運作的硬體設備有那些,並簡單交代一下其歷史,以方便讀者了解一些名稱之命名由來。
各種網路拓樸

網路拓樸可以是兩種意義:

   1. 依理論上電子訊號在設備間交換所走的路徑及其原理而定
   2. 依實際上網路設備安裝位置及佈線型式來看

目前,在各大市面上所販賣的設備,無論是有線或無線,幾乎都是採用乙太網路 (ethernet)之通訊協定(802.3)產品,而這也是各國中小學所採用的硬體設備。所以在下文,筆者只針對乙太網路做詳細的介紹。其餘,請自行參考相書籍。



乙太網路(ethernet)簡介
資料傳遞原理

乙太網路訊號傳送的拓樸是採用【匯流排式(BUS)+廣播】式,也就是,大家都是必須經由同一條公共走道送出訊息。而且,甲電腦要送資料給乙電腦時,是由甲把資料經由匯流排( BUS)廣播到所有節點。每個節點接到封包後,發現不是他的,便直接丟棄。只有乙電腦拆封後,看一下收件人是自己,才會把它接收起來。

因為此一特性,所以在 BUS 上,一次只允許一台傳送資料,若兩台同時傳送,就會發生碰撞(Collision)。為了解決此問題,它採用了載波感應多重存取/碰撞偵測 (Carrier Sense Multiple Access / Collision Detection; CSMA/CD) 基頻技術。也就是說,一台設備要送訊號之前,要先聽一下(listen),道路是否正在使用中,若沒人用,才送出資料。若有人用,就再等。但即使如此,仍可能因兩台同時偵測到沒人用,同時送出封包而發生碰撞。一碰撞,此節點會立即發出擁塞(jam)訊息到 BUS 上。此一 BUS 上的設備接到 jam 訊息後,便會中止動作,進入等待狀態,過一段時間,才又隨機啟動傾聽/傳送的動作。

搭配早期的乙太網路設備圖 (請參考下圖),就很容易理解上述的原理。依圖示,我們發現電腦間利用 RG58 線材(類似電視第四台的訊號線),所建構成的 BUS 來溝通訊息。
Net rg58.png

橋接器 bridge

若同一條 BUS 的節點數太多台,導致碰撞的機率大增。網路會因為 jam 太多而緩慢不堪。因此,就產生了《橋接器》設備,來切割碰撞區域,如下圖所示。橋接器的兩側,皆是單獨的碰撞區域。A區的甲工作站要送資料給B區的戊工作站時。甲在A區先做廣播的動作,橋接器接收了此封包,經拆封後,發現收件人的 MAC 位置是在B區,它就會在B區再廣播一次。自然,戊工作站也就可以收得到。

問題來了:【橋接器怎麼會知道收件人的 MAC 位置在那一區?】。這是因為橋接器會為 A 及 B 區建立 MAC Address 清單。

交換式集線器 (L2 Switch Hub)

講到這裡,諸位有沒有發現:【為什麼我們學員都沒上述的設備?】。這是因為,上述網路設備皆是古董級的東西了。從現在起,我們要開始講目前各校會使用到的設備,首先,從交換式集線器 (Switch Hub)講起,它與 Bridge 一樣,是屬於第二層的設備,只看得懂 MAC 。

從橋接器的分區模型中,來思考一下:【如果買多一點橋接器,每台電腦皆有其專屬的橋接器,那不就不必擔心碰撞的問題了,不是嗎?】。亦即,每個分區只放一台電腦,資料封包自然也就碰不著了。實現這個理想的產品就叫《交換式集線器》,Switch Hub 每個 port ,都是一個橋接器,而且只連接一台設備。在其內部會動態記錄每個節點的 MAC Address,當有兩個節點間要傳送資料封包時,Switch Hub 便會依各自的 MAC Address 建立起兩者之間的專屬連線,資料一旦傳送完畢,立即切斷。由以上可知,集線器是在 OSI 七層次架構的第二層(資料連接層)運作,因此一般的集線器最前面會加個「L2」字樣,代表它只能根據 MAC Address 傳送封包。至於封包內的 IP 位址是第幾代(v4 or v6),與它完全無關。


Switch Hub 在實體佈線上,以單一集線器來看,是屬於星狀拓樸。也就是說,每個節點,皆把線材集中到它身上。再由它來為各節點間建立溝通的管道。但以整個學員的佈線來看,它是由一台台的集線器堆疊而成,看起來比較像是樹狀拓樸。因此,我們會有一個思考:「單一台集線器,當然符合每個節點皆有其單一MAC記錄,但多台集線器之間怎麼交換這些 MAC 位址?」,其實這個問題在 IEEE 802.3 通訊協定早就有妥善的規畫,而且硬體廠商只要遵循其規畫做成產品,便可互通。而使用者只要將這些集線器組合(switch hub set),想像成一台巨大的集線器就好。

交換式路由器 (L3 Switch Router)

交換式集線器只解決了校內網路各節點溝通的需求,如果,要上到學術網路 (TANet) 或是 InterNet ,又該怎麼辨?我們知道,在 Internet 的世界要找到對方,只能靠《IP Address》,而不是靠 MAC Address,可是校內的的交換器是第二層的設備,只記錄了各節點的 MAC Address ,根本無法憑 IP Address 找節點。那麼,校內節點,要連接到遠方的節點時,要怎麼辨?是不是要有一個設備,幫忙找出連結對方節點的道路,並把資料丟過去。而,這個幫忙找路的設備就叫【路由器】。

由於路由器必須要有能力解析 IP Address ,所以,它是隸屬於第三層的網路設備。
您萬一網頁遇到「Cannot modify header information」的問題,請用以下方法解決:
通常會出現在網頁轉向時,採用「header」函式,才造成這個緩衝區的錯誤訊息。
這問題是發生再轉向時,緩衝區出了些問題,只要開啟系統設定
php.ini 調整一下,就可以解決這個問題了。

請用WinSCP連線主機,找到系統設定檔 php.ini
路徑:etc/php5/apache2/php.ini

建議使用「EMedit文字編輯軟體」開啟
找到「output_buffering」並將他後面的值設定為「On」(啟動)
當然也可以設定成「4096」或更高的數值(設定緩衝區大小)
然後儲存並重新啟動Linux主機或執行Apache
重新啟動就可以了。
本Linux主機伺服器架設基地立志於收集各類Linux主機伺服器架設、網站架設及網頁設計技術教學資訊,便於本人和廣大網友及網友查詢檢索,無論公司或個人認為本站存在侵權內容均可與本站聯繫,任何此類反饋資訊一經查明屬實後,將立即移除!