無論是用于個(gè)人桌面還是企業(yè)服務(wù)器,Debian都能提供強(qiáng)大的網(wǎng)絡(luò)功能。本教程將詳細(xì)介紹Debian的網(wǎng)絡(luò)配置,包括基本網(wǎng)絡(luò)架構(gòu)、現(xiàn)代的桌面網(wǎng)絡(luò)配置、沒有圖像界面的現(xiàn)代網(wǎng)絡(luò)配置、云環(huán)境下的現(xiàn)代網(wǎng)絡(luò)配置以及底層網(wǎng)絡(luò)配置等方面。
一、基本網(wǎng)絡(luò)架構(gòu)
現(xiàn)代Debian操作系統(tǒng)中的基本網(wǎng)絡(luò)架構(gòu)如下:
網(wǎng)絡(luò)配置工具一覽表:
軟件包 | 流行度 | 大小 | 類型 | 說明 |
network-manager | V:390, I:455 | 15414 | 配置::NM | NetworkManager(守衛(wèi)進(jìn)程):自動(dòng)管理網(wǎng)絡(luò) |
network-manager-gnome | V:121, I:368 | 5583 | 配置::NM | NetworkManager(GNOME前端) |
netplan.io | V:1, I:5 | 249 | config::NM+networkd | Netplan?(generator): Unified, declarative interface to NetworkManager and systemd-networkd backends |
ifupdown | V:593, I:980 | 199 | 配置::ifupdown | 用來啟動(dòng)/關(guān)閉網(wǎng)絡(luò)的標(biāo)準(zhǔn)工具(Debian特有) |
isc-dhcp-client | V:217, I:980 | 2866 | 配置::底層 | DHCP客戶端 |
pppoeconf | V:0, I:5 | 186 | 配置::輔助 | 配置助手,以便于使用PPPoE連接 |
wpasupplicant | V:346, I:509 | 3862 | 配置::輔助 | WPA和WPA2客戶端支持(IEEE 802.11i) |
wpagui | V:0, I:1 | 774 | 配置::輔助 | wpa_supplicant Qt 圖形界面客戶端 |
wireless-tools | V:174, I:241 | 292 | 配置::輔助 | 操控Linux無線擴(kuò)展的工具 |
iw | V:35, I:472 | 302 | 配置::輔助 | 配置 Linux 無線設(shè)備的工具 |
iproute2 | V:727, I:970 | 3597 | 配置::iproute2 | iproute2, IPv6和其他高級(jí)網(wǎng)絡(luò)配置:ip(8),tc(8)等等 |
iptables | V:315, I:740 | 2414 | 配置::Netfilter | 封包過濾和網(wǎng)絡(luò)地址轉(zhuǎn)換管理工具(Netfilter) |
nftables | V:101, I:675 | 182 | 配置::Netfilter | administration tools for packet filtering and NAT (Netfilter) (successor to {ip,ip6,arp,eb}tables) |
iputils-ping | V:200, I:997 | 120 | 測試 | 測試能否連接遠(yuǎn)程主機(jī),通過主機(jī)名或IP 地址(iproute2) |
iputils-arping | V:3, I:39 | 49 | 測試 | 測試能否連接遠(yuǎn)程主機(jī),通過ARP地址 |
iputils-tracepath | V:2, I:31 | 45 | 測試 | 跟蹤訪問遠(yuǎn)程主機(jī)的路徑 |
ethtool | V:94, I:268 | 739 | 測試 | 顯示或更改以太網(wǎng)設(shè)備的設(shè)定 |
mtr-tiny | V:5, I:47 | 156 | 測試::底層 | 追蹤連接遠(yuǎn)程主機(jī)的路徑(文本界面) |
mtr | V:5, I:42 | 209 | 測試::底層 | 追蹤連接遠(yuǎn)程主機(jī)的路徑(文本界面和GTK界面) |
gnome-nettool | V:0, I:18 | 2492 | 測試::底層 | 獲取常見網(wǎng)絡(luò)信息的工具(GNOME) |
nmap | V:26, I:202 | 4498 | 測試::底層 | 網(wǎng)絡(luò)映射/端口掃描(Nmap,控制臺(tái)) |
tcpdump | V:17, I:178 | 1340 | 測試::底層 | 網(wǎng)絡(luò)流量分析(Tcpdump,控制臺(tái)) |
wireshark | I:45 | 10514 | 測試::底層 | 網(wǎng)絡(luò)流量分析(Wireshark,GTK) |
tshark | V:2, I:25 | 501 | 測試::底層 | 網(wǎng)絡(luò)流量分析(控制臺(tái)) |
tcptrace | V:0, I:2 | 401 | 測試::底層 | 根據(jù)tcpdump的輸出生成的連接數(shù)據(jù)統(tǒng)計(jì) |
snort | V:0, I:0 | 2203 | 測試::底層 | 靈活的網(wǎng)絡(luò)入侵偵測系統(tǒng)(Snort) |
ntopng | V:0, I:1 | 15904 | 測試::底層 | 在網(wǎng)頁瀏覽器中展示網(wǎng)絡(luò)流量 |
dnsutils | V:18, I:293 | 272 | 測試::底層 | BIND軟件包提供的網(wǎng)絡(luò)客戶端程序:nslookup(8),nsupdate(8),dig(8) |
dlint | V:0, I:3 | 53 | 測試::底層 | 利用域名服務(wù)器查詢來查看DNS域信息 |
dnstracer | V:0, I:1 | 59 | 測試::底層 | 跟蹤DNS查詢直至源頭 |
1、主機(jī)名解析
主機(jī)名解析,目前也是由 NSS (名字服務(wù)轉(zhuǎn)換 Name Service Switch) 機(jī)制來支持。這個(gè)解析的流程如下。
1、”/etc/nsswitch.conf” 文件里的 “hosts: files dns” 這段規(guī)定主機(jī)名解析順序。 (代替 “/etc/host.conf” 文件里的”order” 這段原有的功能。)
2、files 方式首先被調(diào)用。如果主機(jī)名在 “/etc/hosts” 文件里面發(fā)現(xiàn),則返回所有有效地址并退出。 ( “/etc/host.conf” 文件包含 “multi on”.)
3、dns 方式被調(diào)用。如果主機(jī)名通過查詢 “/etc/resolv.conf” 文件里面寫的 互聯(lián)網(wǎng)域名系統(tǒng) Domain Name System (DNS) 來找到,則返回所有有效地址并退出。
一臺(tái)典型的工作站在安裝時(shí)可能會(huì)將主機(jī)名設(shè)置為 “host_name”,并將可選域名設(shè)置為空字符串。這樣,”/etc/hosts “就會(huì)如下所示:
127.0.0.1 localhost 127.0.1.1 host_name # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
每一行由 IP 地址 開始,接下來是相關(guān)聯(lián)的主機(jī)名。
在這個(gè)例子的第二行 127.0.1.1 IP 地址也許不會(huì)在其它類 Unix 系統(tǒng)發(fā)現(xiàn)。Debian Installer 為沒有永久 IP 地址的系統(tǒng)創(chuàng)建這個(gè)條目,作為某些軟件(如 GNOME)的一個(gè)變通方法。
- 對(duì)于有永久 IP 地址的系統(tǒng),這個(gè)永久 IP 地址應(yīng)當(dāng)代替這里的 127.0.1.1。
- 對(duì)于有永久 IP 地址和有 域名系統(tǒng) Domain Name System (DNS)提供完全資格域名 fully qualified domain name (FQDN) 的系統(tǒng),規(guī)范名 host_name.domain_name 應(yīng)當(dāng)被用來代替 host_name.
如果 resolvconf 軟件包沒有安裝,”/etc/resolv.conf” 是一個(gè)靜態(tài)文件。如果安裝了,它是一個(gè)符號(hào)鏈接。此外,它包含有解析策略的初始化信息。如 DNS 是 IP=”192.168.11.1″,則包含如下。
nameserver 192.168.11.1
resolvconf 軟件包使這個(gè) “/etc/resolv.conf” 文件成為一個(gè)符號(hào)鏈接,并通過鉤子腳本自動(dòng)管理其內(nèi)容。
對(duì)于典型的 adhoc 局域網(wǎng)環(huán)境中的 PC 工作站,除了基本的文件和 dns 方法外,還可以通過組播 DNS (mDNS) 解析主機(jī)名。
- Avahi 提供 Debian 下的組播 DNS 發(fā)現(xiàn)框架;
- 它和 Apple Bonjour / Apple Rendezvous 相當(dāng);
- libnss-mdns 插件包提供 mDNS 的主機(jī)名解析,GNU C 庫 (glibc)的 GNU 名字服務(wù)轉(zhuǎn)換 Name Service Switch (NSS) 功能支持 mDNS;
- /etc/nsswitch.conf “文件中應(yīng)包含類似 “hosts: files mdns4_minimal [NOTFOUND=return] dns”的說明。使用 IPv4 地址 “224.0.0.251 “或 IPv6 地址 “FF02::FB “在多播 UDP 數(shù)據(jù)包中發(fā)送 mDNS 查詢消息,即可解析后綴為”.local “偽頂級(jí)域的主機(jī)名。
注意:
- 域名系統(tǒng) Domain Name System 中的擴(kuò)展通用頂級(jí)域名 expansion of generic Top-Level Domains (gTLD) 還在進(jìn)行中。在局域網(wǎng)內(nèi),選擇一個(gè)域名時(shí),請(qǐng)?zhí)岱烂譀_突 name collision;
- 使用 libnss-resolve 和 systemd-resolved、libnss-myhostname 或 libnss-mymachine 等軟件包,并在”/etc/nswitch.conf “文件的 “hosts “行中列出 coressponding 列表,可以覆蓋上文討論的傳統(tǒng)網(wǎng)絡(luò)配置。
2、網(wǎng)絡(luò)接口名稱
systemd 使用”enp0s25″ 之類的 “可預(yù)測網(wǎng)絡(luò)接口名稱”。
3、局域網(wǎng)網(wǎng)絡(luò)地址范圍
讓我們重新提醒下在 rfc1918 里規(guī)定的局域網(wǎng) local area networks (LANs)IPv4 32 位地址在各類地址的保留范圍. 這些地址保證不會(huì)與因特網(wǎng)上專有的地址沖突。
注意:IP 地址書寫中有冒號(hào)的是 IPv6 地址,例如,”::1″ 是 localhost 本地主機(jī)。
網(wǎng)絡(luò)地址范圍列表:
類別 | 網(wǎng)絡(luò)地址 | 子網(wǎng)掩碼 | 子網(wǎng)掩碼/位數(shù) | 子網(wǎng)數(shù) |
---|---|---|---|---|
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 |
注意:如果這些地址分配到一個(gè)主機(jī),那么這個(gè)主機(jī)一定不能夠直接訪問互聯(lián)網(wǎng),必須通過一個(gè)作為網(wǎng)關(guān)的代理服務(wù)或通過 網(wǎng)絡(luò)地址轉(zhuǎn)換 Network Address Translation (NAT). 消費(fèi)局域網(wǎng)環(huán)境,寬帶路由器通常使用 NAT。
4、網(wǎng)絡(luò)設(shè)備支持
盡管 Debian 系統(tǒng)支持大多數(shù)硬件設(shè)備,但依舊有一些網(wǎng)絡(luò)設(shè)備需要 DFSG non-free 固件來支持它們。
二、現(xiàn)代的桌面網(wǎng)絡(luò)配置
對(duì)于使用 systemd 的現(xiàn)代 Debian 桌面系統(tǒng),網(wǎng)絡(luò)接口通常由兩個(gè)服務(wù)進(jìn)行初始化:lo 接口通常在“networking.service”處理,而其它接口則由“NetworkManager.service”處理。
Debian 可以通過后臺(tái)守護(hù)進(jìn)程(daemon)管理軟件來管理網(wǎng)絡(luò)連接,例如 NetworkManager (NM)(network-manager 和相關(guān)軟件包)。
- 它們有自己的 GUI 和命令行程序來作為用戶界面;
- 它們有自己的后臺(tái)守護(hù)進(jìn)程(daemon)作為它們的系統(tǒng)后端;
- 它們使你可以簡單地將系統(tǒng)連接到網(wǎng)絡(luò);
- 它們使你可以簡單地管理有線和無線網(wǎng)絡(luò)的配置;
- 它們允許你配置網(wǎng)絡(luò)而不依賴傳統(tǒng)的 ifupdown 軟件包。
注意:不要在服務(wù)器上使用這些自動(dòng)網(wǎng)絡(luò)配置工具。它們主要針對(duì)于筆記本電腦上的移動(dòng)桌面用戶。
這些現(xiàn)代的網(wǎng)絡(luò)配置工具需要進(jìn)行適當(dāng)?shù)呐渲?,以避免與傳統(tǒng) ifupdown 軟件包發(fā)生沖突,它的配置文件位于 “/etc/network/interfaces”。
1、圖形界面的網(wǎng)絡(luò)配置工具
Debian 系統(tǒng) NM 的官方文檔位于 “/usr/share/doc/network-manager/README.Debian” 。本質(zhì)上,如下操作即可完成桌面的網(wǎng)絡(luò)配置。
通過下列命令使桌面用戶 foo 歸屬 “netdev” 組(另外,例如 GNOME 和 KDE 這樣的現(xiàn)代桌面環(huán)境會(huì)通過 D-bus 自動(dòng)完成該操作)。
$ sudo usermod -a -G foo netdev
使 “/etc/network/interfaces” 的配置保持下面那樣簡潔。
auto lo iface lo inet loopback
通過下列命令重新啟動(dòng) NM。
$ sudo systemctl restart network-manager
通過圖形界面配置網(wǎng)絡(luò)。
注意:
- 只有不列在 “/etc/network/interfaces” 中的接口會(huì)被 NM 管理,以避免與 ifupdown 的沖突;
- 如果你想擴(kuò)展 NM 的網(wǎng)絡(luò)配置功能,請(qǐng)尋找適當(dāng)?shù)牟寮K和補(bǔ)充軟件包,例如 network-manager-openconnect、network-manager-pptp-gnome、mobile-broadband-provider-info、gnome-bluetooth 等等。
三、沒有圖像界面
使用 systemd 的系統(tǒng)中,可以在 /etc/systemd/network/ 里配置網(wǎng)絡(luò)。參見 systemd-resolved(8)、resolved.conf(5) 和 systemd-networkd(8)。這個(gè)允許在沒有圖像界面的情況下配置現(xiàn)代網(wǎng)絡(luò)。
DHCP 客戶端的配置可以通過創(chuàng)建 “/etc/systemd/network/dhcp.network” 文件來進(jìn)行設(shè)置。例如:
[Match] Name=en* [Network] DHCP=yes
一個(gè)靜態(tài)網(wǎng)絡(luò)配置能夠通過創(chuàng)建 “/etc/systemd/network/static.network” 來設(shè)置.比如:
[Match] Name=en* [Network] Address=192.168.0.15/24 Gateway=192.168.0.1
1、使用DHCP
可通過創(chuàng)建數(shù)據(jù)源文件”/etc/netplan/50-dhcp.yaml “來設(shè)置 DHCP 客戶端配置:
network: version: 2 ethernets: all-en: match: name: "en*" dhcp4: true dhcp6: true
2、使用靜態(tài) IP 的現(xiàn)代云網(wǎng)絡(luò)配置
可通過創(chuàng)建數(shù)據(jù)源文件”/etc/netplan/50-static.yml “來設(shè)置靜態(tài)網(wǎng)絡(luò)配置:
network: version: 2 ethernets: eth0: addresses: - 192.168.0.15/24 routes: - to: default via: 192.168.0.1
3、使用 Network Manger 的現(xiàn)代云網(wǎng)絡(luò)配置
通過創(chuàng)建數(shù)據(jù)源文件”/etc/netplan/00-network-manager.yml”,可以使用 Network Manger 基礎(chǔ)架構(gòu)設(shè)置網(wǎng)絡(luò)客戶端配置:
network: version: 2 renderer: NetworkManager
四、底層網(wǎng)絡(luò)配置
在 Linux 上的底層網(wǎng)絡(luò)配置,使用 iproute2 程序 (ip(8), …) .
1、Iproute2 命令
Iproute2 命令集提供完整的底層網(wǎng)絡(luò)配置能力。有個(gè)從舊的 net-tools 命令集到新的 iproute2 命令集的轉(zhuǎn)換表。
從舊的 net-tools 命令集到新的 iproute2 命令集轉(zhuǎn)換表:
舊的 net-tools | 新的 iproute2 | 操作 |
---|---|---|
ifconfig (8) |
ip addr |
一個(gè)設(shè)備上的協(xié)議(IP 或 IPv6)地址 |
route (8) |
ip route |
路由表?xiàng)l目 |
arp (8) |
ip neigh |
ARP 或 NDISC 緩存條目 |
ipmaddr |
ip maddr |
多播地址 |
iptunnel |
ip tunnel |
IP 隧道 |
nameif (8) |
ifrename (8) |
基于 MAC 地址的網(wǎng)絡(luò)接口名 |
mii-tool (8) |
ethtool (8) |
以太網(wǎng)設(shè)備設(shè)置 |
2、安全的底層網(wǎng)絡(luò)操作
可以按下面的方式安全的使用底層網(wǎng)絡(luò)命令,這些命令不會(huì)改變網(wǎng)絡(luò)配置。
底層網(wǎng)絡(luò)命令列表:
命令 | 說明 |
---|---|
ip addr show |
顯示活動(dòng)的網(wǎng)絡(luò)接口連接和地址狀態(tài) |
route -n |
用數(shù)字地址顯示全部路由表 |
ip route show |
用數(shù)字地址顯示全部路由表 |
arp |
顯示當(dāng)前?ARP?緩存表的內(nèi)容 |
ip neigh |
顯示當(dāng)前?ARP?緩存表的內(nèi)容 |
plog |
顯示 ppp 后臺(tái)守護(hù)進(jìn)程(daemon)日志 |
ping yahoo.com |
檢查到 “yahoo.com ” 的因特網(wǎng)連接 |
whois yahoo.com |
在域名數(shù)據(jù)庫里面檢查誰注冊了 “yahoo.com “ |
traceroute yahoo.com |
跟蹤到 “yahoo.com ” 的因特網(wǎng)連接 |
tracepath yahoo.com |
跟蹤到 “yahoo.com ” 的因特網(wǎng)連接 |
mtr yahoo.com |
跟蹤到 “yahoo.com ” 的因特網(wǎng)連接(重復(fù)的) |
dig [@dns-server.com] example.com [{a|mx|any}] |
查詢由 “dns-server.com ” 提供服務(wù)的 “example.com ” 域名的?DNS?記錄: “a “, “mx ” 或 “any ” 記錄 |
iptables -L -n |
查看包過濾 |
netstat -a |
找出所有打開的端口 |
netstat -l --inet |
找出監(jiān)聽端口 |
netstat -ln --tcp |
找出 TCP 監(jiān)聽端口(數(shù)字的) |
dlint example.com |
查詢 “example.com ” 的 DNS zone 信息 |
部分底層網(wǎng)絡(luò)配置工具放在 “/usr/sbin/” 目錄。你可以像 “/usr/sbin/ifconfig” 這樣使用完整命令路徑,或把 “/usr/sbin” 加到 “~/.bashrc” 文件列出的 “$PATH” 環(huán)境變量里 。