章節概覽#

本章深入介紹 Linux 網路的運作原理與設定方式。從最基本的網路概念(host、router、LAN)開始,逐步講解網路分層架構(network layers)、IP 位址與子網路、路由表、IPv6、DNS、實體層與 Ethernet,再到進階主題如 DHCP、NAT、防火牆(iptables)、無線網路等。

核心問題有兩個:

  • 傳送資料的電腦如何知道資料要送到哪裡(where)?
  • 接收端如何知道收到的是什麼(what)?

網路透過多個**網路層(network layers)**堆疊來回答這些問題,每一層負責不同面向的傳送、接收與識別工作。


9.1 Network Basics#

一個典型的家庭或小型辦公室網路包含:

  • 多台主機(host)連接到同一個區域網路(LAN, Local Area Network)
  • 其中一台是 router(路由器),可以在不同網路之間傳遞資料
  • Router 同時連接 LAN 和網際網路,透過 uplink(也稱 WAN 連線)存取外部網路

LAN 的連線可以是有線或無線,LAN 上的機器通常在物理上相近,並共享大部分的設定與存取權限。

Figure 9-1: A typical local area network with a router


9.2 Packets#

電腦透過網路傳送的資料被切分為小塊,稱為 packets(封包)。每個封包包含:

  • Header:識別資訊,如來源與目的地主機、協定等
  • Payload:實際要傳送的應用程式資料(如 HTML、圖片)

將訊息切成封包的好處:

  • 允許多台主機「同時」通訊
  • 更容易偵測與補償傳輸錯誤

9.3 Network Layers#

完整的網路系統包含一組稱為 network stack 的網路層,從上到下為:

Application Layer(應用層)#

  • 應用程式溝通用的高階協定
  • 常見協定:HTTPTLSFTP
  • 處理發生在 user space

Transport Layer(傳輸層)#

  • 定義資料傳輸特性,包含完整性檢查、port 號、將資料拆分與重組為封包
  • 主要協定:TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)
  • 也稱為 protocol layer
  • 在 Linux 中,傳輸層及以下主要由 kernel 處理

Network Layer(網路層/Internet Layer)#

  • 定義如何將封包從來源主機送到目的主機
  • 使用 Internet Protocol (IP)
  • 是一個純軟體網路,不依賴特定硬體或作業系統

Physical Layer(實體層)#

  • 定義如何透過實體媒介傳送原始資料
  • 如 Ethernet 或 modem
  • 也稱為 link layerhost-to-network layer

你可能聽過 OSI 七層模型,但本書使用更實務的四層模型,因為這與 Linux 實際運作更貼近。


9.4 The Internet Layer#

Internet 基於 IPv4IPv6 兩個版本。Internet layer 的重要特性是它是純軟體網路,不對硬體有特定要求。

網路的拓撲是去中心化的,由較小的網路(subnets,子網路)互相連接而成。一台主機如果能在不同 subnet 之間轉發資料,就稱為 router(也叫 gateway)。

每台 internet 主機至少有一個 IP address。IPv4 位址的格式為 a.b.c.d(如 10.23.2.37),稱為 dotted-quad 表示法。

Figure 9-2: Network with IP addresses

9.4.1 Viewing IP Addresses#

使用 ip 指令查看機器上的 IP 位址:

ip address show

輸出會按 network interface 分組顯示,包含 IPv4 位址(以 inet 標示)和 subnet 資訊(如 /24)。

ip 指令是目前標準的網路設定工具,取代了舊版的 ifconfigroutearp

9.4.2 Subnets#

Subnet(子網路)是一組具有特定 IP 範圍的主機集合。定義 subnet 需要兩個部分:

  • Network prefix(網路前綴,也叫 routing prefix):subnet 中所有位址共同的部分
  • Subnet mask(子網路遮罩):標示哪些 bit 屬於網路前綴

例如:IP 位址 10.23.2.1 搭配 subnet mask 255.255.255.0,表示與任何以 10.23.2 開頭的位址在同一 subnet。

9.4.3 Common Subnet Masks and CIDR Notation#

CIDR(Classless Inter-Domain Routing)表示法是更簡潔的子網路寫法,用前綴長度取代完整的 subnet mask:

Long formCIDR form
255.0.0.0/8
255.255.0.0/16
255.240.0.0/12
255.255.255.0/24
255.255.255.192/26

/24 是終端使用者網路最常見的 subnet mask。


9.5 Routes and the Kernel Routing Table#

