跳轉到內容

Ict-創新/LPI/109.2

來自華夏公益教科書

109.2 基本網路配置

[編輯 | 編輯原始碼]

候選人應該能夠檢視、更改和驗證客戶端主機上的配置設定


關鍵知識領域

  • 手動和自動配置網路介面
  • 基本 TCP/IP 主機配置。

網路介面

[編輯 | 編輯原始碼]

網路介面卡 (NIC) 必須受核心支援。您可以透過檢查 dmesg 的輸出(顯示核心訊息緩衝區的內容)來確定您正在使用的卡(以及您的核心是否識別它)。

示例


$ dmesg | grep eth0

e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection

e1000: eth0: e1000_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None

eth0: no IPv6 routers present

您可以使用 lspci 直接探測硬體

$ lspci | grep -i ethernet

09:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8040 PCI-E Fast Ethernet Controller (rev 12)

lspci -v 提供更多詳細資訊。以下是輸出的相關部分

09:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8040 PCI-E Fast Ethernet Controller (rev 12)

子系統:戴爾裝置 022e

標誌:匯流排主控,快速選擇,延遲 0,IRQ 28

記憶體位於 f9ffc000(64 位,不可預取)[大小=16K]

I/O 埠位於 de00 [大小=256]

功能:<訪問被拒絕>

正在使用的核心驅動程式:sky2

核心模組:sky2

從上面的例子中,我們可以看到乙太網控制器的型別、記憶體和 I/O 地址分配、正在使用的 IRQ 以及相關的核心驅動程式模組(本例中為 sky2)。如果使用錯誤的模組或資源(I/O 或 IRQ)不可用,這些資訊可能會有用。

有時,可以使用這些資訊插入具有不同 I/O 地址的模組(使用 modprobe 或 insmod 實用程式),或者將其儲存在 /etc/modules.conf 中 此檔案由 modprobe 諮詢;在此處放置條目將在下次系統啟動時儲存設定。但是,核心通常會自動檢測卡並載入正確的模組。


名稱解析

機器必須能夠執行主機名解析;也就是說,將機器名(如 neptune.example.com)轉換為 IP 地址(如 144.11.20.101)

/etc/hosts 檔案是執行名稱解析的一種方法。至少您會在該檔案中看到一個針對環回地址(傳統上稱為 localhost)的條目。該檔案也可能包含其他機器的條目,但通常只包含本地網路中的機器

# 不要刪除以下行,否則各種程式
# 需要網路功能將失敗。
127.0.0.1 m1530-rhel localhost localhost.localdomain
::1 localhost6
# 其他主機
192.168.1.108 mesa mesa.domain.org
192.168.1.119 pico

(另請注意 localhost6 的 IPV6 條目)

名稱解析也可以透過諮詢 DNS 來執行。有關詳細資訊,請參閱主題 109.4:配置客戶端 DNS。

/etc/nsswitch.conf 檔案用於告知標準 C 庫中的解析器在哪裡查詢其資訊。解析器是一個查詢某些內容(如使用者名稱或主機名)並返回一些對應資訊(如 UID 或 IP 地址)的例程。nsswitch.conf 中控制主機名解析的行看起來像這樣


hosts: files dns

此條目告訴解析器首先檢視本地檔案(/etc/hosts),然後諮詢 DNS。此處可以指定的其他主機名查詢來源包括 nis 和 nisplus

網路配置

[編輯 | 編輯原始碼]

核心對機器主機名的當前理解由 hostname 命令報告

# hostname

m1530-rhel.example.com

機器的主機名在多個檔案中設定。在某些發行版(如 Ubuntu)上,使用 /etc/hostname 檔案。其他發行版(如 RedHat)在 /etc/sysconfig/network 中設定它。以下命令可能有助於您找出您的發行版中定義了主機名的位置。此示例位於 RedHat 上

# find /etc -type f -exec grep -l $(hostname) {} \;

/etc/sysconfig/network-scripts/ifcfg-eth0

/etc/sysconfig/network

/etc/hosts

/etc/dhclient-eth0.conf

/etc/sysconfig/network 檔案定義是否必須啟動網路。在 RedHat 系統上,它還定義了主機名和預設閘道器。這些是適用於整個機器的設定(即,它們不特定於一個網路介面)

NETWORKING=yes
HOSTNAME=mesa.domain.org
GATEWAY=192.168.1.254

在 RedHat 系統上,/etc/sysconfig/network-scripts/ifcfg-eth0 檔案包含 eth0 的配置引數。此示例顯示了使用靜態分配的 IP 地址的介面的檔案可能是什麼樣子

DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.108
NETMASK=255.255.255.0
ONBOOT=yes

對於使用 DHCP 配置的卡,該檔案將更簡單


DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

停止和啟動網路

  • 從命令列

用於啟動網路介面的主要工具是 /sbin/ifconfig。初始化後,核心模組(在 /etc/modules.conf 中別名為 eth0,例如 tulip.o)被載入並分配了 IP 和網路掩碼值。因此,只要核心模組被插入,介面就可以停止和重啟,而不會丟失這些資訊。

示例:使用 ifconfig。

/sbin/ifconfig eth0 192.168.10.1 netmask 255.255.128.0

/sbin/ifconfig eth0 down

/sbin/ifconfig eth0 up

