Skip to content

antony@notes:~/suse$ cat "Network-Management.md"

Network Management

2023-04-04· suse ·SUSE Linux Enterprise Server

Network Management

Preface

本文主要介紹在 SUSE Linux Enterprise 中的網路管理、Wicked 中的網路管理、firewalld 防火牆,如何透過使用 firewall-cmd 命令 或是 firewall-config 來管理 firewalld 防火牆和了解 防火牆區域設計

可以透過點擊展開以下目錄,選擇想看的內容,跳轉至特定章節

:::warning

:::spoiler 文章目錄

[TOC]

:::

Understand Network Management in SLE

Linux Network Terms (術語)

Device

在系統中內建的網路卡。

Interface (介面)

為了使用一個物理設備,驅動程序會為該設備創建一個介面,使得這個介面可以被其他應用程序使用。

在 Linux 中,網路介面使用一個標準的命名方案,以太網網路卡的介面遵循的命名方案是 eth0、eth1、eth2,等等。

對於系統中安裝的每一個網路卡,在加載適當的驅動程序時都會創建一個介面。

網路配置的命令行工具在實際指的是 Interface 時使用了 Device 這個術語。

術語 “Device” 在本節中同時用於物理設備和軟體介面。

Link

一個設備與網路的連接。

Address

分配給一個設備的 IP 地址。該地址可以是一個 IPv4 或 IPv6 地址。要在網路中使用一個設備,你必須至少給它分配一個地址。你可以為一個設備分配一個以上的地址。

Broadcast

一個網路的廣播地址,通過向廣播地址發送網路數據包,你可以同時到達本地連接網路中的所有主機。當你給設備分配一個 IP 地址時,你也可以設置這個廣播地址。

Route

是一個 IP 封包從來源裝置到目標裝置所經過的路徑。在 Linux 核心中,「Route」這個詞也用來指代路由表中的一個條目。

The ping Command

  • Syntax : ping <destination>
    • The <destination> can be an ip address, host name or fqdn
  • 通常使用 ping 工具來測試是否有正常的網路連接
  • 在路由器或防火牆上設定過濾規則時,有可能會封鎖 ping 工具的功能,使得裝置之間無法進行連線測試

ping Options

  • -c, count:指定要發送的封包數量。
  • -I, interface:指定要使用的網路介面(大寫 i)。
  • -i, seconds:指定在發送每個封包之間等待的秒數(預設為1秒)。
  • -f:將封包按照接收回應的速度連續發送。
  • -l, preload:發送封包時不等待回應。
  • -n:以數字形式輸出 IP 位址。
  • -t, ttl:指定要發送的封包的生命週期(TTL)。
  • -w, maxwait:設定 ping 命令在超時之前等待回應的時間(單位為秒),即使已經發送或接收了多少封包。
  • -b:將封包發送到網路的廣播位址。

範例

:~> ping -c 2 8.8.8.8

螢幕輸出 :

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=11.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=17.0 ms

--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 11.350/14.174/16.998/2.824 ms

輸出顯示以下信息:

  • ICMP 封包的大小( 64 字節 )
  • 目標系統的 IP 位址( 從 8.8.8.8 )。
  • 每個封包的序列號( seq=1 )
  • 封包的TTL(TTL,生存時間)( ttl=128 )
  • 從傳輸封包到收到相應的答復之間的時間量(time=11.4 ms),這個時間也被稱為 “Round Trip Time (往返時間)"。

如果從目標系統得到一個回答,可以確定基本的網絡設備設置和到目標主機的路由是有效的。

Trace Network Packets

  • 使用方式:traceroute <目標主機>
  • 檢查不同網路之間的路由狀況
  • 使用稱為 “datagrams 資料包” 的 UDP 封包
  • 選項:-n ,顯示 IP 地址而非完整網域名稱

traceroute 是一個網路診斷工具,主要用來檢查不同網路之間的路由狀況。它會發送多個 TTL 值逐漸增加的封包到目的地主機,每個 TTL 值會發送三個封包。