Linux kernel 使用 routing table(路由表)來決定封包的傳送方式。查看路由表:

ip route show

輸出的每一行都是一條路由規則:

  • 目標 subnet 對應到特定 network interface(如 dev enp0s31f6)的規則,表示可直接到達
  • default 規則表示預設路由,當沒有其他規則匹配時使用

9.6 The Default Gateway#

路由表中的 default 條目(CIDR 表示為 0.0.0.0/0)匹配任何位址,其設定的中介位址就是 default gateway(預設閘道)。

  • 當沒有其他路由規則匹配時,封包會被送往 default gateway
  • 在大多數 /24 網路中,router 通常位於 subnet 的位址 1(如 10.23.2.1)

Kernel 選擇路由時,會優先匹配最長前綴(longest prefix match)。例如 10.23.2.0/24(24 bits)優先於 0.0.0.0/0(0 bits)。


9.7 IPv6 Addresses and Networks#

IPv4 位址只有 32 bits(約 43 億個位址),已不足以應對現今網際網路規模。IPv6 使用 128 bits(32 bytes),分為 8 組各 4 bytes 的十六進位表示:

2001:0db8:0a0b:12f0:0000:0000:0000:8b6e

可以省略前導零和連續的零組(用 :: 表示):

2001:db8:a0b:12f0::8b6e

Figure 9-3: Subnet and interface ID of a typical IPv6 address

IPv6 的關鍵概念:

  • Interface ID:位址中主機獨有的部分(通常是後 64 bits)
  • Global unicast address:全球有效的位址,前綴為 2000::/3
  • Link-local address:本地網路用的位址,前綴為 fe80::/10

9.7.1 Viewing IPv6 Configuration on Your System#

ip -6 address show
ip -6 route show

IPv6 路由表比 IPv4 更複雜,因為同時設定了 link-local 和 global subnets。Default route 在 IPv6 中以 ::/0 表示。

9.7.2 Configuring Dual-Stack Networks#

可以在同一台主機上同時執行 IPv4 和 IPv6,稱為 dual-stack network。IPv4 和 IPv6 協定彼此獨立,應用程式可選擇使用哪一個。大多數重要的應用程式和伺服器現在都支援 IPv6。


9.8 Basic ICMP and DNS Tools#

兩個重要的實用工具:

  • ICMP(Internet Control Message Protocol):用於網路診斷與設定
  • DNS(Domain Name Service):將人類可讀的名稱映射到 IP 位址

9.8.1 ping#

ping 是最基本的網路偵錯工具,傳送 ICMP echo request 封包並等待回應:

ping 10.23.2.1

重要觀察指標:

  • icmp_req:序號,若有間隔代表可能有連線問題
  • time:往返時間(round-trip time),超過 1000 ms 表示極慢
  • 有線 LAN 上應該幾乎沒有封包遺失

某些主機基於安全考量會停用 ICMP echo 回應,所以 ping 不通不一定代表主機不可達。

9.8.2 DNS and host#

使用 host 指令查詢 domain name 對應的 IP 位址:

host www.example.com

也可以反向查詢(輸入 IP 查 hostname),但不一定可靠。


9.9 The Physical Layer and Ethernet#

Internet 是純軟體網路,但實際傳輸需要實體層。最常見的實體層是 Ethernet

Ethernet 網路的共同特徵:

  • 每個裝置都有一個 MAC address(Media Access Control address),也叫 hardware address,獨立於 IP 位址
  • 裝置以 frames 傳送資料,frame 包含來源和目的 MAC 位址

Ethernet 不跨越實體網路邊界。Router 可以從一個 frame 取出資料、重新包裝,再送到另一個實體網路上。


9.10 Understanding Kernel Network Interfaces#

Linux kernel 透過 kernel network interface 連接實體層和 internet 層。設定 network interface 時,會把 IP 位址設定(internet 層)和硬體識別(physical device)連結起來。

  • Interface 名稱通常反映底層硬體類型,如 enp0s31f6(PCI 槽的 Ethernet)
  • 這稱為 predictable network interface device name,重開機後不會改變
  • 舊式名稱如 eth0wlan0 在大多數 systemd 系統上會被快速重新命名

每個 network interface 有一個編號,interface 1 幾乎總是 loopback(見 9.16 節)。ip 輸出中的 UP flag 表示 interface 正在運作。

若要深入查看硬體層資訊,可使用 ethtool 指令。