在沒有引數的情況下執行 ifconfig 將顯示當前設定

# ifconfig eth0

eth0 Link encap:Ethernet HWaddr 00:0C:29:76:13:68

inet addr:192.168.81.130 Bcast:192.168.81.255 Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fe76:1368/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:5623 errors:0 dropped:0 overruns:0 frame:0

TX packets:8037 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:418797 (408.9 KiB) TX bytes:1338985 (1.2 MiB)

Base address:0x2000 Memory:d8920000-d8940000

另一個工具是 /sbin/ifup。此實用程式讀取 /etc/sysconfig/ 中的系統配置,併為給定介面分配儲存的值。eth0 的指令碼稱為 ifcfg-eth0,必須進行配置。如果定義了諸如 DHCP 之類的引導協議,則 ifup 將使用該協議啟動介面。

示例:使用 ifup。

/sbin/ifup eth0

/sbin/ifup ppp0

/sbin/ifdown eth0

RedHat 沒有 ifup 和 ifdown 的手冊頁(Ubuntu 有!),但在 RedHat 上它們是 shell 指令碼,因此您可以檢視程式碼(如果您願意)。

  • . 使用網路指令碼

在啟動時,網路介面使用 /etc/rc.d/init.d/network 指令碼初始化。所有相關的網路檔案都在 /etc/sysconfig/ 目錄中被呼叫。此指令碼也可以手動執行。

此外,該指令碼還讀取 /etc/sysctl.conf 中的 sysctl 選項,您可以在其中將系統配置為路由器(允許核心中的 IP 轉發)。例如,行

net.ipv4.ip_forward = 1

將啟用 ip 轉發。如果機器用作閘道器/路由器,您將需要執行此操作。

使用此指令碼,可以像這樣啟動、停止或重啟網路

# /etc/rc.d/init.d/network start

# /etc/rc.d/init.d/network stop

# /etc/rc.d/init.d/network restart

最後一個命令在您更改了 /etc/sysconfig 下的任何網路設定時很有用。但是請注意,此命令將停止並重新啟動所有網路介面,而 ifconfig、ifup 和 ifdown 可用於啟動和停止單個介面。

RedHat 還提供了一個名為 service 的“包裝器”程式,它提供了一種更簡單的方法來執行這些指令碼,例如

# service network restart

使用諸如 ifup 之類的系統指令碼而不是 ifconfig 本身時,一個顯著的區別是系統路由表在一種情況下被設定,而在另一種情況下不被設定。

這是因為要麼讀取 /etc/sysconfig/network 檔案,其中儲存了預設閘道器,要麼 DHCP 伺服器已將此資訊與 IP 號一起傳送。

路由表使用 /sbin/route 工具進行配置、檢查和更改。

路由示例

透過裝置 eth1 向網路 10.0.0.0 新增靜態路由,並使用 192.168.1.108 作為該網路的閘道器

#/sbin/route add -net 10.0.0.0 gw 192.168.1.108 dev eth1

新增預設閘道器

/sbin/route add default gw 192.168.1.1 eth0

以這種方式新增的路由僅在“此時此地”有效 - 它們不會在重新引導後保留。

列出核心路由表

/sbin/route -n
► 核心 IP 路由表
目標 閘道器 Genmask 介面
192.168.1.0 0.0.0.0 255.255.255.0 eth0
10.1.8.0 192.168.1.108 255.0.0.0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 lo
0.0.0.0 192.168.1.254 0.0.0.0 eth0

這裡,第一個條目定義了 eth0 的直接連線網路。它表示無需閘道器即可到達網路 192.168.1.0。第二個條目定義了到網路 10.1.8.0 的特定路由。最後一個條目定義了預設路由。由於此規則的 Genmask 為 0.0.0.0 且目標為 0.0.0.0,因此它始終匹配;但是,僅當找不到更具體的路由(具有更長 Genmask 的路由)時才使用它。

如果您屬於 192.168.10.0 網路,並且您添加了到 192.168.1.0 網路的路由,您可能會發現後者的網路中的機器沒有響應。這可能是因為從 192.168.1.0 網路到您的主機的路由尚未設定!這個問題可以透過使用 daemons gated 和 routed 動態更新跨網路的路由表來解決。但是,動態路由在“存根網路”(大多數機器所在的地方)上不是必需的,它也不是 LPI 1 級目標的一部分。


永久靜態路由

可以在 /etc/sysconfig 下的檔案中定義永久靜態路由。根據版本,RedHat 從 /etc/sysconfig/network-scripts/route-eth0(對於 eth0)獲取特定於介面的路由,以及從 /etc/sysconfig/static-routes 獲取非特定於介面的路由。這些路由將在啟動時由網路指令碼新增。


命名網路

使用 /etc/networks 檔案,可以將名稱分配給網路編號。一個典型的條目可能如下所示

office 192.168.3.0

然後,可以使用網路名稱與諸如 route 之類的工具一起使用,例如

route add -net office.org netmask 255.0.0.0

圖 109.2-1:路由方案



以下是使用過的檔案、術語和實用程式的部分列表:* /etc/hostname

  • /etc/hosts
  • /etc/resolv.conf
  • /etc/nsswitch.conf
  • ifconfig
  • ifup
  • ifdown
  • route
  • ping


上一章 | 下一章

華夏公益教科書