伺服器建置實務上課補充教材
- 最新消息:
- 授課教材:鳥哥的 Linux 私房菜-伺服器架設篇第三版
- 每週都有可能會有上機實作,要等老師檢查完畢才能夠下課!否則就不算有來上課!
- 回首頁
- 舊版教材簡易介紹
unit 04:認識網路基礎與 Linux 網路設定
- 基礎網路介紹 - OSI 七層協定
- 為什麼要分層:
- 網路開發之初,為了讓撰寫程式變得更容易,因此將整體的網路設計切成 7 個部份來撰寫
- 每個部份只要針對自己所需要的功能來撰寫即可
- 好處是,在開發上面就會比較不會互相干擾,你也可以自行修改其中某一部份,而且改完之後,並不會影響其他部份
- 這就是網路堆疊的設計原理。
- 網路開發模型的標準: OSI 七層協定:
- 根據上述的開發原則,最早提出的網路架構就是所謂的 OSI 七層協定
- 七層由偏硬體的底層到偏軟體的上層分別是:實體、資料鏈結、網路、傳輸、會談、表現、應用等七層
- 這七層的相關性可以是這樣的:
- 最有趣的想法:大箱包小箱的整人遊戲!不過,唯一的差別是,發送端與接收端,都只會知道同一個層級的資料而已!
- 事實上,每一個層你都可以將他視為一個完整的包裹 (packet),這個包裹會有實際資料以及表頭資料 (header),
表頭資料就是『信封上面需要填寫的,收件人是誰?發件人是誰?以及內部的可能資料為何』這樣而已。
- 透過分析表頭資料,信件就可以一關一關的發送出去!
- 所謂的網路基礎,指的是資料鏈結 (layer 2)、網路 (layer 3) 及傳輸層 (layer 4)
- Layer2 重點在 MAC 訊框,這個訊框表頭重點在 MAC 網卡的卡號 (共有 6bytes 的記載,使用 16 進位紀錄的)
- Layer3 重點在 IP 封包,這個封包表頭重點在 IP 位址,基本上目前台灣還是使用 IPv4 這個 32 位元 (bit) 紀錄的位址長度
- Layer4 重點在 TCP/UDP 封包,這兩個封包的表頭資料重點在埠口號碼 (port number)
- 關於埠口號碼:
- 埠口號碼通常為 0~65535 號
- 其中 < 1024 為使用在常見的通訊服務啟動之用
- 用戶端連線主要啟動者為 > 1024 以上的埠口。
- 關於 IP socket (插槽之意)
- 網路是雙向的,你自己需要有 IP 才能夠連接到伺服器的 IP,同時你也需要啟動一個埠口來連線到伺服器埠口
- 當你的瀏覽器連接到 google 時,基本上會是這樣連線的:
your.IP:youport <==> Google.IP:443
- 基礎網路介紹 - TCP/IP
- OSI 與 TCP/IP
- 由美國國防部與柏克萊大學合作開發出的網路模型,簡化 OSI 七層成為四層,稱為 TCP/IP
- OSI 七層與 TCP/IP 的對照如下:
- 針對實體區域網路 (全部裝置用網路線集中於集線器/交換器上面的連線方式)
- 區域網路當中 (電腦透過網路線,直接連接到 hub/switch 而互連的環境),資料直接透過網路卡傳遞 (所謂的廣播)
- 承上,網路卡彼此認識則是透過 layer 2 的 MAC 封包,這個封包上面有重要的來源與目標之 MAC Address (網卡卡號)
- TCP 與 UDP
- TCP 為可靠連結導向,有所謂的三向交握,大部分的網路服務都是這種封包模式
- UDP 為非連接導向的封包,射後不理,大部分的直播影音都是這種封包模式
- 因為 UDP 可以射後不理,因此許多的木馬、蠕蟲攻擊,都是透過這種封包格式,因此許多企業內,會將這種封包格式拒絕進出防火牆。
- 練習:
- 分別在 windows 與 Linux 裡面,透過相關的指令,查詢出所謂的 Layer 2 的網卡卡號 (MAC address)
- 使用 ping 172.16.200.254 之後,再透過 arp -n ,找出區域網路內的其他裝置的網卡卡號
- 在傳輸層當中的兩種封包格式中,那一種封包是屬於可靠連線,資料肯定不會遺失?
- 試說明 http, https, FTP, ssh 等協定的功能與使用的正規埠口號碼
- Layer 3 網路層的 IP 位址 (IP address)
- 位元 (bit) 與位元組 (bytes)
- 位元指二進位的數值,亦即只有 0 與 1,不會出現 2 !這就是所謂的二進位。
- 因為位元太小,因此習慣上,以 8 個位元作為一個記憶單位,稱為位元組 (bytes),因此 1 byte = 8 bits
- 檔案容量都是使用位元組 (bytes),而網路傳輸則因為都是 0 與 1 的傳遞,因此網路單位大多使用位元。
- 舉例來說, ADSL 非對稱傳輸 100Mbps 與 40Mbps,即是指 100Mbit/sec 以及 40Mbit/sec,轉成檔案單位,要再除以 8 才行。
- 你家的網路下載最高可達 100Mbps,請問,下載一個 1GBytes 的檔案,大約需要多久的時間?
- IPv4 的 IP 位址為 32 位元,所以
- 最小:00000000.00000000.00000000.00000000 --> 0.0.0.0
- 最大:11111111.11111111.11111111.11111111 --> 255.255.255.255
- 使用小數點隔開,每個位置的十進位數值為 0~255,不可能大於 255 以上喔!
- Layer 3 網路層的 IP 位址 (IP address) - IP 的等級與預設網域
- 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
- 簡易的 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 位址
- 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 預設各屬於那一個網段?
- Layer 3 網路層的 IP 位址 (IP address) - IP 種類與私有 IP 的網段
- IP 的總類:
- public (公有、公共 IP 位址):
- 從 ISP 處取得,設定須完全依據 ISP 提供的資料來設定
- 可以直接架設網站,Internet 上面的用戶端可以直接連線到你的這部機器上
- private (私有、保留 IP 位址):
- 可以自由指定在內部網路,無須考慮 Internet 的其他來源
- 不能直接連上 Internet
- 若需要連上 Interent 需要透過 IP 分享器 (其實是 NAT 技術)
- 私有 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 組)
- 練習:
- 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 與網段分別是?
- 區域網路與相關的網路參數
- 區域網路除了實體的線路需要連接在一起之外, IP 位址需要為同一個區段
- 所謂的 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 了!
- 區域網路裡面的所有電腦,都可以透過網路卡直接廣播溝通,無須透過路由器
- 但若傳輸的資料不在區域網路內(例如連上 google),則需要透過路由器 (或閘道器)。
- 我們通常不用 IP 直接上網,而是使用主機名稱上網,因此就得需要透過 DNS 伺服器協助我們處理主機名稱轉成 IP 的目的。
- 最終需要的網路參數有:
- IP/Netmask
- Gateway
- DNS server
- 主機上的網路參數取得方式
- 自動取得 (auto):
學名為 DHCP 服務,類似 IP 分享器後面的 PC 設定值,網路參數是 DHCP 伺服器提供的,而 DHCP 伺服器則直接設定在 IP 分享器。
- 手動設定 (manual):
向 ISP 取得前一小題的網路參數後,自己手動設定在你的系統中。例如崑山科大實驗室、辦公室內的電腦就是這種設定方式。
- ADLS 與光世代撥接:
就是透過附掛在電話線上面的撥接方式來取得網路參數的方法,得要向 ISP 註冊並取得帳號密碼後,才能夠上網的方式。
- 第四台纜線 (Cable):
有線電視台的線路內含光纖的頻段,該頻段可以拿來作為網路上網的方式。與撥接類似,需要向 ISP 申請數據機來上網,
至於網路參數的取得就有點類似 DHCP 了。
- Linux 主機的網路連線界面觀察
- 觀察目前的連線界面有哪些
# 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 則是實體的網卡名稱。
- 刪除與新增連線界面的方法
- 實際的指令操作都是『 nmcli connection [add|delete|modify|show|up|down] 連線界面 』
- 刪除很簡單,就用『 nmcli connection delete XXX 』即可。
- 新增比較麻煩,需要有 con-name, type (ehternet), ifname 等等的項目。
- 練習:
- 因為我們的系統都是來自同一個硬碟,因此連線的界面其實是有問題的。請將他刪除後,再建立一個名為 eth0 的連線界面。
- Linux 主機的實際 IP 參數設定
- 觀察連線界面的實際設定值
# 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:
小寫的部份為設定值,大寫的部份為目前實際運作中的情況!
- 實際設定 IP 位址參數的方法
nmcli connection [ modify eth0 ] [ connection.autoconnect yes ] [ ipv4.method manual ]
[ ipv4.addresses IP/NETMASK ] [ ipv4.gateway GWIP ] [ ipv4.dns DNSIP ]
- 練習:
- 你的內部網路為 172.20.0.*/16 (* 為你的學號尾數)
- 你的 Gateway 為 172.20.0.254
- DNS Server IP 使用 120.114.100.1 及 120.114.150.1
- 主機名稱設定
- 每部主機應該都有自己的主機名稱,而這部主機名稱最好能夠有相對應的 IP 才好!
- 可以使用 hostnamectl 來進行主機名稱的查詢
- 可以使用『 hostnamectl set-hostname 主機名 』來設定你的主機名稱
- 若需要讓這個主機名稱與你的 IP 對應,應該要修改 /etc/hosts 這個檔案的內容才行。
- 練習:
- 讓你的主機名稱成為 stationXX.example.dic
- 讓這個主機名稱與你的 IP 達成對應
- 最後 ping stationXX.example.dic 時,會出現相對的 IP 顯示。
- 當 ping gateway.example.dic 時,會連線到 172.20.0.254 那個 IP 上。
- 網路參數的檢測流程:
- 檢查 IP/netmask 可以使用『 ifconfig 』、『 ip addr show 』、『 nmcli connection show eth0 』
- 檢查 gateway 可以使用『 route -n 』、『 nmcli connection show eth0 』
- 檢查你的主機到 gateway 之間的連線,可以使用 ping
- 檢查 DNS 有沒有運作,可以使用 dig www.google.com
- 可以使用 ping 168.95.1.1 對中華電信最大的 DNS 伺服器進行連線測試
- 上述流程每一步都要成功!
- 綜合練習
- 網路參數的設定 (會持續用到學期末)
- 你的內部網路為 192.168.40.*/24 (* 為你的學號尾數)
- 你的 Gateway 為 192.168.40.254
- DNS IP 使用 172.16.200.254 及 168.95.1.1
- 主機名稱的設定:
- 主機名稱請設定為 siteXX.dic.ksu
- 當 ping siteXX.dic.ksu 時,會自動連線到 192.168.40.XX 那個 IP 上面
- 當 ping site254.dic.ksu 時,會自動連線到 192.168.40.254 那個 IP 上面
- 透過 root 帳號,使用『 vim YYYYMMDD.txt 』建立今天的答案檔,分別回答下列的題目:
- 請從底層到上層,寫出 OSI 七層協定的各層中文名稱
- Layer 2 使用的封包 (訊框) 為 MAC,在這個封包上的表頭,有重要的什麼位址?
- Layer 3 使用了 IP 封包,這個封包的表頭上有什麼重要的位址?
- Layer 4 主要使用了那兩種封包?
- Layer 4 的封包上有什麼重要的來源與目標的資訊?
- 寫下 http, https, ftp, ssh 這四個服務的預設埠口號碼為幾號?
- 當網路速度為 60Mbps 時,下載一個 500Mbytes 的檔案大概需要多久的時間?
- 寫下 192.168.30.10/24 的 (1)Network IP, (2)Broadcast IP, (3) Netmask IP, (4)可用 IP 範圍
- DNS 這個服務的主要功能為何?
- 私有 IP 對應的主機名稱,通常寫在哪個檔案裡面做對應?
- 每一部可以連上 Internet 的主機都會有的 IP 與網段分別是?