9.11 Introduction to Network Interface Configuration#

要將 Linux 機器連上網路,需要完成以下步驟:

  1. 連接硬體並確保 kernel 有對應的 driver
  2. 執行額外的實體層設定(如選擇無線網路名稱)
  3. 將 IP 位址和 subnet 指派給 kernel network interface
  4. 新增必要的路由(包括 default gateway)

9.11.1 Manually Configuring Interfaces#

使用 ip 指令手動設定 interface:

# ip address add address/subnet dev interface

9.11.2 Manually Adding and Deleting Routes#

# ip route add default via gw-address dev interface
# ip route del default
# ip route add 192.168.45.0/24 via 10.23.2.44
# ip route del 192.168.45.0/24

手動設定路由通常比想像中複雜。一般建議保持簡單,讓 router 負責 subnet 之間的路由工作。


9.12 Boot-Activated Network Configuration#

傳統上透過開機腳本執行 ip 指令來設定網路。Linux 中有多種開機時網路設定的標準化嘗試(如 ifup / ifdown),但不同發行版的實作差異很大。

Netplan 提供了不同的方式:它是統一的網路設定標準,使用 YAML 格式的設定檔(位於 /etc/netplan),並將設定轉換為現有網路管理工具(如 NetworkManager、systemd-networkd)能使用的格式。


9.13 Problems with Manual and Boot-Activated Network Configuration#

現代網路的動態性質帶來了挑戰:

  • 大多數機器沒有靜態 IP 位址,需要在連接網路時動態取得設定
  • DHCP(Dynamic Host Configuration Protocol)在 IPv4 中處理這項工作
  • IPv6 的客戶端有一定程度的自我設定能力

無線網路更增加了複雜度:

  • 需要掃描網路名稱、選擇認證方式、處理加密
  • 需要在多個實體 interface 間選擇
  • 需要處理 interface 斷線時的應變

這些問題超出了簡單開機腳本的處理能力,因此需要 network configuration manager


9.14 Network Configuration Managers#

Linux 中有多種自動設定網路的方式:

  • NetworkManager:桌面和筆電上最廣泛使用的選項
  • systemd-networkd:systemd 的附加元件,適合不需太多彈性的伺服器
  • 其他:OpenWRT 的 netifd、Android 的 ConnectivityManager、ConnMan、Wicd

9.14.1 NetworkManager Operation#