traceroute 使用的是 UDP 封包,也稱為 datagrams (資料包)。首先,會發送三個 TTL=1 的資料包到目的地主機,然後是三個 TTL=2 的封包,以此類推。每當一個資料包通過一個路由器時,它的 TTL 值就會減少一個。

當 TTL 值達到零時,該資料包就會被丟棄,並發送一個消息給發送者。因為每三個封包就會增加一個 TTL 值,traceroute 可以收集到到達目的地主機之前的每個路由器的資訊。

範例 :

~> traceroute pluto.example.com

螢幕輸出 :

traceroute to pluto.example.com (192.168.2.1), 30 hops max, 40 byte packets using UDP
1 gateway.digitalairlines.com (172.17.2.254) 0 ms 0 ms 0 ms
2 antares.example.com (192.168.1.254) 14 ms * 14 ms
3 pluto.example.com (192.168.2.1) 19 ms 20 ms 26 ms

traceroute 執行時第一行會顯示一般性的資訊,之後每一行都代表到達目標主機時所經過的路由器,每個路由器都會顯示主機名稱和 IP 位址。

traceroute 也會顯示每個路由器回傳的三個 datagrams 的來回時間資訊。如果沒有收到回應,就會顯示星號 (*)。最後一行顯示的是目標主機本身。

Network Related Configuration Files

  • 網路介面的設定檔放在以下目錄:
    • /etc/sysconfig/network/
  • Name Resolution
    • System’s hostname: /etc/hostname
    • Name resolution locally: /etc/hosts
    • DNS Servers: /etc/resolv.conf
    • 名稱解析服務的順序: /etc/nsswitch.conf

/etc/resolv.conf 內容如下 :

search digitalairlines.com
nameserver 172.17.8.254
nameserver 172.17.1.1
nameserver 192.168.1.1

search:在這個項目中的網域名稱會用來自動補完不完整的主機名稱。例如,如果你查詢主機名稱 server3,它會自動完成成完整的網域名稱 server3.digitalairlines.com

nameserver:以 nameserver 開頭的每個項目後面都會跟著一個名稱伺服器的 IP 位址。你可以設定最多三個名稱伺服器。如果第一個名稱伺服器失敗,就會使用下一個。

SUSE sysconfig Network Commands

  • Syntax: <command> <interface>
  • Bring a configured network interface up:
    • ifup eth0
  • Bring a configured network interface down:
    • ifdown eth0
  • Renew DHCP IP Address:
    • ifrenew eth0
  • Display information about a configured network interface:
    • ifstatus eth0

要對位於 /etc/sysconfig/network/ 的組態檔案進行更改,你需要停止和重新啟動相應的介面。

你可以使用 ifdownifup 命令來執行此操作。例如,輸入 ifdown eth0 將禁用 eth0 設備,ifup eth0 則會再次啟用 eth0,當設備重新啟動時,新的設定會從配置文件中讀取。

Address Configuration

  • Syntax:
    • ip [address|addr|a] <task> <arguments>
  • Display IP Address configuration:
    • ip addr show
  • Add an IP address to an interface:
    • ip addr add 10.0.0.10/24 brd + dev eth0
    • brd + 選項根據網路遮罩來確定自動設定廣播位址。
  • Remove an IP address from an interface:
    • ip addr del 10.0.0.10/24 dev eth0

ip 指令只會在記憶體中修改網路設定,若要保存永久設定則必須儲存在 /etc/sysconfig/network/ 中的 ifcfg 檔案中。

所有的 SUSE 網路設定腳本都使用 ip 指令來進行實際的網路設定。

Route Configuration

  • Syntax: ip [route|r] <task> <arguments>
  • Display routing table:
    • ip route show
  • Add a route to the local network:
    • ip route add 172.17.0.0/16 dev eth0
  • Add a route to a different network:
    • ip route add 192.168.1.0/24 via 172.17.1.1
  • Add a default route:
    • ip route add default via 172.17.2.2
  • Delete a route:
    • ip route delete 192.168.1.0/24 dev eth0

要將更改應用於路由配置檔,您需要使用 ifdownifup 命令重新啟動受影響的網路設備。

