目录
![]() |
提示 |
---|---|
關於GNU/Linux網絡的通用手冊,請查看Linux 網絡管理員手冊。 |
![]() |
提示 |
---|---|
關於Debian專屬的網絡手冊,請查看Debian管理員手冊—網絡配置。 |
![]() |
警告 |
---|---|
本章是基於 2013 年發佈的 Debian 7.0 ( |
![]() |
提示 |
---|---|
儘管本文件仍使用舊的
ifconfig(8)
以 IPv4 做為其網路組態的範例,Debian 正移動至
ip(8)
在 |
讓我們來回顧一下現代Debian操作系統中的基本網絡架構。
表 5.1. 網絡配置工具一覽表
軟件包 | 流行度 | 大小 | 類型 | 說明 |
---|---|---|---|---|
ifupdown
|
V:587, I:991 | 217 | 配置::ifupdown | 用來啓動/關閉網絡的標準工具(Debian特有) |
ifplugd
|
V:3, I:18 | 217 | 同上 | 自動管理有線網絡 |
ifupdown-extra
|
V:0, I:1 | 106 | 同上 |
網絡測試腳本,加強"ifupdown "軟件包的功能
|
ifmetric
|
V:0, I:1 | 37 | 同上 | 設置網絡接口的路由度量 |
guessnet
|
V:0, I:0 | 422 | 同上 |
腳本文件,利用"/etc/network/interfaces "文件來加強"ifupdown "的功能
|
ifscheme
|
V:0, I:0 | 59 | 同上 |
映射腳本文件,增強"ifupdown "軟件包的功能
|
network-manager
|
V:358, I:440 | 14957 | 配置::NM | NetworkManager(守衛進程):自動管理網絡 |
network-manager-gnome
|
V:132, I:372 | 5540 | 同上 | NetworkManager(GNOME前端) |
wicd
|
I:24 | 36(*) | 配置::wicd | 有線和無線網絡管理器(元軟件包) |
wicd-cli
|
V:0, I:1 | 60(*) | 同上 | 有線和無線網絡管理器(命令行客戶端) |
wicd-curses
|
V:0, I:3 | 176(*) | 同上 | 有線和無線網絡管理器(文本界面客戶端) |
wicd-daemon
|
V:19, I:26 | 992(*) | 同上 | 有線和無線網絡管理器(守護進程) |
wicd-gtk
|
V:15, I:25 | 576(*) | 同上 | 有線和無線網絡管理器(GTK+客戶端) |
iptables
|
V:300, I:993 | 2520 | 配置::Netfilter | 封包過濾和網絡地址轉換管理工具(Netfilter) |
iproute2
|
V:672, I:926 | 2867 | 配置::iproute2 | iproute2, IPv6和其他高級網絡配置:ip(8),tc(8)等等 |
ifrename
|
V:0, I:3 | 125 | 同上 | 根據不同的靜態標準來重命名網絡接口:ifrename(8) |
ethtool
|
V:102, I:261 | 597 | 同上 | 顯示或更改以太網設備的設定 |
iputils-ping
|
V:234, I:997 | 113 | 測試::iproute2 | 測試能否連接遠程主機,通過主機名或IP 地址(iproute2) |
iputils-arping
|
V:8, I:127 | 55 | 同上 | 測試能否連接遠程主機,通過ARP地址 |
iputils-tracepath
|
V:4, I:60 | 72 | 同上 | 跟蹤訪問遠程主機的路徑 |
net-tools
|
V:234, I:634 | 991 | 配置::net-tools | NET-3網絡工具箱(net-tools,IPv4網絡配置):ifconfig(8)等等。 |
inetutils-ping
|
V:0, I:1 | 359 | 測試::net-tools | 測試能否連接遠程主機,通過hostname或IP 地址(傳統方式,GNU) |
arping
|
V:2, I:29 | 77 | 同上 | 測試能否連接遠程主機,通過ARP地址(傳統方法) |
traceroute
|
V:63, I:936 | 159 | 同上 | 跟蹤連接遠程主機的路徑(傳統方法,控制檯) |
isc-dhcp-client
|
V:231, I:979 | 686 | 配置::底層 | DHCP客戶端 |
wpasupplicant
|
V:332, I:507 | 3436 | 同上 | WPA和WPA2客戶端支持(IEEE 802.11i) |
wpagui
|
V:0, I:2 | 781 | 同上 | wpa_supplicant Qt 圖形界面客戶端 |
wireless-tools
|
V:188, I:254 | 297 | 同上 | 操控Linux無線擴展的工具 |
ppp
|
V:206, I:474 | 1054 | 同上 |
使用chat 連接PPP/PPPoE
|
pppoeconf
|
V:0, I:8 | 192 | 配置::輔助 | 配置助手,以便於使用PPPoE連接 |
pppconfig
|
V:1, I:2 | 801 | 同上 |
配置助手,以便於使用chat 連接PPP
|
wvdial
|
V:0, I:5 | 249 | 同上 |
配置助手,以便於使用wvdial 和ppp 連接PPP
|
mtr-tiny
|
V:6, I:54 | 161 | 測試::底層 | 追蹤連接遠程主機的路徑(文本界面) |
mtr
|
V:4, I:43 | 214 | 同上 | 追蹤連接遠程主機的路徑(文本界面和GTK+界面) |
gnome-nettool
|
V:2, I:45 | 2105 | 同上 | 獲取常見網絡信息的工具(GNOME) |
nmap
|
V:31, I:253 | 4452 | 同上 | 網絡映射/端口掃描(Nmap,控制檯) |
zenmap
|
V:2, I:9 | 2939 | 同上 | 網絡映射/端口掃描(GTK+) |
tcpdump
|
V:19, I:204 | 1329 | 同上 | 網絡流量分析(Tcpdump,控制檯) |
wireshark
|
I:55 | 64 | 同上 | 網絡流量分析(Wireshark,GTK+) |
tshark
|
V:3, I:34 | 407 | 同上 | 網絡流量分析(控制檯) |
tcptrace
|
V:0, I:3 | 401 | 同上 |
根據tcpdump 的輸出生成的連接數據統計
|
snort
|
V:0, I:1 | 2206 | 同上 | 靈活的網絡入侵偵測系統(Snort) |
ntopng
|
V:1, I:2 | 969 | 同上 | 在網頁瀏覽器中展示網絡流量 |
dnsutils
|
V:64, I:517 | 256 | 同上 | BIND軟件包提供的網絡客戶端程序:nslookup(8),nsupdate(8),dig(8) |
dlint
|
V:0, I:7 | 53 | 同上 | 利用域名服務器查詢來查看DNS域信息 |
dnstracer
|
V:0, I:2 | 61 | 同上 | 跟蹤DNS查詢直至源頭 |
主機名解析,目前也是由 NSS (名字服務轉換 Name Service Switch) 機制來支援。這個解析的流程如下。
"/etc/nsswitch.conf
" 檔案裡的 "hosts: files
dns
" 這段規定主機名解析順序。 (代替 "/etc/host.conf
"
檔案裡的"order
" 這段原有的功能。)
files
方式首先被呼叫。如果主機名在 "/etc/hosts
"
檔案裡面發現,則返回所有有效地址並退出。 ( "/etc/host.conf
" 檔案包含
"multi on
".)
dns
方式被呼叫。如果主機名通過查詢 "/etc/resolv.conf
"
檔案裡面寫的 網際網路域名系統 Domain Name
System (DNS) 來找到,則返回所有有效地址並退出。
例如, "/etc/hosts
" 看起來如下。
127.0.0.1 localhost 127.0.1.1 <host_name> # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
在這個例子的第二行 127.0.1.1
IP 地址也許不會在其它類 Unix 系統發現。Debian Installer 為沒有永久 IP
地址的系統建立這個條目,作為某些軟體(如 GNOME)的一個變通方法,見文件 bug
#719621.
<host_name> 匹配在"/etc/hostname
"裡定義的主機名。
對於有永久 IP 地址的系統,這個永久 IP 地址應當代替這裡的 127.0.1.1
。
對於有永久 IP 地址和有 域名系統 Domain Name System (DNS)提供完全資格域名 fully qualified domain name (FQDN) 的系統,規範名 <host_name>.<domain_name> 應當被用來代替 <host_name>.
如果 resolvconf
軟體包沒有安裝,"/etc/resolv.conf
"
是一個靜態檔案。如果安裝了,它是一個符號連結。此外,它包含有解析策略的初始化資訊。如 DNS 是
IP="192.168.11.1
",則包含如下。
nameserver 192.168.11.1
resolvconf
軟體包使這個 "/etc/resolv.conf
"
檔案成為一個符號連結,並通過鉤子指令碼自動管理其內容。
對於典型 adhoc 區域網環境下的 PC 工作站,除了基本的 files
和
dns
方式之外,主機名還能夠通過組播 DNS (mDNS, 零配置網路 Zeroconf)進行解析。
Avahi 提供 Debian 下的組播 DNS 發現框架。
libnss-mdns
外掛包提供 mDNS 的主機名解析,GNU C 庫 (glibc)的 GNU 名字服務轉換
Name Service Switch (NSS) 功能支援 mDNS。
"/etc/nsswitch.conf
" 檔案應當有像 "hosts: files
mdns4_minimal [NOTFOUND=return] dns mdns4
" 這樣的一段.
".local"結尾的主機名,使用 pseudo-top-level domain (TLD) 來解析.
mDNS IPv4 本地連線組播地址 "224.0.0.251
" 或它相應的 IPv6 地址
"FF02::FB
" 被用來作為 ".local
" 結尾名字的 DNS
查詢。
較老的 Windows 系統安裝 winbind
軟體包來提供舊的 NETBios over TCP/IP
主機名解析。為啟用這個功能,"/etc/nsswitch.conf
" 檔案應當有這樣的一段:
"hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
wins
"。 (現代 Windows 系統通常使用 dns
方式來進行主機名解析。)
![]() |
注意 |
---|---|
域名系統 Domain Name System 中的擴充套件通用頂級域名 expansion of generic Top-Level Domains (gTLD) 還在進行中。在區域網內,選擇一個域名時,請提防名字衝突 name collision。 |
網路介面名稱,比如說 eth0
, 是在 Linux
核心裡分配給每一個硬體的,當這個硬體被核心發現的時候,通過使用者層的配置機制udev
(參見 第 3.3 节 “udev 系統”)來分配.網絡卡介面名稱也就是
ifup(8)
和
interfaces(5)裡的
physical interface。
為了保證每個網路介面名稱在每次重啟後一致,會用到 MAC 地址
等,有一個規則檔案"/etc/udev/rules.d/70-persistent-net.rules
".
這個檔案是由"/lib/udev/write_net_rules
" 程式自動生成,是由
"persistent-net-generator.rules
"
規則檔案來執行. 你可以修改該檔案來改變命名規則。
![]() |
小心 |
---|---|
當編輯 " |
讓我們重新提醒下在 rfc1918 裡規定的區域網 local area networks (LANs)IPv4 32 位地址在各類地址的保留範圍. 這些地址保證不會與因特網上專有的地址衝突。
表 5.2. 網路地址範圍列表
類別 | 網路地址 | 子網掩碼 | 子網掩碼/位數 | # 子網數 |
---|---|---|---|---|
A | 10.x.x.x | 255.0.0.0 | /8 | 1 |
B | 172.16.x.x — 172.31.x.x | 255.255.0.0 | /16 | 16 |
C | 192.168.0.x — 192.168.255.x | 255.255.255.0 | /24 | 256 |
![]() |
注意 |
---|---|
如果這些地址分配到一個主機,那麼這個主機一定不能夠直接訪問網際網路,必須通過一個作為閘道器的代理服務或通過 網路地址轉換 Network Address Translation (NAT). 消費區域網環境,寬頻路由器通常使用 NAT。 |
儘管 Debian 系統支援大多數硬體裝置,但依舊有一些網路裝置需要 DFSG non-free 韌體來支援它們。參見 第 9.9.6 节 “硬體驅動和韌體”。
對於使用 systemd
的現代 Debian
桌面系統,網路介面通常由兩個服務進行初始化:lo
介面通常在“networking.service
”處理,而其它介面則由“NetworkManager.service
”處理。
Debian squeeze
和新的發行版都可以通過後臺守護程序(daemon)管理軟體來管理網路連線,例如 NetworkManager (NM)(network-manager
和相關軟體包)或 Wicd(wicd 和相關軟體包)。
它們有自己的 GUI 和命令列程式來作為使用者介面。
它們有自己的後臺守護程序(daemon)作為它們的系統後端。
它們使你可以簡單地將系統連線到網路。
它們使你可以簡單地管理有線和無線網路的配置。
它們允許你配置網路而不依賴傳統的 ifupdown
軟體包。
![]() |
注意 |
---|---|
不要在伺服器上使用這些自動網路配置工具。它們主要針對於膝上型電腦上的移動桌面使用者。 |
這些現代的網路配置工具需要進行適當的配置,以避免與傳統 ifupdown
軟體包發生衝突,它的配置檔案位於
“/etc/network/interfaces
”。
![]() |
注意 |
---|---|
這些自動網路配置工具的一些功能可能會帶來令人煩擾的問題。它們不像傳統的 |
Debian 系統 NM 和 Wicd 的官方文件分別位於
“/usr/share/doc/network-manager/README.Debian
” 和
“/usr/share/doc/wicd/README.Debian
”。
本質上,如下操作即可完成桌面的網路配置。
通過下列命令使桌面使用者 foo
歸屬 “netdev
” 組(另外,例如
GNOME 和 KDE 這樣的現代桌面環境會通過 D-bus 自動完成該操作)。
$ sudo adduser foo netdev
使 “/etc/network/interfaces
” 的配置保持下面那樣簡潔。
auto lo iface lo inet loopback
通過下列命令重新啟動 NM 或 Wicd。
$ sudo /etc/init.d/network-manager restart
$ sudo /etc/init.d/wicd restart
通過圖形介面配置網路。
![]() |
注意 |
---|---|
只有不列在
“ |
![]() |
提示 |
---|---|
如果你想擴充套件 NM 的網路配置功能,請尋找適當的外掛模組和補充軟體包,例如
|
![]() |
小心 |
---|---|
這些自動網路配置工具可能無法相容 “ |
使用 systemd 的系統中,可以在
/etc/systemd/network/
裡配置網路。參見
systemd-resolved(8)、resolved.conf(5)
和
systemd-networkd(8)。
這個允許在沒有影象介面的情況下配置現代網路。
DHCP 客戶端的配置可以透過建立 "/etc/systemd/network/dhcp.network
"
檔案來進行設定。例如:
[Match] Name=en* [Network] DHCP=yes
一個靜態網路配置能夠透過建立 "/etc/systemd/network/static.network
"
來設定.比如:
[Match] Name=en* [Network] Address=192.168.0.15/24 Gateway=192.168.0.1
如果 第 5.2 节 “現代的桌面網路配置” 中描述的方法無法滿足你的需要,那你應該使用結合了許多普通工具的傳統網路連線和配置方法。
傳統網路連線的每個方法都是特定的(參見 第 5.5 节 “網路連線方式(傳統)”)。
用於 Linux 底層網路配置的程式有兩種型別(參見 第 5.8.1 节 “Iproute2 命令”)。
來自 Linux NET-3 網路系統的舊 net-tools 程式(ifconfig(8)……)。它們中的大多數都已經過時了。
來自現在的 Linux 網路系統的新 Linux iproute2 程式(ip(8)……)。
儘管底層程式十分強大,但它們使用繁瑣。因此建立了高層網路配置系統。
ifupdown
軟體包是 Debian 中這種高層網路配置系統的實際標準。它讓你可以簡單地通過例如
“ifup eth0
” 這樣的命令來開啟網路。它的配置檔案位於
“/etc/network/interfaces
” 中並且其典型內容如下。
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
resolvconf
軟體包是為了使 ifupdown
系統支援自動重寫解析器配置檔案 “/etc/resolv.conf
” 來使網路地址解析平滑地重新配置。現在,大多數
Debian 網路配置軟體包都使用了 resolvconf
軟體包(參見
“/usr/share/doc/resolvconf/README.Debian
”)。
ifupdown
軟體包的輔助指令碼,例如
ifplugd
、guessnet
、ifscheme
等,是為了進行網路環境的自動動態配置,例如位於有線區域網中的移動電腦。這些相對來說比較難使用,但在當前的
ifupdown
系統下工作良好。
詳細的案例參見 第 5.6 节 “使用 ifupdown 進行基本網路配置(舊)” 和 第 5.7 节 “使用 ifupdown 的高階網路配置(舊)”。
![]() |
小心 |
---|---|
在這節描述的連線測試方式僅僅用於測試目的。不應當直接用於日常的網路連線。建議你使用 NM, Wicd, 或
|
一臺電腦典型的網路連線方式和連線路徑,能夠使用下面的內容概述。
表 5.3. 網路連線方式和連線路徑列表
PC | 連線方式 | 連線路徑 |
---|---|---|
串列埠 (ppp0 )
|
PPP | ⇔ modem ⇔ POTS ⇔ 撥號接入點 ⇔ ISP |
乙太網口 (eth0 )
|
PPPoE/DHCP/Static | ⇔ 寬頻-modem ⇔ 寬頻鏈路 ⇔ 寬頻接入點 ⇔ ISP |
乙太網口 (eth0 )
|
DHCP/Static | ⇔ LAN ⇔ 網路地址轉換 (NAT) 的寬頻路由器 (⇔ 寬頻-modem …) |
每種連線方式配置指令碼彙總。
表 5.4. 網路連線配置列表
連線方式 | 配置 | 後端包 |
---|---|---|
PPP | pppconfig 建立固定的 chat
|
pppconfig , ppp |
PPP (選用) | wvdialconf 建立啟發式的 chat
|
ppp , wvdial |
PPPoE | pppoeconf 建立固定的 chat
|
pppoeconf , ppp |
DHCP |
在 "/etc/dhcp/dhclient.conf " 裡描述
|
isc-dhcp-client
|
靜態 IP (IPv4) |
在 "/etc/network/interfaces " 裡描述
|
iproute 或 net-tools (舊)
|
靜態 IP (IPv6) |
在 "/etc/network/interfaces " 裡描述
|
iproute
|
網路連線縮略語意義如下。
![]() |
注意 |
---|---|
通過電視線纜的廣域網服務,通常使用 DHCP 或 PPPoE。ADSL 和 FTTP 通常使用 PPPoE。你需要諮詢你的網際網路服務提供商來獲得廣域網連線使用的精確配置。 |
![]() |
注意 |
---|---|
當寬頻路由器用來搭建家庭區域網環境時,區域網上的電腦需要使用寬頻路由器上的 網路地址轉換(NAT),來連線到廣域網。在這樣的情況下,區域網上的電腦網路介面需使用靜態 IP 或者寬頻路由器提供的 DHCP 服務。寬頻路由器必須按 ISP 的指引來配置連線到廣域網。 |
典型的現代家庭和小的商業網路,也就是區域網,使用一些消費等級的寬頻路由器連線到廣域網(因特網)。路由器後面的區域網通常使用路由器上執行的動態主機配置協議(DHCP) 服務端提供的服務。
僅僅需要安裝 isc-dhcp-client
包為乙太網提供動態主機配置協議 (DHCP)服務。
參見 dhclient.conf(5).
配置指令碼 pppconfig
配置 PPP
連線,僅需要互動式的選擇下面內容。
電話號碼
ISP 使用者名稱
ISP 密碼
埠速率
modem 通訊埠
認證方式
表 5.6. 使用 pppconfig 的 PPP 連線配置檔案列表
![]() |
小心 |
---|---|
"<isp_name>" 是 " |
你可以使用下面的底層網路配置工具測試配置。
$ sudo pon <isp_name> ... $ sudo poff <isp_name>
參見 "/usr/share/doc/ppp/README.Debian.gz
".
一個不同的使用pppd(8)
方案是使用來自 wvdial
包的
wvdial(1)。代替
pppd
執行
chat(8)
來撥號和協商連線,wvdial
進行撥號和初始化協商,然後啟動 pppd
進行餘下操作。
配置指令碼 wvdialconf
配置 PPP 連線,僅需要互動式的選擇下面內容。
電話號碼
ISP 使用者名稱
ISP 密碼
在大部分情況下,wvdial
能夠成功建立連線並自動維護認證鑑權資料。
你可以使用下面的底層網路配置工具測試配置。
$ sudo wvdial ... $ sudo killall wvdial
參見 wvdial(1) 和 wvdial.conf(5).
當你的網際網路提供商提供 PPPoE 連線,並且你決定把電腦直接連線到廣域網,那你的電腦網路必須使用 PPPoE 來配置。PPPoE 表示乙太網上的
PPP。配置指令碼pppoeconf
互動式的配置 PPPoE 連線。
配置檔案在下面。
你可以使用下面的底層網路配置工具測試配置。
$ sudo /sbin/ifconfig eth0 up $ sudo pon dsl-provider ... $ sudo poff dsl-provider $ sudo /sbin/ifconfig eth0 down
參見 "/usr/share/doc/pppoeconf/README.Debian
".
Debian 系統上的傳統 TCP/IP 網路
搭建,ifupdown
軟體包是作為一個上層工具來使用。有兩個典型場景。
像移動電腦上的 動態 IP 系統,你可以使用 resolvconf
包搭建 TCP/IP
網路,它能夠使你快速切換你的網路配置。 (參見 第 5.6.4 节 “使用 DHCP 的網路介面”).
像伺服器上的 靜態 IP 系統,你不需要 resolvconf
包來搭建你的 TCP/IP
網路,並保持你的系統簡單(參見 第 5.6.5 节 “使用靜態 IP 地址的網路介面”).
如果你想設定高階配置,這些傳統的設定方法,是相當有用的。在下面的內容中發現細節。
ifupdown
包提供 Debian 系統中標準的高層網路配置框架。在本節中,我們通過
ifupdown
的簡單介紹和許多典型列子來學習基本的網路配置。
ifupdown
包包含有兩個命令:
ifup(8)
和
ifdown(8).
它們提供專注於"/etc/network/interfaces" 配置檔案的上層網路配置。
表 5.9. 使用 ifupdown 進行基本網路配置的命令列表
命令 | 操作 |
---|---|
ifup eth0
|
如果 "iface eth0 " 節存在,使用 eth0
的配置來啟動網路介面 eth0
|
ifdown eth0
|
如果 "iface eth0 " 節存在,使用 eth0 的配置來關閉網路介面
eth0
|
![]() |
警告 |
---|---|
請不要使用 ifconfig(8) 和 ip(8) 這類的底層網路配置工具命令來配置一個 up 狀態的介面。 |
![]() |
注意 |
---|---|
並沒有一個叫 |
在
interfaces(5)
裡解釋的 "/etc/network/interfaces
" 關鍵語法,能夠用下面的表格概括。
表 5.10. "/etc/network/interfaces
" 裡面的節列表
節 | 說明 |
---|---|
"auto <interface_name> "
|
當系統啟動時,啟動介面 < interface_name> |
"allow-auto <interface_name> "
|
同上 |
"allow-hotplug <interface_name> "
|
當核心從介面檢測到一個熱拔插事件時,啟動介面 <interface_name> |
"iface <config_name> … " 開頭的行
|
定義 <config_name> 的網路配置 |
"mapping <interface_name_glob> " 開頭的行
|
定義 <config_name> 的對映值來匹配 <interface_name> |
"# " 號開始的行
|
像註釋一樣忽略(行尾註釋不被支援) |
"\ " 反斜槓結尾的行
|
擴充套件配置到下一行 |
以 iface
開頭行的節,有下面的語法。
iface <config_name> <address_family> <method_name> <option1> <value1> <option2> <value2> ...
對於基本配置, mapping
節沒有被使用,你可以使用網路介面名作為網路配置名。 (參見 第 5.7.5 节 “對映節 mapping stanza”).
![]() |
警告 |
---|---|
在
" |
在啟動系統的時候, "/etc/network/interfaces
" 檔案裡下面的配置條目啟動了迴環網路介面
lo
。 (通過 auto
節).
auto lo iface lo inet loopback
這節內容在 "/etc/network/interfaces
" 檔案裡面一直存在。
按 第 5.5.1 节 “乙太網 DHCP 連線”
準備系統後,在"/etc/network/interfaces
" 裡面,按下面的內容建立配置條目後,網路介面的
DHCP 便配置好了。
allow-hotplug eth0 iface eth0 inet dhcp
當 Linux 核心檢測到物理介面 eth0
, allow-hotplug
節促使
ifup
啟動介面,iface
促使 ifup
使用 DHCP 來配置介面。
在 "/etc/network/interfaces
" 檔案裡面建立配置條目,來配置靜態 IP
網路介面。如下所示。
allow-hotplug eth0 iface eth0 inet static address 192.168.11.100 netmask 255.255.255.0 gateway 192.168.11.1 dns-domain example.com dns-nameservers 192.168.11.1
當 Linux 核心檢測到 eth0
, allow-hotplug
節促使
ifup
啟動介面,iface
節促使
ifup
使用靜態 IP 來配置介面。
這裡,我假設下面的配置。
區域網的 IP 地址範圍: 192.168.11.0
-
192.168.11.255
閘道器的 IP 地址: 192.168.11.1
電腦的 IP 地址: 192.168.11.100
resolvconf
包:已安裝
域名: "example.com
"
DNS 伺服器的 IP 地址:192.168.11.1
當 resolvconf
包沒有安裝時,DNS 相關的配置,需要按下面的方式手工編輯
"/etc/resolv.conf
" 。
nameserver 192.168.11.1 domain example.com
![]() |
小心 |
---|---|
用在上面例子裡的 IP 地址,不意味著照抄。你應當按你實際網路配置調整 IP 地址。 |
無線 LAN (簡稱 WLAN) 提供快速的無線連線,使用基於 IEEE 802.11 標準集的非授權無線寬頻擴頻通訊技術。
無線介面跟乙太網介面非常像,但在初始化時,要求提供一些網路 ID
和金鑰資料。他們的上層網路工具差不多和乙太網介面一樣,除開介面名有一點點不同,按使用的不同核心驅動,像 eth1
, wlan0
, ath0
,
wifi0
……
![]() |
提示 |
---|---|
|
這裡有一些需要記住的 WLAN 關鍵詞。
表 5.11. WLAN 縮寫詞列表
縮略語 | 全稱 | 說明 |
---|---|---|
NWID | Network ID | 802.11 之前 WaveLAN 網路使用的 16 位網路號 (強烈不贊成使用) |
(E)SSID | (Extended) Service Set Identifier | 無線接入點 (APs) 的網路名稱,互連形成一個完整的 802.11 無線區域網, 域名 ID |
WEP, (WEP2) | Wired Equivalent Privacy | 使用 40 位金鑰的第一代 64位(128位)無線加密標準(不贊成使用) |
WPA | Wi-Fi Protected Access | 第二代無線加密標準(實現大部分 802.11i),和 WEP 相容 |
WPA2 | Wi-Fi Protected Access 2 | 第三代無線加密標準(完全的 802.11i),與 WEP 不相容 |
實際選擇使用的協議是由你配置的無線路由器所限制。
你需要安裝 wpasupplicant
包來支援 WLAN 使用新的 WPA/WPA2.
使用 DHCP
的無線區域網連線,"/etc/network/interfaces
" 檔案的條目需要按下面的內容設定。
allow-hotplug ath0 iface ath0 inet dhcp wpa-ssid homezone # hexadecimal psk is encoded from a plaintext passphrase wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
參見 "/usr/share/doc/wpasupplicant/README.modes.gz
".
你需要安裝 wireless-tools
包來支撐老的 WEP
無線區域網。(你的消費等級的路由器可能仍然使用不安全的架構,但這總比沒有好。)
![]() |
小心 |
---|---|
請注意:WEP 無線區域網上的網路流量,可以被其他人監聽。 |
使用 DHCP
的無線區域網連線,"/etc/network/interfaces
" 檔案的條目需要按下面的內容設定。
allow-hotplug eth0 iface eth0 inet dhcp wireless-essid Home wireless-key1 0123-4567-89ab-cdef wireless-key2 12345678 wireless-key3 s:password wireless-defaultkey 2 wireless-keymode open
參見 "/usr/share/doc/wireless-tools/README.Debian
".
你需要按之前的描述配置 PPP 連線(參見 第 5.5.3 节 “使用 pppconfig 的 PPP 連線”). 然後,按下面的方式給第一個 PPP 裝置
ppp0
增加 “/etc/network/interfaces
"
檔案裡的條目.
iface ppp0 inet ppp provider <isp_name>
你需要按之前的描述先配置好使用 wvdial
的另外一種 PPP 連線(參見第 5.5.4 节 “使用 wvdialconf 的另一種可選的 PPP 連線”). 然後,按下面的方式給第一個
PPP 裝置 ppp0
增加
“/etc/network/interfaces
" 檔案裡的條目.
iface ppp0 inet wvdial
使用 PPPoE 直接連線到廣域網的電腦,你需要按之前的描述用 PPPoE 連線配置系統(參見 第 5.5.5 节 “使用 pppoeconf 的 PPPoE 乙太網連線”). 然後,按下面的方式給第一個 PPPoE 裝置
eth0
增加 “/etc/network/interfaces
"
檔案裡的條目.
allow-hotplug eth0 iface eth0 inet manual pre-up /sbin/ifconfig eth0 up up ifup ppp0=dsl down ifdown ppp0=dsl post-down /sbin/ifconfig eth0 down # The following is used internally only iface dsl inet ppp provider dsl-provider
"/etc/network/run/ifstate
" 檔案儲存了由
ifupdown
軟體包管理的當前所有的活動網路介面的期望狀態。但不幸的是,即使ifupdown
系統沒有按期望的啟動某個網路介面,"/etc/network/run/ifstate
"
檔案仍然會把它列為啟用狀態。
如果對一個網路介面的 ifconfig(8) 命令輸出沒有如下列子中的一行,那它就不能夠作為 IPV4 網路的一部分使用.
inet addr:192.168.11.2 Bcast:192.168.11.255 Mask:255.255.255.0
![]() |
注意 |
---|---|
對於連線到 PPPoE 的乙太網裝置, ifconfig(8) 命令的輸出看起來像上面的列子。 |
當你試圖重新配置介面,如 eth0
時,你必須首先用 "sudo ifdown eth0
" 命令關閉它.
這將從"/etc/network/run/ifstate
" 檔案裡面移除
eth0
條目。 (如果 eth0
之前沒有被適當配置,或沒有啟用,這個命令將導致出現一些錯誤資訊。迄今為止,對於簡單的單使用者工作站,在任何時間執行這個操作,看起來都是安全的。)
你現在可以按需要重新配置網路介面 eth0
,重寫
"/etc/network/interfaces
" 檔案的內容。
然後,你可以使用 "sudo ifup
eth0
" 命令,重新啟用 eth0
。
![]() |
提示 |
---|---|
你可以簡單的執行 " |
ifupdown-extra
包提供簡易的網路連線測試,和 ifupdown
包一道使用.
network-test(1) 命令能夠在 shell 裡使用。
自動指令碼將執行每一個 ifup
執行的命令。
network-test
命令把你從麻煩的執行分析網路問題的底層命令中解放出來。
自動指令碼安裝在 " /etc/network/*/
"並執行下面的操作。
檢查網路線纜連線
檢查重複 IP 地址使用
按 "/etc/network/routes
" 的定義,建立系統靜態路由
檢查網路的閘道器是否可以到達
在 "/var/log/syslog
" 檔案裡面記錄結果
系統日誌記錄對管理遠端系統的網路問題非常有用。
![]() |
提示 |
---|---|
|
ifupdown
軟體包,使用其高階用法,其功能就能夠超出在 第 5.6 节 “使用 ifupdown 進行基本網路配置(舊)” 所描述的內容。
描述在這裡的這些功能是完全可選的。我,由於懶惰和極簡主義,幾乎不使用這些令人煩擾的東西。
![]() |
小心 |
---|---|
如果你不能夠通過 第 5.6 节 “使用 ifupdown 進行基本網路配置(舊)” 裡的資訊建立網路連線,使用下面的資訊,你就會使你的情形變得比較糟糕。 |
ifplugd
軟體包是一個老的自動網路配置工具,它僅能夠管理乙太網連線。解決了移動 PC
等拔插乙太網線纜的問題。如果你有安裝 NetworkManager 或
Wicd (參見 第 5.2 节 “現代的桌面網路配置”),就不需要這個軟體包。
這個軟體包執行一個後臺守護程序(daemon) 來代替 auto 或 allow-hotplug 的功能 (參見 表 5.10 “"/etc/network/interfaces
" 裡面的節列表”),並啟動網路連線上的介面。
乙太網埠怎樣使用 ifplugd
軟體包,比如 eth0
,請看下面。
刪除 "/etc/network/interfaces
" 裡面的節: "auto
eth0
" 或 "allow-hotplug eth0
".
保留 "/etc/network/interfaces
" 裡的節: "iface eth0
inet …
" 和 "mapping …
".
安裝 ifplugd
軟體包.
執行 "sudo dpkg-reconfigure ifplugd
".
把 eth0
作為 "由 ifplugd 監控的靜態網絡卡".
現在,網路按你希望的方式重新配置了。
在開啟電源或發現硬體的時候啟動,介面不會自己啟動自己。
快速啟動過程,沒有長的 DHCP 等待時間。
沒有適當 IPv4 地址的介面不會被滑稽的啟用 (參見 第 5.6.12 节 “ifupdown 網路配置狀態”).
發現乙太網線纜時,啟動介面。
在拔掉乙太網線纜後啟動一段時間,然後介面自動關閉。
在插入另外的乙太網線纜時,介面在新的網路環境下啟動。
![]() |
提示 |
---|---|
ifplugd(8) 命令的引數能夠設定其行為,比如說重新配置介面的延時。 |
ifmetric
軟體包使我們能夠根據經驗來維護路由度量值,即使是 DHCP 的路由度量值。
下面設定 eth0
介面的值,讓其在有 wlan0
介面的情況下,更加適當。
安裝 ifmetric
軟體包。
在 "/etc/network/interfaces
" 裡,增加一行 "metric
0
",緊挨著放在"iface eth0 inet dhcp
"這行下面。
在 "/etc/network/interfaces
" 裡,增加一行 "metric
1
" ,緊挨著放在 "iface wlan0 inet dhcp
" 這行下面.
metric 0 意味著最高路由優先順序,是預設值。大的 metric 值意味著較低的路由優先順序。具有最低 metric 值的活動的介面 IP 地址,成為原始路由。參見ifmetric(8)。
單個物理乙太網介面能夠配置為使用不同的 IP 地址的多個虛擬介面。這樣做的目的,通常是把介面連線到幾個 IP 子網。比如說,只有一個網絡卡的基於 IP 地址的虛擬 web 主機,就是這樣一個應用。
舉個例子,讓我們假設下面的情況。
你主機上的單個乙太網介面連線到乙太網集線器(不是寬頻路由器)。
乙太網集線器同時連線到網際網路和本地區域網。
區域網使用子網 192.168.0.x/24
.
你主機的物理介面 eth0
使用 DHCP 提供的 IP 地址來連線網際網路。
你的主機使用 192.168.0.1
作為區域網的虛擬介面 eth0:0
的地址。
"/etc/network/interfaces
" 裡下面的節配置你的網路。
iface eth0 inet dhcp metric 0 iface eth0:0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 metric 1
![]() |
小心 |
---|---|
雖然這個配置列子,並使用 netfilter/iptables (參見 第 5.10 节 “Netfilter 網路過濾框架”) 的網路地址轉換(NAT),能夠給只有單個網路介面的區域網提供廉價的路由器,但這樣設定,沒有真正的防火牆能力。你應當使用 2 塊物理網絡卡的 NAT 來使本地網路更安全,隔離不安全的網際網路。 |
ifupdown
軟體包提供高階網路配置,使用網路配置名和網路介面名。我使用的術語和
ifup(8)
以及
interfaces(5)有少量不同。
表 5.12. 網路裝置術語列表
man 手冊頁術語 | 本文術語 | 下面文字的列子 | 說明 |
---|---|---|---|
物理介面名 | 網路介面名 | lo , eth0 ,
<interface_name> |
Linux 核心給出的名字 (使用 udev 機制)
|
邏輯介面名 | 網路配置名 | config1 , config2 ,
<config_name> |
在 "/etc/network/interfaces " 裡緊跟著 iface 的名字
|
在 第 5.6.1 节 “簡單的命令語法” 裡的基本網路配置命令,需要網路配置名來標識匹配
"/etc/network/interfaces
" 裡 iface
節的網路介面名。
高階網路配置命令能夠按下面的方式區分 "/etc/network/interfaces
" 裡的網路配置名和網路介面名。
表 5.13. ifupdown 高階網路配置命令列表
命令 | 操作 |
---|---|
ifup eth0=config1
|
使用配置 config1 啟動網路介面 eth0
|
ifdown eth0=config1
|
使用配置 config1 關閉網路介面 eth0
|
ifup eth0
|
使用 mapping 節選擇的
eth0 配置啟動網路介面
|
ifdown eth0
|
使用 mapping 節選擇的
eth0 配置關閉網路介面
|
為了避免複雜,我們在 第 5.6.2 节 “"/etc/network/interfaces" 基本語法”
裡省略瞭解釋 "/etc/network/interfaces
" 裡的 mapping
節。
mapping <interface_name_glob> script <script_name> map <script_input1> map <script_input2> map ...
這給 /etc/network/interfaces
檔案提供了一個高階特徵,可以自動選擇對映指令碼
<script_name>
定義的配置。
讓我們來跟隨下面的執行。
$ sudo ifup eth0
當 "<interface_name_glob>
" 匹配
"eth0
", 這個執行過程執行下面的命令來自動配置 eth0
。
$ sudo ifup eth0=$(echo -e '<script_input1> \n <script_input2> \n ...' | <script_name> eth0)
這裡," map
" 指令碼輸入行是可選和可以重複的。
![]() |
注意 |
---|---|
|
以下是如何在幾個網路配置中進行手動切換,而無需像 第 5.6.13 节 “網路重新配置基礎” 中那樣重寫
“/etc/network/interfaces
” 檔案。
對於你需要訪問的所有網路配置,你需要在 “/etc/network/interfaces
”
檔案中像下面那樣建立一個單獨的節。
auto lo iface lo inet loopback iface config1 inet dhcp iface config2 inet static address 192.168.11.100 netmask 255.255.255.0 gateway 192.168.11.1 dns-domain example.com dns-nameservers 192.168.11.1 iface pppoe inet manual pre-up /sbin/ifconfig eth0 up up ifup ppp0=dsl down ifdown ppp0=dsl post-down /sbin/ifconfig eth0 down # The following is used internally only iface dsl inet ppp provider dsl-provider iface pots inet ppp provider provider
請注意,iface
後面標識的
網路配置名稱 不用於標識 網路介面名稱。另外,也沒有 auto
或 allow-hotplug
節來根據事件自動啟動網路介面
eth0
。
現在,你可以切換網路配置了。
讓我們通過 DHCP 將你的 PC 移動到區域網。你可以通過下列命令開啟由網路配置名稱(邏輯介面名稱)config1
指定的網路介面(物理介面) eth0
。
$ sudo ifup eth0=config1 Password: ...
eth0
介面已開啟,由 DHCP 配置並連線到了區域網。
$ sudo ifdown eth0=config1 ...
eth0
介面已關閉並斷開區域網連線。
讓我們通過靜態 IP 使你的 PC 移動到區域網。你可以通過下列命令開啟由網路配置名稱 config2
指定的網路介面 eth0
。
$ sudo ifup eth0=config2 ...
開啟 eth0
介面,使用靜態 IP 配置並連線到區域網。像 dns-*
這樣的額外引數會配置 “/etc/resolv.conf
” 的內容。如果安裝了
resolvconf
,“/etc/resolv.conf
” 會更容易管理。
$ sudo ifdown eth0=config2 ...
eth0
介面再次關閉並斷開區域網連線。
讓我們將你的 PC 移動到 PPPoE 伺服器的 BB-modem 上的一個埠。你可以通過下列命令開啟由網路配置名稱 pppoe
指定的網路介面 eth0
。
$ sudo ifup eth0=pppoe ...
eth0
介面已開啟,由 PPPoE 配置直接連線到 ISP。
$ sudo ifdown eth0=pppoe ...
eth0
介面再次關閉並斷開連線。
讓我們將你的 PC 移動到使用 POTS 和 modem 的位置,而非區域網或 BB-modem。你可以通過下列命令開啟由網路配置名稱 ppp0
指定的網路介面 eth0
。
$ sudo ifup ppp0=pots ...
開啟 ppp0
介面,並使用 PPP 連線到網際網路。
$ sudo ifdown ppp0=pots ...
關閉 ppp0
介面並斷開網路。
你應該檢查 “/etc/network/run/ifstate
”
檔案,檢視ifupdown
系統當前網路配置的狀態。
![]() |
警告 |
---|---|
如果你有多個網路介面,你可能需要調整 |
ifupdown
系統會自動執行安裝在 “/etc/network/*/
”
中的指令碼,而且會傳遞環境變數給指令碼。
表 5.14. ifupdown 系統傳遞的環境變數
環境變數 | 傳遞值 |
---|---|
"$IFACE "
|
處理中的介面的物理名稱(介面名稱) |
"$LOGICAL "
|
處理中的介面的邏輯名稱(配置名稱) |
"$ADDRFAM "
|
介面的 <address_family> |
"$METHOD "
|
介面的 <method_name> (例如 “static”) |
"$MODE "
|
如果是 ifup 執行的,則值為 “start”;如果是 ifdown
執行的,則值為 “stop”
|
"$PHASE "
|
根據 “$MODE ”,但有更細緻的區分,共分為
pre-up 、post-up 、pre-down
和 post-down 階段
|
"$VERBOSITY "
|
指示是否使用了 “--verbose ”;是為 1,否為 0
|
"$PATH "
|
命令搜尋路徑:“/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ”
|
"$IF_<OPTION> "
|
位於 iface 這節的相應選項值
|
這裡,每一個環境變數,"$IF_<OPTION>
",是在相應的選項名字 <option1>
和 <option2> 前增加 "$IF_
" 來建立,
把字母轉換為大寫字母,將中劃線替換為下劃線,忽略非字母數字的字元。
![]() |
提示 |
---|---|
<address_family>, <method_name>, <option1> 和 <option2> 的說明,請參見第 5.6.2 节 “"/etc/network/interfaces" 基本語法”。 |
ifupdown-extra
軟體包 (參見 第 5.6.14 节 “ifupdown-extra 包”)使用這些環境變數來擴充套件ifupdown
軟體包的功能. ifmetric
軟體包 (參見 第 5.7.2 节 “ifmetric 軟體包”)安裝
"/etc/network/if-up.d/ifmetric
"指令碼,這個指令碼通過"$IF_METRIC
"變數來設定
metric 路由度量值. guessnet
軟體包 (參見 第 5.7.8 节 “guessnet Mapping 對映”),提供簡單和功能強大的框架,用於通過 mapping
對映機制自動選擇網路配置,這個軟體包也使用了這些環境變數。
![]() |
注意 |
---|---|
使用這些環境變數進行個性化網路配置的列子,你可以檢視" |
為了替代在 第 5.7.6 节 “手動的可切換網路配置” 描述的手工選擇配置,你可以使用在 第 5.7.5 节 “對映節 mapping stanza” 描述的對映機制,自動選擇個性化指令碼來進行配置網路。
guessnet
軟體包提供的
guessnet-ifupdown(8)
命令,是被設計作為對映指令碼,並提供強力框架來增強ifupdown
系統.
在 iface
節下的每一個網路配置,列出測試條件作為guessnet
選項的值。
對映機制選擇第一個沒有錯誤結果的 iface
作為網路配置。
guessnet-ifupdown
使用的對映指令碼和
ifupdown
的原始網路配置架構,這兩種對
"/etc/network/interfaces
" 檔案的用法,不會造成負面的影響,因為 guessnet
選項僅僅只匯出額外的環境變數到
ifupdown
系統執行的指令碼。細節參見
guessnet-ifupdown(8).
![]() |
注意 |
---|---|
當多個 |
Iproute2 命令集提供完整的底層網路配置能力。有個從舊的 net-tools 命令集到新的 iproute2 命令集的轉換表。
表 5.15. 從舊的 net-tools
命令集到新的 iproute2
命令集轉換表
舊的 net-tools | 新的 iproute2 | 操作 |
---|---|---|
ifconfig(8) |
ip addr
|
一個裝置上的協議(IP 或 IPv6)地址 |
route(8) |
ip route
|
路由表條目 |
arp(8) |
ip neigh
|
ARP 或 NDISC 快取條目 |
ipmaddr
|
ip maddr
|
多播地址 |
iptunnel
|
ip tunnel
|
IP 隧道 |
nameif(8) | ifrename(8) | 基於 MAC 地址的網路介面名 |
mii-tool(8) | ethtool(8) | 乙太網裝置設定 |
參見 ip(8) 和 IPROUTE2 工具套件 Howto.
你可以按下面的方式安全的使用底層網路命令,這些命令不會改變網路配置。
表 5.16. 底層網路命令列表
命令 | 說明 |
---|---|
ifconfig
|
顯示活動的網路介面連線和地址狀態 |
ip addr show
|
顯示活動的網路介面連線和地址狀態 |
route -n
|
用數字地址顯示全部路由表 |
ip route show
|
用數字地址顯示全部路由表 |
arp
|
顯示當前 ARP 快取表的內容 |
ip neigh
|
顯示當前 ARP 快取表的內容 |
plog
|
顯示 ppp 後臺守護程序(daemon)日誌 |
ping yahoo.com
|
檢查到 "yahoo.com " 的因特網連線
|
whois yahoo.com
|
在域名資料庫裡面檢查誰註冊了 "yahoo.com "
|
traceroute yahoo.com
|
跟蹤到 "yahoo.com " 的因特網連線
|
tracepath yahoo.com
|
跟蹤到 "yahoo.com " 的因特網連線
|
mtr yahoo.com
|
跟蹤到 "yahoo.com " 的因特網連線(重複的)
|
dig [@dns-server.com] example.com [{a|mx|any}]
|
查詢由 "dns-server.com " 提供服務的
"example.com " 域名的 DNS 記錄:
"a ", "mx " 或 "any "
記錄
|
iptables -L -n
|
檢視包過濾 |
netstat -a
|
找出所有開啟的埠 |
netstat -l --inet
|
找出監聽埠 |
netstat -ln --tcp
|
找出 TCP 監聽埠(數字的) |
dlint example.com
|
查詢 "example.com " 的 DNS zone 資訊
|
![]() |
提示 |
---|---|
部分底層網路配置工具放在 " |
通用的網路優化超出了本文的範圍。我提及消費等級連線相關的主題。
表 5.17. 網路優化工具列表
軟件包 | 流行度 | 大小 | 說明 |
---|---|---|---|
iftop
|
V:7, I:115 | 97 | 顯示一個網路介面上的頻寬使用資訊 |
iperf
|
V:4, I:55 | 263 | 網際網路協議頻寬測量工具 |
ifstat
|
V:0, I:8 | 60 | 介面統計監控 |
bmon
|
V:1, I:17 | 146 | 行動式頻寬監視器和網速估計工具 |
ethstatus
|
V:0, I:5 | 40 | 快速測量網路裝置吞吐的指令碼 |
bing
|
V:0, I:1 | 80 | 實驗性的隨機頻寬測試器 |
bwm-ng
|
V:2, I:17 | 90 | 小巧簡單的控制檯頻寬監測器 |
ethstats
|
V:0, I:0 | 23 | 基於控制檯的乙太網統計監視器 |
ipfm
|
V:0, I:0 | 78 | 頻寬分析工具 |
最大傳輸單元 Maximum Transmission Unit
(MTU) 的值能夠通過加 "-M do
" 選項的
ping(8)
實驗來確定,它傳送從 1500 位元組(對於IP+ICMP 包頭,有 28 位元組的偏移)大小開始的 ICMP 包,來找出 IP 不分片的最大包大小。
嘗試下列例子
$ ping -c 1 -s $((1500-28)) -M do www.debian.org PING www.debian.org (194.109.137.218) 1472(1500) bytes of data. From 192.168.11.2 icmp_seq=1 Frag needed and DF set (mtu = 1454) --- www.debian.org ping statistics --- 0 packets transmitted, 0 received, +1 errors
嘗試 1454 代替 1500
你看到用 1454 ping(8) 成功了。
這個過程是 路徑 MTU (PMTU) 發現 (RFC1191) , tracepath(8) 命令能夠自動完成這個。
![]() |
提示 |
---|---|
上面的列子,PMTU 的值是 1454,這是我先前的光纖到戶提供商,使用了 非同步傳輸模式 Asynchronous Transfer Mode (ATM) 作為他們的骨幹網路,並使用 PPPoE 作為客戶端。實際 PMTU 值依賴於你的環境,比如說,我新的光纖到戶提供商是 1500。 |
表 5.18. 最佳 MTU 值的基本指引方法
網路環境 | MTU | 基本原理 |
---|---|---|
撥號連線(IP: PPP) | 576 | 標準的 |
乙太網連線 (IP: DHCP 或固定) | 1500 | 預設標準值 |
乙太網連線 (IP: PPPoE) | 1492 (=1500-8) | PPP 頭部 2 位元組 和 PPPOE 頭部 6 位元組 |
乙太網連線 (ISP 骨幹網: ATM, IP: DHCP 或固定 IP) | 1462 (=48*31-18-8) | 作者推斷:18 位元組的乙太網頭,8位元組 SAR 尾(譯註:SAR 為 ATM 技術名詞) |
乙太網連線 (ISP 骨幹: ATM, IP: PPPoE) | 1454 (=48*31-8-18-8) | 參見 "Optimal MTU configuration for PPPoE ADSL Connections" 來了解基本原理 |
除了這些基本的指引方法外,你還應當知道下面的資訊。
使用任何隧道方式(VPN 等.)的最佳 MTU 需要進一步減去它們上面的頭部。
MTU 值不應當超過通過實驗驗證的 PMTU 值。
當遇到其它限制的時候,較大的 MTU 值通常比較好。
這裡示例設定 MTU 值,從預設的 1500 設定到 1454.
對於 DHCP (參見 第 5.6.4 节 “使用 DHCP 的網路介面”),
你能夠使用下面的方式替換 "/etc/network/interfaces
" 檔案裡 iface
節相關的行.
iface eth0 inet dhcp pre-up /sbin/ifconfig $IFACE mtu 1454
對於靜態 IP (參見 第 5.6.5 节 “使用靜態 IP 地址的網路介面”),
你能夠使用下面的方式替換 "/etc/network/interfaces
" 檔案裡 iface
節相關的行.
iface eth0 inet static address 192.168.11.100 netmask 255.255.255.0 gateway 192.168.11.1 mtu 1454 dns-domain example.com dns-nameservers 192.168.11.1
對於直接 PPPoE (參見 第 5.5.5 节 “使用 pppoeconf 的 PPPoE 乙太網連線”),你能夠使用下面的方式替換
"/etc/ppp/peers/dsl-provider
" 裡 "mtu
"
相關的行.
mtu 1454
最大分片大小 (MSS) 是另外一種衡量包大小的方法。MSS 和 MTU 的關係如下.
對於 IPv4, MSS = MTU - 40
對於 IPv6,MSS = MTU - 60
![]() |
注意 |
---|---|
基於 iptables(8) (參見 第 5.10 节 “Netfilter 網路過濾框架”) 的優化,能夠通過 MSS 來壓縮包大小,路由器會用到 MMS 。參見 iptables(8)中的"TCPMSS" . |
TCP 吞吐量能夠通過調整 TCP 緩衝大小的引數來最大化,對現代大頻寬和高延時的 WAN,在 "TCP Tuning Guide" 和 "TCP tuning"裡有描述. 到目前為止,當前 Debian 預設設定能夠很好的服務好我的 1G bps 光纖到戶 LAN 連線。
Netfilter 使用 Linux 核心 模組 (參見 第 3.3.1 节 “核心模組初始化”) 提供 狀態防火牆 和 網路地址轉換 (NAT) 框架。
表 5.19. 防火牆工具列表
軟件包 | 流行度 | 大小 | 說明 |
---|---|---|---|
iptables
|
V:300, I:993 | 2520 | netfilter 管理工具(iptables(8) 用於 IPv4, ip6tables(8) 用於 IPv6) |
arptables
|
V:0, I:2 | 96 | netfilter 管理工具(arptables(8) 用於 ARP) |
ebtables
|
V:15, I:39 | 265 | netfilter 管理工具 (ebtables(8) 用於乙太網橋) |
iptstate
|
V:0, I:3 | 116 | 持續性監控 netfilter 狀態 (和 top(1) 相似) |
shorewall-init
|
V:0, I:0 | 68 | Shoreline 防火牆 初始化 |
shorewall
|
V:5, I:13 | 2458 | Shoreline 防火牆, netfilter 配置檔案生成器 |
shorewall-lite
|
V:0, I:0 | 65 | Shoreline 防火牆, netfilter 配置檔案生成器 (精簡版) |
shorewall6
|
V:1, I:2 | 779 | Shoreline 防火牆, netfilter 配置檔案生成器(IPv6 版本) |
shorewall6-lite
|
V:0, I:0 | 64 | Shoreline 防火牆, netfilter 配置檔案生成器 (IPv6,精簡版) |
netfilter 主要的使用者層程式是 iptables(8).你能從 shell 手工交付式的配置 netfilter,使用 iptables-save(8) 儲存當前狀態,當系統重啟時,通過 init 指令碼呼叫 iptables-restore(8) 來恢復。
像 shorewall 這樣的配置幫助指令碼能夠使這個過程變得更簡單。
參見 http://www.netfilter.org/documentation/
上的文件(或在 "/usr/share/doc/iptables/html/
" 裡面的文件).
![]() |
提示 |
---|---|
雖然這些是為 Linux 2.4 寫的,iptables(8) 命令和 netfilter 核心功能都能夠在 Linux2.6 和 3.x 核心系列實現. |