NetworkManager 是一個開機時啟動的 daemon,負責:

  • 收集可用硬體裝置資訊(透過 udev 和 D-Bus)
  • 維護 connections 清單(包含硬體裝置及網路層參數)
  • 啟用連線時委派給專門工具(如 dhclient

Ethernet interface 的連線優先順序:

  1. 有線連線可用則優先使用
  2. 掃描無線網路,優先連接曾經連過的
  3. 多個曾連過的無線網路可用時,選最近連過的

9.14.2 NetworkManager Interaction#

  • 桌面環境提供圖形化 applet 管理連線
  • 命令列工具:nmcli(查詢和控制 NetworkManager)
  • nm-online:檢查網路是否上線(exit code 0 表示上線)

9.14.3 NetworkManager Configuration#

  • 主要設定目錄:/etc/NetworkManager
  • 一般設定檔:NetworkManager.conf(INI 格式)
  • 連線設定:/etc/NetworkManager/system-connections

Unmanaged Interfaces(不受管理的 interface)

  • 可以設定 NetworkManager 忽略某些 interface(如 localhost)
  • NetworkManager.conf 中設定 managed=false 或在 keyfile 區段指定 MAC 位址

Dispatching

  • 網路狀態改變時,NetworkManager 執行 /etc/NetworkManager/dispatcher.d 中的腳本

9.15 Resolving Hostnames#

DNS(Domain Name Service)將人類可讀的名稱(如 www.example.com )轉換為 IP 位址。DNS 在應用層運作,完全在 user space 中處理。

主機名稱解析的典型流程:

  1. 應用程式呼叫共享函式庫中的查詢函式
  2. 函式根據 /etc/nsswitch.conf 的規則決定查詢策略
  3. 可能先檢查 /etc/hosts,再查 DNS
  4. 向 DNS name server 發送查詢請求
  5. Name server 回覆 IP 位址

9.15.1 /etc/hosts#

用來覆蓋 hostname 查詢的本地檔案:

127.0.0.1       localhost
10.23.2.3       atlantic.aem7.net    atlantic
10.23.2.4       pacific.aem7.net     pacific
::1             localhost ip6-localhost

9.15.2 resolv.conf#

DNS 伺服器的傳統設定檔為 /etc/resolv.conf

search mydomain.example.com example.com
nameserver 10.32.45.23
nameserver 10.3.2.3
  • search 行定義不完整 hostname 的補全規則
  • 現代系統中,DNS 設定已變得更複雜

9.15.3 Caching and Zero-Configuration DNS#

傳統 DNS 設定的兩個問題:

  • 本機不快取 name server 回覆,導致重複查詢很慢
  • 單一 name server 設定不夠彈性

解決方案:

  • systemd-resolved:最常見的快取 daemon,能結合多個 name lookup 服務
  • 其他選項:dnsmasq、nscd、BIND
  • 使用 resolvectl status 查看 DNS 設定

Zero-configuration DNS

  • mDNS(Multicast DNS)和 LLMNR(Link-Local Multicast Name Resolution)允許在區域網路中透過廣播查找主機名稱
  • 不需要預先設定 DNS server

9.15.4 /etc/nsswitch.conf#

控制名稱查詢優先順序的設定檔。應包含類似這行:

hosts:       files dns

filesdns 前面,表示先查 /etc/hosts 再查 DNS。

/etc/hosts 應盡量保持簡短。如果某個主機已有 DNS 條目,就不該放在 /etc/hosts 中。


9.16 Localhost#

lo 是一個虛擬的 loopback interface,連接到 127.0.0.1(IPv4)或 ::1(IPv6)等同連接到本機。

ip address show
# 1: lo: <LOOPBACK,UP,LOWER_UP> ...
#     inet 127.0.0.1/8 scope host lo
#     inet6 ::1/128 scope host

特性:

  • Loopback 的 netmask 是 /8,任何以 127 開頭的位址都指向 loopback
  • 這允許在不同 IPv4 位址上執行不同的伺服器(如 systemd-resolved 使用 127.0.0.53)
  • IPv6 目前只定義一個 loopback 位址(::1)

9.17 The Transport Layer: TCP, UDP, and Services#

Transport layer 橋接 internet layer 的原始封包與應用程式的精細需求。兩個主要協定:

9.17.1 TCP Ports and Connections#

TCP(Transmission Control Protocol)透過 port(埠號)讓同一台機器上的多個應用程式同時使用網路。

Figure 9-4: Sending a message with TCP

  • Connection(連線):本機某個 port 和遠端某個 port 之間的配對
  • 查看目前的 TCP 連線:netstat -nt
  • 查看 listening 的 port:netstat -ntl

建立連線

  • Client 從本機選一個未使用的 port,連到 server 上的已知 port
  • Ephemeral port(臨時 port):動態指派的 port 號

Port Numbers and /etc/services

  • Port 1-1023 為 privileged ports,只有 superuser 可使用
  • /etc/services 檔案記錄已知 port 與服務名稱的對應
  • IANA(http://www.iana.org/)維護線上的 port 註冊表

TCP 的特性

  • 應用程式只需知道如何 open、read、write、close 連線
  • TCP 在背後處理封包拆分、重組、排序、錯誤偵測和重傳
  • Linux 的 TCP 實作主要在 kernel 中

9.17.2 UDP#

UDP(User Datagram Protocol)是更簡單的傳輸層協定:

  • 只用於傳送單一訊息,沒有資料流概念
  • 不修正遺失或亂序的封包
  • 沒有連線概念,只有 port
  • 有錯誤偵測但不做修正
  • 適合重視速度的應用:NTP(網路時間協定)、視訊聊天等

TCP 像打電話,UDP 像寄明信片。TCP 提供可靠的雙向通訊,UDP 提供快速但不保證的單向訊息傳遞。


9.18 Revisiting a Simple Local Network#

回顧簡單的區域網路架構,本節涵蓋:

  • 主機如何自動取得網路設定
  • 如何設定路由
  • Router 的真正角色
  • 如何選擇 subnet IP 位址
  • 如何設定防火牆過濾不要的流量

9.19 Understanding DHCP#

DHCP(Dynamic Host Configuration Protocol)讓網路主機自動取得:

  • IP 位址
  • Subnet mask
  • Default gateway
  • DNS servers

DHCP 使用 lease(租約)機制,客戶端在一段時間內使用某個 IP 位址,到期可續約。

初始 DHCP 請求時,主機不知道 DHCP server 的位址,因此會向所有主機廣播請求。

9.19.1 Linux DHCP Clients#

  • dhclient:傳統的 ISC DHCP 客戶端程式
    • PID 存放在 /var/run/dhclient.pid
    • Lease 資訊在 /var/lib/dhcp/dhclient.leases
  • systemd-networkd 也內建 DHCP 客戶端
# dhclient enp0s31f6

9.19.2 Linux DHCP Servers#

  • Linux 可以作為 DHCP server 使用
  • 同一 subnet 上只應執行一個 DHCP server,避免 IP 衝突

9.20 Automatic IPv6 Network Configuration#

IPv6 有一種不需要中央 server 的設定方式,稱為 stateless configuration(無狀態設定):

  1. 從 link-local 網路(fe80::/64)開始,主機產生一個不太可能重複的位址
  2. 主機廣播確認該位址未被使用
  3. 監聽 Router Advertisement (RA) 訊息,取得 global network prefix 和 router IP 位址
  4. 結合 prefix 和 interface ID 產生 global 位址

RA 訊息屬於 ICMPv6 協定的一部分。


9.21 Configuring Linux as a Router#

Router 只是擁有多個 network interface 的電腦。將 Linux 設定為 router:

Figure 9-5: Two subnets joined with a router

  1. 設定多個 network interface 的 IP 位址
  2. 啟用 IP forwarding
# sysctl -w net.ipv4.ip_forward=1
  1. 永久生效需加入 /etc/sysctl.conf/etc/sysctl.d 中的檔案

預設情況下,Linux kernel 不會自動在 subnet 之間轉發封包,必須明確啟用 IP forwarding。


9.22 Private Networks (IPv4)#

建立自己的網路時,應使用 RFC 1918/6761 定義的 private network 位址:

NetworkSubnet maskCIDR form
10.0.0.0255.0.0.010.0.0.0/8
192.168.0.0255.255.0.0192.168.0.0/16
172.16.0.0255.240.0.0172.16.0.0/12
  • 除非主機超過 254 台,否則使用 /24 的小 subnet 即可
  • Private subnet 上的主機無法直接與外部網路通訊,需要透過 NAT 解決

9.23 Network Address Translation (IP Masquerading)#

NAT 是讓 private network 共享單一公開 IP 位址存取網路的最常見方式。在 Linux 中稱為 IP masquerading

NAT 的運作流程:

  1. 內部主機發送封包到 router
  2. Router 攔截封包,用自己的公開位址建立新的連線到目的地
  3. Router 偽造「連線已建立」的回應給內部主機
  4. Router 成為內部主機和外部目的地之間的中間人

NAT 需要超越 internet layer,深入 transport layer 取得 UDP/TCP port 資訊來區分多個連線。

在 Linux 上設定 NAT router:

# sysctl -w net.ipv4.ip_forward=1
# iptables -P FORWARD DROP
# iptables -t nat -A POSTROUTING -o enp0s31f6 -j MASQUERADE
# iptables -A FORWARD -i enp0s31f6 -o enp0s2 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A FORWARD -i enp0s2 -o enp0s31f6 -j ACCEPT

NAT 本質上是延長 IPv4 位址空間壽命的權宜之計。IPv6 由於有足夠大的位址空間,不需要 NAT。


9.24 Routers and Linux#

在寬頻網路的早期,Linux 使用者常把一台 Linux 機器設為 router 來分享網路連線。後來製造商推出專用的 router 硬體,許多使用 Linux 作為底層作業系統。

OpenWRT 等專門的 Linux 發行版可安裝在 router 上,提供:

  • 比原廠韌體更穩定
  • 更多功能(如無線橋接)
  • 不限特定硬體型號
  • 通常使用 BusyBox 提供精簡的 shell 功能

9.25 Firewalls#

Firewall(防火牆)是軟體或硬體設定,過濾進出網路的流量,通常根據以下條件判斷:

  • 來源或目的 IP 位址/subnet
  • 來源或目的 port(transport layer)
  • 防火牆的 network interface

9.25.1 Linux Firewall Basics#

Linux 的防火牆規則以 chain(鏈)組成,chain 的集合稱為 table。Filter table 中有三個基本 chain:

  • INPUT:進入封包
  • OUTPUT:離開封包
  • FORWARD:轉發封包

整個系統稱為 iptables,同名的使用者空間指令用於建立和管理規則。

Figure 9-6: Chain-processing sequence for incoming packets from a network

Figure 9-7: Chain-processing sequence for incoming packets from a local process

nftables 是設計來取代 iptables 的新系統,指令為 nft。還有 iptables-translate 可以轉換指令,以及更新的 bpfilter 系統。

9.25.2 Setting Firewall Rules#

# 查看目前規則
# iptables -L

# 設定 chain 的預設策略
# iptables -P FORWARD DROP

# 封鎖特定 IP
# iptables -A INPUT -s 192.168.34.63 -j DROP

# 封鎖特定 subnet 的特定 port
# iptables -A INPUT -s 192.168.34.0/24 -p tcp --destination-port 25 -j DROP

# 刪除規則
# iptables -D INPUT 3

# 在 chain 頂端插入規則
# iptables -I INPUT -s 192.168.34.37 -j ACCEPT

Kernel 從上到下讀取 chain,使用第一個匹配的規則。規則的順序非常重要。

9.25.3 Firewall Strategies#

兩種基本場景:

  • 保護個別機器:在 INPUT chain 設定規則
  • 保護整個網路:在 router 的 FORWARD chain 設定規則

正確的策略是只允許信任的流量,其餘全部拒絕

# 預設拒絕所有進入流量
# iptables -P INPUT DROP

# 允許 ICMP(ping 等)
# iptables -A INPUT -p icmp -j ACCEPT

# 允許本機和 localhost 流量
# iptables -A INPUT -s 127.0.0.1 -j ACCEPT
# iptables -A INPUT -s my_addr -j ACCEPT

# 允許非 SYN 的 TCP 封包(已建立的連線)
# iptables -A INPUT -p tcp '!' --syn -j ACCEPT

# 允許 DNS 回應
# iptables -A INPUT -p udp --source-port 53 -s ns_addr -j ACCEPT

# 允許 SSH 連線
# iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT

在只有遠端存取的機器上,不要貿然執行 iptables -P INPUT DROP,這會立即切斷你的連線。


9.26 Ethernet, IP, ARP, and NDP#

當主機要發送 IP 封包時,需要知道目的地的 MAC 位址。在 IPv4 中,這透過 ARP(Address Resolution Protocol)完成。

ARP 的運作流程:

  1. Origin host 建立包含目標 IP 的 ARP request frame
  2. 廣播到整個實體網路
  3. 知道對應 MAC 位址的主機回覆
  4. Origin host 將 IP-MAC 對應加入 ARP cache

查看 ARP cache:

ip -4 neigh
  • REACHABLE:最近有通訊
  • STALE:已一段時間沒通訊,需要刷新

ARP 只在本地 subnet 上運作。要到達外部目的地,封包會送到 router,再由 router 的 ARP 處理。

IPv6 使用 NDP(Neighbor Discovery Protocol)取代 ARP,包含:

  • Neighbor solicitation:查詢 link-local 主機資訊
  • Neighbor advertisement:回應查詢

ip 指令統一了 ARP(IPv4)和 NDP(IPv6)的操作介面。


9.27 Wireless Ethernet#

無線 Ethernet(Wi-Fi)在原理上與有線網路相似,使用 MAC 位址和 Ethernet frames。在 network layer 及以上完全相同,主要差異在 physical layer:

額外的元件:

  • Transmission details:無線電頻率等實體特性
  • Network identificationSSID(Service Set Identifier)是無線網路識別名稱
  • Management:大多數無線網路由 access points 管理,access point 常橋接有線和無線網路

Linux 使用 iwiwconfig 指令來管理無線網路設定,但大多數使用者透過 NetworkManager 來處理無線網路連接。


9.28 Summary#

本章涵蓋了理解 Linux 網路所需的核心知識:

  • 網路分層架構:Application、Transport、Network(Internet)、Physical
  • IP 位址與子網路:IPv4 的 dotted-quad 表示法、CIDR 表示法、subnet mask
  • IPv6:128-bit 位址、link-local 和 global unicast 位址、stateless configuration
  • 路由:kernel routing table、default gateway、longest prefix match
  • DNS:hostname 解析流程、/etc/hosts、resolv.conf、nsswitch.conf
  • 實體層:Ethernet、MAC 位址、frames、ARP/NDP
  • 傳輸層:TCP(可靠的連線導向)、UDP(快速的無連線)
  • 網路設定管理:NetworkManager、systemd-networkd、Netplan、DHCP
  • 進階主題:private networks、NAT/IP masquerading、firewalls(iptables)、wireless Ethernet