Link Configuration

  • Syntax: ip [link|l] <task> <arguments>
  • Display link level configuration:
    • ip link show
  • Bring an interface up:
    • ip link set eth0 up
  • Bring an interface down:
    • ip link set eth0 down
  • Change the MAC address of an interface:
    • ip link set eth0 addr 00:11:22:AA:BB:CC
  • Rename a network interface:
    • ip link set eth0 name peth0

範例 :

server1:~ # ip link show

螢幕輸出 : 

1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
 link/ether 00:0c:29:11:c6:b8 brd ff:ff:ff:ff:ff:ff
  • UP - 裝置已開啟,可以傳送和接收網路上的封包。
  • LOOPBACK - 裝置是回送裝置。
  • BROADCAST - 裝置可以發送封包到共享同一網路的所有主機。
  • POINTOPOINT - 裝置僅與另一個裝置相連。所有封包都會發送到另一個裝置,也會從另一個裝置接收封包。
  • MULTICAST - 裝置可以同時向一群其他系統發送封包。
  • PROMISC - 裝置會監聽網路上的所有封包,不只是發送給裝置硬體地址的封包。這通常用於網路監控。

使用 ip 命令時,你可以使用 -s 選項來顯示有關網路介面的其他統計資訊。這個命令的格式如下:

ip -s link show eth0

透過在命令行尾部輸入裝置名稱,你可以限制輸出僅顯示特定的裝置,這還可以用於顯示地址設定或裝置屬性。

以下是顯示給裝置 eth0 的資訊範例:

~> ip -s link show eth0

螢幕輸出 :

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:0e:56:be brd ff:ff:ff:ff:ff:ff
    RX:  bytes packets errors dropped  missed   mcast
         64239     725      0       0       0       0
    TX:  bytes packets errors dropped carrier collsns
         62369     612      0       0       0       0
    altname enp2s0
    altname ens32

對於每個裝置都顯示了兩個額外的包含資訊的部分,每個部分都有一個標題說明顯示的資訊。

以 RX 為開頭的部分顯示有關已接收的封包的資訊,以 TX 為開頭的部分顯示有關已發送的封包的資訊。

這些部分顯示以下資訊:

  • Bytes:裝置已接收或傳輸的所有位元組總數。
  • Packets:裝置已接收或傳輸的所有封包總數。
  • Errors:接收器或發送器錯誤的總數。
  • Dropped:由於資源不足而被丟棄的封包總數。
  • Overrun:因接收器超限而導致被丟棄的封包總數。通常,如果裝置發生超限,這意味著 Linux 內核存在嚴重問題或者你的計算機對該裝置的處理速度太慢。
  • Mcast:已接收的多播封包總數。這個選項僅支援少數裝置。
  • Carrier:因喪失載波而導致的連結媒介故障總數。
  • Collsns:在以太網媒介上的碰撞事件總數。
  • Compressed:已壓縮的封包總數。

你也可以使用 ip 工具來更改裝置屬性。以下是設定裝置屬性的基本命令格式:

ip link set <device> <attribute>

上述已經描述了可能的屬性。最重要的屬性是 “up” 和 “down”。通過設置這些屬性,可以啟用或停用網路裝置。 要啟用網路裝置(例如 eth0),請輸入以下命令:

ip link set eth0 up

要停用網絡設備(例如 eth0),請輸入以下命令:

ip link set eth0 down

Ethernet Configuration

ethtool 是一個指令,可以讓你檢視和改變以太網卡的設定,它可以用來解決網路介面的問題。

使用 ethtool 指令需要網卡驅動程式支援。

Bridge Configuration

brctl 命令允許你在 Linux 中創建和使用網路橋接器。它只修改記憶體中的網路橋接器配置,持久的網路橋接器配置必須存儲在 /etc/sysconfig/network/ifcfg- 檔案中。

SUSE 網絡配置腳本使用 brctl 命令來進行實際的網路橋接器配置。

Network Interface Types

基本網路介面:

聚合網路介面(Bonded Network Interface):

虛擬區域網路介面(VLAN Network Interface):

網路橋接器(Network Bridge):

Basic Network Interface: Config File

