Linux系统中与网络配置相关的工具
網絡配置
大家平時經常碰到的網絡是局域網(LAN),局域網又分為有線局域網和無線局域網(WLAN),其中以太網(Ethernet)是最常見的有線局域網,WIFI是最常見的無線局域網。除此之外,還有撥號網絡PPPoE(Point-to-Point Protocol over Ethernet),即以太網上的點對點協議(PPP)。以太網技術雖然具有簡單易用,成本低等特點,但是以太網廣播網絡的屬性,使得其通信雙方無法相互驗證對方的身份,因而通信是不安全的;PPPoE結合了PPP協議通信雙方身份驗證的功能,在PPP組網結構的基礎上,將PPP報文封裝成PPPoE報文,從而實現以太網上的點對點通信,使得以太網中的客戶端能夠連接到遠端的寬帶接入設備上,實現了傳統以太網不能提供的身份驗證、加密以及壓縮等功能。
本文描述如何在 Linux 系統中配置 ISO 模型的網絡層(Network Layer)連接。
網絡連接
首先確保電腦中裝有網卡,排查網絡是否連接的詳細步驟如下:
首先介紹一些網絡管理工具。
ping 命令
ping domain_name/ip_address # ping 后面的測試可以是網站域名或者 IP 地址# 示例: ping archlinux.org# 輸出結果 PING archlinux.org (95.217.163.246) 56(84) bytes of data. 64 bytes from archlinux.org (95.217.163.246): icmp_seq=1 ttl=128 time=279 ms 64 bytes from archlinux.org (95.217.163.246): icmp_seq=2 ttl=128 time=234 ms 64 bytes from archlinux.org (95.217.163.246): icmp_seq=3 ttl=128 time=233 ms ^C --- archlinux.org ping statistics --- 4 packets transmitted, 3 received, 25% packet loss, time 3090ms rtt min/avg/max/mdev = 232.841/248.541/278.688/21.323 msping 命令包含在 iputils包中,在一些精簡的系統中,要使用 ping 命令首先需要安裝 iputils 包。使用 Ctrl+c 即可終止輸出,從輸出結果中可以看出測試結果,需要注意 ping 命令測試是運行的是網絡層中 ICMP 協議, 當代理軟件運行在應用層時,不能用該命令測試網絡的連通性。
net-tools
net-tools 包含了一系列 Linux 網絡的基礎程序,其中最常見的有 arp ifconfig netstat route.
arp
ARP(Address Resolution Protocol,地址解析協議)是用來將IP地址解析為MAC地址的協議。 主機或三層網絡設備上會維護一張ARP表,用于存儲IP地址和MAC地址的映射關系,一般ARP表項包括動態(tài)ARP表項和靜態(tài)ARP表項。
arp 命令用于操作內核 ARP 緩存,一般很少需要手動操作 ARP 表項。
arp -v # 顯示 arp 緩沖區(qū)內容 arp -s IP MAC-ADDRESS # 添加靜態(tài) arp 映射 arp -d IP # 刪除 arp 緩存條目ifconfig (network interfaces configuring)
ifconfig 是配置網卡的主要命令,其功能是用于顯示或設置網絡設備參數信息,在Windows系統中與之類似的命令叫做 ipconfig,使用 ifconfig 命令配置網絡設備的參數信息臨時生效,當服務器重啟,配置過的參數會自動失效,如果需要永久改變,則需要寫入配置文件中。
# 語法格式:ifconfig [網卡設備] [參數] ifconfig # 顯示網卡信息 ifconfig -a # 顯示的是系統所有的網絡接口,不管是激活的還是未激活的 ifconfig network_interface up/down # 對指定的網卡設備進行啟動或關閉操作 ifconfig network_interface 192.168.10.20 netmask 255.255.255.0 # 臨時修改IP地址注意一下網卡的命名規(guī)則,默認情況下,udev 分配網卡名字,以太網前綴 en,WIFI 前綴 wl.
netstat
netstat是控制臺命令,是一個監(jiān)控TCP/IP網絡的非常有用的工具,它可以顯示路由表、實際的網絡連接以及每一個網絡接口設備的狀態(tài)信息。Netstat用于顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用于檢驗本機各端口的網絡連接情況。
netstat -ltup # -l 只顯示監(jiān)聽端口 # -t 列出 tcp 端口 # -u 列出 udp 端口 # -p 輸出中顯示 PID 和進程名稱實際使用中可以用 grep 命令過濾輸出。
route
route 命令是用于操作基于內核 IP 路由表。
route -n # 顯示當前路由 oute add/del -net ip_addr netmask ip_addr dev net_interface # 添加網/刪除網關 route add/del default gw ip_addr # 添加/刪除設置默認網關traceroute
traceroute 用于探測數據包從源到目的經過路由的 IP,使用該命令前需要安裝 traceroute 包。traceroute 的原理是試圖以最小的 TTL(存活時間)發(fā)出探測包來跟蹤數據包到達目標主機所經過的網關,然后監(jiān)聽一個來自網關 ICMP 的應答。
# 示例:traceroute archlinux.orgiproute2
iproute2 的出現旨在從功能上取代 net-tools,net-tools 通過procfs(/proc)和ioctl系統調用去訪問和改變內核網絡配置,而iproute2則通過netlink套接字接口與內核通訊。拋開性能而言,iproute2的用戶接口比net-tools顯得更加直觀。
iproute2 的核心命令是 ip 命令,它與 net-tools 中命令的對應關系如下:
| arp | ip neighbor |
| ifconfig | ip address, ip link |
| netstat | ss |
| route | ip route |
ip 命令用法示例:
ip link show # 顯示出所有可用網絡接口的列表 ip addr [show dev eth1] # 查看某個指定網絡接口的IPv4地址 ip link set up/down eth1 # 激活或停用某個指定的網絡接口 ip addr add 10.0.0.1/24 [broadcast 10.0.0.255] dev eth1 # 可以使用 iproute2 給同一個接口分配多個 IP 地址 ip addr del 10.0.0.1/24 dev eth1 # 移除 IP 地址 ip link set dev eth1 address 08:00:27:75:2a:67 # 更改網絡接口的MAC地址DHCP
通常情況下我們不需要手動配合靜態(tài) IP,只需要去動態(tài)獲取 IP 即可。一個網絡中的 DHCP 服務器給客戶端提供了動態(tài) IP 地址、子網掩碼、默認網關,以及可選的 DNS 服務。
在客戶端安裝 DHCP 的客戶端即可使用該服務。Linux 上常用的 DHCP 客戶端是 dhcpcd,如下表所示:
| dhcpcd | dhcpcd | DHCP, DHCPv6, ZeroConf, static IP | dhcpcd.service, dhcpcd@*interface*.service |
很多網絡管理軟件都內置了 DHCP 服務。
網絡管理軟件
介紹幾種網絡管理軟件,這些網絡管理軟件用于管理網絡連接。使用這些軟件很大程度上降低了網絡連接的復雜性。常用的網絡管理軟件如下:
| netctl | 2 unofficial | netctl, wifi-menu | Yes | dhcpcd or dhclient | netctl-ifplugd@*interface*.service, netctl-auto@*interface*.service |
| NetworkManager | Yes | nmcli, nmtui | Yes | internal or dhclient | NetworkManager.service |
| systemd-networkd | No | networkctl | No | internal | systemd-networkd.service, systemd-resolved.service |
NetworkManager
NetworkManager 是一個為系統提供檢測和配置功能以便自動連接到網絡的程序。支持 PPPoE 撥號,集成了 DHCP 服務。nmcli 是配置網絡的命令行工具,nmtui 提供一個圖形化文本界面來與NetworkManager交互用于配置網絡。
本機地址
Hostname
在網絡中,hostname 是一個分配給主機的一個域名,通常是一個主機的本地名字加上可選的域名,用點(.)分隔,例如 en.wikipedia.org(主機名:en,域名:wikipedia.org),這種主機名通過本機 hosts 文件或者 DNS 服務器解析為 IP 地址。一個主機可以擁有多個主機名。
可以通過修改 /etc/hostname 文件配置主機名,該文件包含單獨的一行 myhostname,或者通過命令更改:
hostnamectl set-hostname myhostname # 等同于修改 /etc/hostname hostname myhostname # 臨時更改,重啟失效要使你的設備能在局域網中被識別,有以下兩種方法:
Hosts
Hosts 文件位于 /etc/hosts,以表的形式存儲了主機名和 IP 地址的映射關系。Hosts文件是大多數系統都存在的一個小型主機表。Hosts文件中包含了本地網絡重要的主機名和地址信息,查詢Hosts文件得到的結果比通過查詢 DNS 得到的結果優(yōu)先級更高。
Localhost
localhost 是一個在計算機網絡中用于表示“此計算機”的主機名,它被用于通過本地回環(huán)網絡接口,來訪問本機運行的服務,并且將會繞過任何物理網絡接口硬件。運用本地環(huán)回機制,便可在主機上運行網絡服務,期間不須安裝實體網絡接口卡,也無須將該服務開放予主機所在網絡。例如,在設置好本地安裝的網站后,可通過http://localhost這一網址,來訪問本地網站。localhost這個主機名稱一般會解析為 IPv4 本地回環(huán)地址 127.0.0.1 和 IPv6 本地回環(huán)地址 [::1].
為了解析本機主機名,可在 /etc/hosts 中添加以下信息:
127.0.0.1 localhost ::1 localhost 127.0.1.1 myhostname如果本機有一個永久的 IP 地址,則可配置:
127.0.0.1 localhost ::1 localhost 203.0.113.45 host1.fqdomain.example host1一般情況下本機有三塊網卡:
localhost、127.0.0.1、0.0.0.0和本機IP的區(qū)別:
相關閱讀
Linux系統連接以太網與WIFI的方法
參考文獻
[1] Network Configuration
[2] 什么是PPPoE?PPPoE解決了哪些問題?
[3] localhost、127.0.0.1和0.0.0.0和本機IP的區(qū)別
總結
以上是生活随笔為你收集整理的Linux系统中与网络配置相关的工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java saas osgi_基于云计算
- 下一篇: 前端javascript QQ右下角弹窗