伺服器建置實務上課補充教材


unit 04:認識網路基礎與 Linux 網路設定
  1. 基礎網路介紹 - OSI 七層協定
    1. 為什麼要分層:
      • 網路開發之初,為了讓撰寫程式變得更容易,因此將整體的網路設計切成 7 個部份來撰寫
      • 每個部份只要針對自己所需要的功能來撰寫即可
      • 好處是,在開發上面就會比較不會互相干擾,你也可以自行修改其中某一部份,而且改完之後,並不會影響其他部份
      • 這就是網路堆疊的設計原理
    2. 網路開發模型的標準: OSI 七層協定:
      • 根據上述的開發原則,最早提出的網路架構就是所謂的 OSI 七層協定
      • 七層由偏硬體的底層到偏軟體的上層分別是:實體、資料鏈結、網路、傳輸、會談、表現、應用等七層
      • 這七層的相關性可以是這樣的:
        OSI 七層協定示意圖
      • 最有趣的想法:大箱包小箱的整人遊戲!不過,唯一的差別是,發送端與接收端,都只會知道同一個層級的資料而已!
      • 事實上,每一個層你都可以將他視為一個完整的包裹 (packet),這個包裹會有實際資料以及表頭資料 (header), 表頭資料就是『信封上面需要填寫的,收件人是誰?發件人是誰?以及內部的可能資料為何』這樣而已。
      • 透過分析表頭資料,信件就可以一關一關的發送出去!
    3. 所謂的網路基礎,指的是資料鏈結 (layer 2)、網路 (layer 3) 及傳輸層 (layer 4)
      • Layer2 重點在 MAC 訊框,這個訊框表頭重點在 MAC 網卡的卡號 (共有 6bytes 的記載,使用 16 進位紀錄的)
      • Layer3 重點在 IP 封包,這個封包表頭重點在 IP 位址,基本上目前台灣還是使用 IPv4 這個 32 位元 (bit) 紀錄的位址長度
      • Layer4 重點在 TCP/UDP 封包,這兩個封包的表頭資料重點在埠口號碼 (port number)
    4. 關於埠口號碼:
      • 埠口號碼通常為 0~65535 號
      • 其中 < 1024 為使用在常見的通訊服務啟動之用
      • 用戶端連線主要啟動者為 > 1024 以上的埠口。
    5. 關於 IP socket (插槽之意)
      • 網路是雙向的,你自己需要有 IP 才能夠連接到伺服器的 IP,同時你也需要啟動一個埠口來連線到伺服器埠口
      • 當你的瀏覽器連接到 google 時,基本上會是這樣連線的:
        your.IP:youport <==> Google.IP:443
  2. 基礎網路介紹 - TCP/IP
    1. OSI 與 TCP/IP
      • 由美國國防部與柏克萊大學合作開發出的網路模型,簡化 OSI 七層成為四層,稱為 TCP/IP
      • OSI 七層與 TCP/IP 的對照如下:
        TCP/IP協定示意圖
    2. 針對實體區域網路 (全部裝置用網路線集中於集線器/交換器上面的連線方式)
      • 區域網路當中 (電腦透過網路線,直接連接到 hub/switch 而互連的環境),資料直接透過網路卡傳遞 (所謂的廣播)
      • 承上,網路卡彼此認識則是透過 layer 2 的 MAC 封包,這個封包上面有重要的來源與目標之 MAC Address (網卡卡號)
    3. TCP 與 UDP
      • TCP 為可靠連結導向,有所謂的三向交握,大部分的網路服務都是這種封包模式
      • UDP 為非連接導向的封包,射後不理,大部分的直播影音都是這種封包模式
      • 因為 UDP 可以射後不理,因此許多的木馬、蠕蟲攻擊,都是透過這種封包格式,因此許多企業內,會將這種封包格式拒絕進出防火牆。
    4. 練習:
      1. 分別在 windows 與 Linux 裡面,透過相關的指令,查詢出所謂的 Layer 2 的網卡卡號 (MAC address)
      2. 使用 ping 172.16.200.254 之後,再透過 arp -n ,找出區域網路內的其他裝置的網卡卡號
      3. 在傳輸層當中的兩種封包格式中,那一種封包是屬於可靠連線,資料肯定不會遺失?
      4. 試說明 http, https, FTP, ssh 等協定的功能與使用的正規埠口號碼

  3. Layer 3 網路層的 IP 位址 (IP address)
    1. 位元 (bit) 與位元組 (bytes)
      • 位元指二進位的數值,亦即只有 0 與 1,不會出現 2 !這就是所謂的二進位。
      • 因為位元太小,因此習慣上,以 8 個位元作為一個記憶單位,稱為位元組 (bytes),因此 1 byte = 8 bits
      • 檔案容量都是使用位元組 (bytes),而網路傳輸則因為都是 0 與 1 的傳遞,因此網路單位大多使用位元。
      • 舉例來說, ADSL 非對稱傳輸 100Mbps 與 40Mbps,即是指 100Mbit/sec 以及 40Mbit/sec,轉成檔案單位,要再除以 8 才行。
      • 你家的網路下載最高可達 100Mbps,請問,下載一個 1GBytes 的檔案,大約需要多久的時間?
    2. IPv4 的 IP 位址為 32 位元,所以
      • 最小:00000000.00000000.00000000.00000000 --> 0.0.0.0
      • 最大:11111111.11111111.11111111.11111111 --> 255.255.255.255
      • 使用小數點隔開,每個位置的十進位數值為 0~255,不可能大於 255 以上喔!
  4. Layer 3 網路層的 IP 位址 (IP address) - IP 的等級與預設網域
    1. IP 是有等級之分的,主要分為 Class A, Class B 與 Class C,分類方式為:
      • Class A:(至少有 127 組)
        1.0.0.0 ~ 1.255.255.255
        2.0.0.0 ~ 2.255.255.255
        ....
        127.0.0.0 ~ 127.255.255.255
      • Class B: (至少有 64*256 組)
        128.0.0.0 ~ 128.0.255.255
        128.1.0.0 ~ 128.1.255.255
        ....
        128.255.0.0 ~ 128.255.255.255
        129.0.0.0 ~ 129.0.255.255
        ....
        191.255.0.0 ~ 192.255.255.255
      • Class C: (至少有 32*256*256 組)
        192.0.0.0 ~ 192.0.0.255
        192.0.1.0 ~ 192.0.1.255
        ....
        223.255.255.0 ~ 223.255.255.255
    2. 簡易的 IP 等級判斷,看第一個 10 進位數字
      • 開頭為 0~127 為 Class A,且第 1 個 10 進位數字不變,每組共可以擁有 256^3 的 IP 位址
      • 開頭為 128~191 為 Class B,且第 1, 2 個 10 進位數字不變,每組共可以擁有 256^2 的 IP 位址
      • 開頭為 192~223 為 Class C,且第 1, 2, 3 個 10 進位數字不變,每組共可以擁有 256 的 IP 位址
    3. IP 位址區域網路整體網域的基本寫法
      • Class A:以 10 開頭為例: 10.0.0.0/8 --> 10.0.0.0/255.0.0.0 --> 10.0.0.1~10.255.255.254 為可用 IP
      • Class B:以 172.24 開頭為例: 172.24.0.0/16 --> 172.24.0.0/255.255.0.0 --> 172.24.0.1 ~ 172.24.255.254 為可用 IP
      • Class C:以 192.168.0 開頭為例: 192.168.0.0/24 --> 192.168.0.0/255.255.255.0 --> 192.168.0.1 ~ 192.168.0.254 為可用 IP
      • 所以,基本寫法當中,就會有幾個 IP 數值:
        • IP :就是 IP 位址
        • Network IP:網域 IP,亦即整組 IP 的第一個 IP,不能用於設定 IP 位址
        • Broadcast IP:廣播 IP,亦即整組 IP 的最後一個 IP,不能用於設定 IP 位址
        • Netmask IP:子網路遮罩,亦為 32 位元,為指定網域的重要參數。
      • 請問 (1) 172.16.50.30 以及 (2) 192.168.10.10 (3) 61.3.2.1 預設各屬於那一個網段?
  5. Layer 3 網路層的 IP 位址 (IP address) - IP 種類與私有 IP 的網段
    1. IP 的總類:
      • public (公有、公共 IP 位址):
        • 從 ISP 處取得,設定須完全依據 ISP 提供的資料來設定
        • 可以直接架設網站,Internet 上面的用戶端可以直接連線到你的這部機器上
      • private (私有、保留 IP 位址):
        • 可以自由指定在內部網路,無須考慮 Internet 的其他來源
        • 不能直接連上 Internet
        • 若需要連上 Interent 需要透過 IP 分享器 (其實是 NAT 技術)
    2. 私有 IP 的位址
      • Class A: 10.0.0.0/8 (一組)
      • Class B: 172.16.0.0/16 ~ 172.31.0.0/16 (16 組)
      • Class C: 192.168.0.0/24 ~ 192.168.255.0/24 (256 組)
    3. 練習:
      • 172.24.100.2/16 的
        • network IP
        • broadcast IP
        • netmask IP
        • 可用的 IP 範圍
      • 192.168.100.32/24 的
        • network IP
        • broadcast IP
        • netmask IP
        • 可用的 IP 範圍
      • 每一部可以連上 Internet 的主機都會有的 IP 與網段分別是?
  6. 區域網路與相關的網路參數
    1. 區域網路除了實體的線路需要連接在一起之外, IP 位址需要為同一個區段
    2. 所謂的 IP 位址同一區段 (區域網路) ,假設 192.168.1.0/24 這一個項目:
      • 因為 /24 的關係,所以前面 24 個位元為網域 ID,不可變動 (32 位元來思考)
      • 192.168.1 為網域 ID ,不可變動 (大家都一樣)
      • 最後一個 10 位數可由 0~255,但 0 與 255 (頭尾) 有特殊用途,因此只能使用 1~254 這幾個
      • 所以可用 IP 就是 192.168.1.1 ~ 192.168.1.254 了!
    3. 區域網路裡面的所有電腦,都可以透過網路卡直接廣播溝通,無須透過路由器
    4. 但若傳輸的資料不在區域網路內(例如連上 google),則需要透過路由器 (或閘道器)。
    5. 我們通常不用 IP 直接上網,而是使用主機名稱上網,因此就得需要透過 DNS 伺服器協助我們處理主機名稱轉成 IP 的目的。
    6. 最終需要的網路參數有:
      • IP/Netmask
      • Gateway
      • DNS server
  7. 主機上的網路參數取得方式
    1. 自動取得 (auto):
      學名為 DHCP 服務,類似 IP 分享器後面的 PC 設定值,網路參數是 DHCP 伺服器提供的,而 DHCP 伺服器則直接設定在 IP 分享器。
    2. 手動設定 (manual):
      向 ISP 取得前一小題的網路參數後,自己手動設定在你的系統中。例如崑山科大實驗室、辦公室內的電腦就是這種設定方式。
    3. ADLS 與光世代撥接:
      就是透過附掛在電話線上面的撥接方式來取得網路參數的方法,得要向 ISP 註冊並取得帳號密碼後,才能夠上網的方式。
    4. 第四台纜線 (Cable):
      有線電視台的線路內含光纖的頻段,該頻段可以拿來作為網路上網的方式。與撥接類似,需要向 ISP 申請數據機來上網, 至於網路參數的取得就有點類似 DHCP 了。
  8. Linux 主機的網路連線界面觀察
    1. 觀察目前的連線界面有哪些
      # nmcli connection show
      NAME        UUID                                  TYPE            DEVICE
      virbr0-nic  3b650a23-c58f-4116-9351-195e6895c969  generic         virbr0-nic
      virbr0      08f7cf02-986a-47de-844f-4176b1694288  bridge          virbr0
      eth0        5d4419c4-ca15-468d-96fd-b6a4942d847d  802-3-ethernet  eth0
      
      上面的那個 NAME 的項目,就是實際的網路連線界面,而後面的 DEVICE 則是實體的網卡名稱。
    2. 刪除與新增連線界面的方法
      • 實際的指令操作都是『 nmcli connection [add|delete|modify|show|up|down] 連線界面 』
      • 刪除很簡單,就用『 nmcli connection delete XXX 』即可。
      • 新增比較麻煩,需要有 con-name, type (ehternet), ifname 等等的項目。
    3. 練習:
      • 因為我們的系統都是來自同一個硬碟,因此連線的界面其實是有問題的。請將他刪除後,再建立一個名為 eth0 的連線界面。
  9. Linux 主機的實際 IP 參數設定
    1. 觀察連線界面的實際設定值
      # nmcli connection show eth0
      connection.id:                          eth0
      connection.uuid:                        5d4419c4-ca15-468d-96fd-b6a4942d847d
      connection.interface-name:              eth0
      connection.type:                        802-3-ethernet
      connection.autoconnect:                 yes
      connection.autoconnect-priority:        0
      connection.timestamp:                   1475580506
      connection.read-only:                   no
      connection.permissions:
      connection.zone:                        --
      connection.master:                      --
      connection.slave-type:                  --
      connection.autoconnect-slaves:          -1 (default)
      connection.secondaries:
      connection.gateway-ping-timeout:        0
      connection.metered:                     不明
      802-3-ethernet.port:                    --
      802-3-ethernet.speed:                   0
      802-3-ethernet.duplex:                  --
      802-3-ethernet.auto-negotiate:          yes
      802-3-ethernet.mac-address:             --
      802-3-ethernet.cloned-mac-address:      --
      802-3-ethernet.mac-address-blacklist:
      802-3-ethernet.mtu:                     auto
      802-3-ethernet.s390-subchannels:
      802-3-ethernet.s390-nettype:            --
      802-3-ethernet.s390-options:
      802-3-ethernet.wake-on-lan:             1 (default)
      802-3-ethernet.wake-on-lan-password:    --
      ipv4.method:                            manual
      ipv4.dns:                               168.95.1.1
      ipv4.dns-search:
      ipv4.addresses:                         172.20.0.100/24
      ipv4.gateway:                           172.20.0.254
      ipv4.routes:
      ipv4.route-metric:                      -1
      ipv4.ignore-auto-routes:                no
      ipv4.ignore-auto-dns:                   no
      ipv4.dhcp-client-id:                    --
      ipv4.dhcp-send-hostname:                yes
      ipv4.dhcp-hostname:                     --
      ipv4.never-default:                     no
      ipv4.may-fail:                          yes
      ipv6.method:                            auto
      ipv6.dns:
      ipv6.dns-search:
      ipv6.addresses:
      ipv6.gateway:                           --
      ipv6.routes:
      ipv6.route-metric:                      -1
      ipv6.ignore-auto-routes:                no
      ipv6.ignore-auto-dns:                   no
      ipv6.never-default:                     no
      ipv6.may-fail:                          yes
      ipv6.ip6-privacy:                       -1(不明)
      ipv6.dhcp-send-hostname:                yes
      ipv6.dhcp-hostname:                     --
      GENERAL.NAME:                           eth0
      GENERAL.UUID:                           5d4419c4-ca15-468d-96fd-b6a4942d847d
      GENERAL.DEVICES:                        eth0
      GENERAL.STATE:                          已啟用
      GENERAL.DEFAULT:                        是
      GENERAL.DEFAULT6:                       否
      GENERAL.VPN:                            否
      GENERAL.ZONE:                           --
      GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/0
      GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/0
      GENERAL.SPEC-OBJECT:                    /
      GENERAL.MASTER-PATH:                    --
      IP4.ADDRESS[1]:                         172.20.0.100/24
      IP4.GATEWAY:                            172.20.0.254
      IP4.DNS[1]:                             168.95.1.1
      IP6.ADDRESS[1]:                         fe80::5054:ff:fe42:862e/64
      IP6.GATEWAY:
      
      小寫的部份為設定值,大寫的部份為目前實際運作中的情況!
    2. 實際設定 IP 位址參數的方法
      nmcli connection [ modify eth0 ] [ connection.autoconnect yes ] [ ipv4.method manual ]
                       [ ipv4.addresses IP/NETMASK ] [ ipv4.gateway GWIP ] [ ipv4.dns DNSIP ]
      
    3. 練習:
      • 你的內部網路為 172.20.0.*/16 (* 為你的學號尾數)
      • 你的 Gateway 為 172.20.0.254
      • DNS Server IP 使用 120.114.100.1 及 120.114.150.1
    4. 主機名稱設定
      • 每部主機應該都有自己的主機名稱,而這部主機名稱最好能夠有相對應的 IP 才好!
      • 可以使用 hostnamectl 來進行主機名稱的查詢
      • 可以使用『 hostnamectl set-hostname 主機名 』來設定你的主機名稱
      • 若需要讓這個主機名稱與你的 IP 對應,應該要修改 /etc/hosts 這個檔案的內容才行。
    5. 練習:
      • 讓你的主機名稱成為 stationXX.example.dic
      • 讓這個主機名稱與你的 IP 達成對應
      • 最後 ping stationXX.example.dic 時,會出現相對的 IP 顯示。
      • 當 ping gateway.example.dic 時,會連線到 172.20.0.254 那個 IP 上。

  10. 網路參數的檢測流程:
    1. 檢查 IP/netmask 可以使用『 ifconfig 』、『 ip addr show 』、『 nmcli connection show eth0 』
    2. 檢查 gateway 可以使用『 route -n 』、『 nmcli connection show eth0 』
    3. 檢查你的主機到 gateway 之間的連線,可以使用 ping
    4. 檢查 DNS 有沒有運作,可以使用 dig www.google.com
    5. 可以使用 ping 168.95.1.1 對中華電信最大的 DNS 伺服器進行連線測試
    6. 上述流程每一步都要成功!
  11. 綜合練習
    1. 網路參數的設定 (會持續用到學期末)
      • 你的內部網路為 192.168.40.*/24 (* 為你的學號尾數)
      • 你的 Gateway 為 192.168.40.254
      • DNS IP 使用 172.16.200.254 及 168.95.1.1
    2. 主機名稱的設定:
      • 主機名稱請設定為 siteXX.dic.ksu
      • 當 ping siteXX.dic.ksu 時,會自動連線到 192.168.40.XX 那個 IP 上面
      • 當 ping site254.dic.ksu 時,會自動連線到 192.168.40.254 那個 IP 上面
    3. 透過 root 帳號,使用『 vim YYYYMMDD.txt 』建立今天的答案檔,分別回答下列的題目:
      1. 請從底層到上層,寫出 OSI 七層協定的各層中文名稱
      2. Layer 2 使用的封包 (訊框) 為 MAC,在這個封包上的表頭,有重要的什麼位址?
      3. Layer 3 使用了 IP 封包,這個封包的表頭上有什麼重要的位址?
      4. Layer 4 主要使用了那兩種封包?
      5. Layer 4 的封包上有什麼重要的來源與目標的資訊?
      6. 寫下 http, https, ftp, ssh 這四個服務的預設埠口號碼為幾號?
      7. 當網路速度為 60Mbps 時,下載一個 500Mbytes 的檔案大概需要多久的時間?
      8. 寫下 192.168.30.10/24 的 (1)Network IP, (2)Broadcast IP, (3) Netmask IP, (4)可用 IP 範圍
      9. DNS 這個服務的主要功能為何?
      10. 私有 IP 對應的主機名稱,通常寫在哪個檔案裡面做對應?
      11. 每一部可以連上 Internet 的主機都會有的 IP 與網段分別是?
Top
HOME