Typically named : ifcfg-ethX

~> cat /etc/sysconfig/network/ifcfg-eth0

檔案內容 :

IPADDR='192.168.61.60/24'
BOOTPROTO='static'
STARTMODE='auto'

Persistent Network Interface Names


Understand Network Management with Wicked

Features of Wicked

Start Networking

這些命令使用的是 /etc/wicked/client.xml 中定義的默認或系統配置源。

要啟用除錯,請在 /etc/sysconfig/network/config 中設置 WICKED_DEBUG_PARAM(這可能會在未來更改), 例如: WICKED_DEBUG_PARAM="--debug most"

Display Interface Information

範例 :

~> wicked show eth0

螢幕輸出 :

eth0            up
      link:     #2, state up, mtu 1500
      type:     ethernet, hwaddr 00:0c:29:0e:56:be
      config:   compat:suse:/etc/sysconfig/network/ifcfg-eth0
      leases:   ipv4 static granted
      addr:     ipv4 192.168.61.60/24 [static]
      route:    ipv4 default via 192.168.61.2 proto boot

Manage Interfaces

設定的來源包括:

對於給定介面,wicked 從這些來源獲得的配置會被應用。重要性的預期順序是 firmware,然後是 compat,最後是 wicked(這在未來可能會更改,當 ifcfg 兼容性要求放寬時)。

可以在 /usr/share/doc/packages/wicked/samples/ 下找到示例配置文件(例如,用於 VLAN 介面)。

使用 wicked,不需要實際關閉介面才能重新配置它(除非內核需要)。例如,為了向靜態配置的網路介面添加另一個 IP 地址或路由,請將 IP 地址添加到介面定義中,然後再執行另一個 “ifup” 操作。服務器會盡力僅更新已更改的設置,這適用於鏈路級選項,例如設備 MTU 或 MAC 地址,以及網絡層設置,例如地址、路由,甚至是地址配置模式(例如從靜態配置移動到 DHCP)。


Understand firewalld

Overview of firewalld

Firewall Terms

A zone file can contain several components:

Zone (區域)

定義網路連接的信任級別

Target (目標)

當一個區域處理封包且沒有明確處理封包的規則時,目標決定了行為

Interface (介面)

系統上的網路介面,例如 eth0

Source (來源)

封包來自哪裡,可以包括 IP、IP 網路或 MAC 地址。

Services (服務)

服務簡化了防火牆的配置,它指定了一個服務的信息,如 port (端口) 和 protocol information (協議信息),然後可以使用一個名稱來引用。

Packet (封包)

在網路上傳輸的信息單元。

:::info

網路區域定義了網路連線的信任等級,一個連線只能屬於一個區域,但一個區域可以用於多個網路連線。

介面是系統中的網路介面,例如 eth0。一個介面只能與一個區域相關聯。

防火牆提供了許多預定義的服務,也可以建立自訂服務,使用服務可以為服務指定有意義的名稱,並指定服務的端口和通訊協定,以簡化防火牆的配置,也可以透過指定端口和通訊協定達到相同的配置效果。

:::

Running configuration

“Running configuration” 是目前啟用的防火牆配置,可以在不重新啟動防火牆的情況下進行更改。

如果更改不被儲存到永久配置,則在防火牆重新啟動時這些更改將會丟失。

Permanent configuration

“Permanent configuration” 在防火牆啟動或重新加載時被讀取,並且保存在硬盤上,可以在系統重新啟動後恢復。

:::info

注意。運行中的配置和永久配置可以是不同的

預設情況下,更改防火牆設定時會更新目前正在運行的設定,當防火牆重新啟動時,設定將回到永久設置。

更改運行中的設定允許測試新的設定,測試完運行中的設定後,可以將其輕鬆移至永久設定。

請注意,有些選項可能僅作為永久配置提供

:::

Zones

防火牆具有層級結構,頂層是「Zone (區域)」,區域用於定義網路連線的信任等級。

區域可以是「 Active 啟用的」和「 Not active 未啟用的」

防火牆提供幾個預先設定的區域:

Zone Configuration Files

Remote AdministrationSoftware Management