Linux網絡設置詳情

Linux網絡設置

一、查看網絡配置接口

1.查看網絡接口信息—ifconfig

主機的網絡接口卡(網卡)通常稱為網絡接口

在 Linux 操作系統中,使用 ifconfig 命令可以查看網絡接口的地址配置信息

若采用 mini 版 CentOS 7 安裝的系統,默認是沒有 ifconfig 命令的,需要先通過 yum 方式安裝 net-tools 軟件包,才有 ifconfig 命令

ens33:

  • 第一塊以太網卡的名稱,“ens33”中的“en”是“EtherNet”的縮寫,表示網卡類型為以太網,“s”表示熱插拔插槽上的設備(hot-plug Slot),數字“33”表示插槽編號
  • ifconfig #顯示已啟用的網絡接口,不包括禁用的設備

inet 192.168.126.15         #ip地址
netmask 255.255.255.0        #子網掩碼
broadcast 192.168.126.255    #廣播地址
ether 00:0c:29:8e:38:02      #mac地址

第一行:

以太網卡的名字不是常見的eth0,變成瞭ens33。其中en代表以太網卡
ens33:代表PCI接口的物理位置為(0,3), 其中橫座標代表bus,縱座標代表slot
UP:代表此網絡接口為啟用狀態(down為關閉狀態)
RUNNING:代表網卡設備已連接
MULTICAST:表示支持組播
mut:為數據包最大傳輸單元,每個網絡設備都有自己的mtu,默認為1500

第二行

網卡的IP地址、子網掩碼、廣播地址

第三行:

IP v6地址

第四行:

Ethernet(以太網):表示連接類型;
ether:表示為網卡的MAC地址
RX:接受數據包個數、大小統計信息
RX:異常接受包的個數、如丟包量、錯誤等
TX:發送數據包個數、大小統計信息
TX:發送包的個數、如丟包量、錯誤等

ifconfig ens33    #隻查看網卡 ens33 的配置信息
ifconfig -a       #顯示所有活動及非活動的連接

IO

“回環”網絡接口,“lo”是“loopback”的縮寫,它不代表真正的網絡接口,而是一個虛擬的網絡接口,其 IP 地址默認是“127.0.0.1”,子網掩碼為8位,回環地址通常僅用於對本機的網絡測試

用來測試一個網絡程序,但又不想讓局域網或外網的用戶能夠查看,隻能在此臺主機上運行和查看所用的網絡接口。比如把 HTTPD服務器的指定到回壞地址,在瀏覽器輸入 127.0.0.1 就能看到你所架WEB網站瞭。但隻是您能看得到,局域網的其它主機或用戶無從知道

virbr0

一個虛擬的網絡連接端口,默認為0號虛擬網絡連接端口;一般在通過虛擬機進行移植操作系統時,默認會以nat的網絡地址轉移,但是可以選擇橋接或者是無網絡連接也是可以的(因為本人用的是centos鏡像的虛擬機,所以會有這一行)

2.修改網絡配置文件

  • 網絡接口的配置文件默認位於/etc/sysconfig/network-script/ifcfg-ens33
  • 文件名格式為 “ifcfg-XXX”,其中“XXX”是網絡接口的名稱

例如,網卡 ens33 的配置文件是“ifcfg-ens33”, 回環接口 lo 的配置文件是“ifcfg-lo”

在 CentOS 7 操作系統中,當修改瞭網絡接口的配置文件以後,若要使新的配置生效, 可以重新啟動 network 服務或者重啟主機 systemctl restart network

註:建議關閉NetworkManager服務,否則有時啟動network會報錯
systemctl stop NetworkManager
systemctl disable NetworkManager

3.設置網絡接口參數 ifconfig

ifconfig 命令不僅可以用於查看網卡配置,還可以修改網卡的 IP 地址、子網掩碼,也可以綁定虛擬網絡接口、激活或禁用網絡接口。

ifconfig ens37 192.168.10.20 netmask 255.255.255.0   #臨時配置網卡的ip地址
ifconfig ens37 192.168.10.20/24  #當不指定子網掩碼時,將使用 IP 地址所在分類的默認子網掩碼

如果隻是禁用、啟用某一個網絡接口(而不是所有接口),可分別使用兩個接口控制腳本 ifdown、ifup

ifconfig ens37 down|up ifup/ifdown ens37

為網卡綁定虛擬接口:在對服務器網絡進行調試的過程中,有時候需要臨時在同一個網卡上使用一個新的 IP 地址,但是又不能覆蓋原有 IP 地址而導致服務程序不可用。
這時可以為網卡綁定一個虛擬的網絡接口,然後為虛擬接口設置新的 IP 地址(相當於一塊網卡配多個 IP 地址)。

ifconfig ens33:0 192.168.20.20

4.查看主機名稱—hostname

主機名:在 Linux 操作系統中,相當一部分網絡服務都會通過主機名來識別主機,如果主機名配置不當,可能會導致程序功能出現故障

[root@localhost ~]# hostname xjj                     #臨修改時主機名稱

[root@localhost ~]hostnamectl set-hostname xjj       #永久修改主機名稱
或
vim /etc/hostname                                    #自行添加主機名,設置完後需重啟系統才能生效
hostname -i                                          #查看本主機ip

5.查看路由表條目route

路由表:Linux 操作系統中的路由表決定著從本機向其他主機、其他網絡發送數據的去向,是排除網絡故障的關鍵信息
直接執行“route”命令可以查看當前主機中的路由表信息

[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    0      0        0 ens33
link-local      0.0.0.0         255.255.0.0     U     1002   0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.245.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33

- Destination 列對應目標網段的地址,當目標網段為“default”時,表示此行是默認網關記錄
- Gateway 列對應下一跳路由器的地址,當下一跳為“gateway”時,表示目標網段是與本機直接相連的
- Iface 列對應發送數據的網絡接口
- 目標網段為“0.0.0.0”時表示此行為默認網關記錄
- 下一跳是“0.0.0.0”時表示目標網段與本主機直連

route -n 可以將路由記錄中的地址顯示為數字形式,這可以跳過解析主機名的過程,在路由表條目較多的情況下能夠加快執行速度

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.245.2   0.0.0.0         UG    0      0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.245.0   0.0.0.0         255.255.255.0   U     0      0        0 ens33

ip route show=ip route #查看路由配置

[root@localhost ~]# ip route show
default via 192.168.245.2 dev ens33 
169.254.0.0/16 dev ens33 scope link metric 1002 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 
192.168.245.0/24 dev ens33 proto kernel scope link src 192.168.245.211 

[root@localhost ~]# ip route
default via 192.168.245.2 dev ens33 
169.254.0.0/16 dev ens33 scope link metric 1002 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 
192.168.245.0/24 dev ens33 proto kernel scope link src 192.168.245.211 

設置路由記錄 route=
添加、刪除靜態路由記錄
route 命令不僅可以用於查看路由表信息,還可用來添加、刪除靜態的路由表條目,其中也包括設置默認網關地址(默認網關記錄是一條特殊的靜態路由條目)
添加靜態路由,通過“route add”操作可以添加路由記錄,結合“-net”選項指定目標網段的地址,結合“gw”選項指定下一跳路由器的IP 地址
route add -net 192.168.3.0/24 gw 192.168.10.1 #表示可以通過192.168.10.1到192.168.3.0/24網絡
route del -net 192.168.3.0/24
添加、刪除默認網關記錄,需要註意的是,在同一個主機的路由表中隻應有一條默認網關記錄。若同時存在多條默認網關記錄,則可能導致該主機的網絡連接出現故障
添加、刪除默認網關記錄時,與添加、刪除靜態路由記錄的命令格式類似,但指定目標網段時隻需簡單地使用“default”表示即可
route add default gw 網關ip
route del default gw 網關ip/route del default

6.查看網絡連接情況-netstat

查看系統的網絡連接狀態、路由表、接口統計等信息,是瞭解網絡狀態及排除網絡服務故障的有效工具
-n:以數字的形式顯示相關的主機地址、端口等信息
-r: 顯示路由表信息
-a: 顯示主機中所有活動的網絡連接信息(包括監聽、非監聽狀態的服務端口)
-l : 顯示處於監聽(Listenin狀態的網絡連接及端口信息
-t :查看 TCP(Transmission Control Protocol,傳輸控制協議)相關的信息
-u : 顯示 UDP(User Datagram Protocol,用戶數據報協議)協議相關的信息
-p : 顯示與網絡連接相關聯的進程號、進程名稱信息(該選項需要 root 權限)

用法:①通常使用“-anpt”組合選項,以數字形式顯示當前系統中所有的 TCP 連接信息,同時顯示對應的進程信息
②配合管道符grep過濾出特定的記錄

[root@localhost ~]# netstat -anpt | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6860/sshd           
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      9904/sshd: root@pts 
tcp        0     52 192.168.245.211:22      192.168.245.1:64550     ESTABLISHED 9904/sshd: root@pts 
tcp6       0      0 :::22                   :::*                    LISTEN      6860/sshd           
tcp6       0      0 ::1:6010                :::*                    LISTEN      9904/sshd: root@pts 
[root@localhost ~]# 
[root@localhost ~]# netstat -lnpt | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6860/sshd           
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      9904/sshd: root@pts 
tcp6       0      0 :::22                   :::*                    LISTEN      6860/sshd           
tcp6       0      0 ::1:6010                :::*                    LISTEN      9904/sshd: root@pts 
[root@localhost ~]# netstat -lnpu | grep ntp
udp        0      0 192.168.122.1:123       0.0.0.0:*                           65421/ntpd          
udp        0      0 192.168.245.211:123     0.0.0.0:*                           65421/ntpd          
udp        0      0 127.0.0.1:123           0.0.0.0:*                           65421/ntpd          
udp        0      0 0.0.0.0:123             0.0.0.0:*                           65421/ntpd          
[root@localhost ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.245.2   0.0.0.0         UG        0 0          0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0
192.168.245.0   0.0.0.0         255.255.255.0   U         0 0          0 ens33

7.獲取socket統計信息-ss

查看系統的網絡連接情況,獲取socket統計信息,它可以顯示和 netstat 命令類似的輸出內容
socket:即套接字,上連應用進程,下連網絡協議棧,是應用程序通過網絡協議進行通信的接口,是應用程序與網絡協議根進行交互的接口

ss 的優勢在於它能夠顯示更多更詳細的有關 TCP 和連接狀態的信息,而且比 netstat 更快速更高效
當服務器的socket連接數量變得非常大時,無論是使用netstat命令還是直接cat /proc/net/tcp,執行速度都會很慢。
ss快的秘訣在於,它利用到瞭TCP協議棧中tcp_diag。tcp_diag是一個用於分析統計的模塊,可以獲得Linux 內核中第一手的信息,這就確保瞭ss的快捷高效
ss命令是Linux CentOS 7中iproute軟件包的一部分,默認已經安裝

[root@localhost ~]# time ss
real 0m0.012s
user 0m0.003s
sys  0m0.005s

[root@localhost ~]# time netstat -an
real 0m0.027s
user 0m0.001s
sys  0m0.006s

查看並發連接數ss和netstat對比
[root@shengjie ~]#  time netstat -ant | grep EST | wc -l
0

real 0m0.002s
user 0m0.002s
sys  0m0.002s
[root@shengjie ~]#  time ss -o state established | wc -l
711

real 0m0.013s
user 0m0.003s
sys  0m0.003s

為什麼ss比netstat快:

netstat是遍歷/proc下面每個PID目錄,ss直接讀/proc/net下面的統計信息。所以ss執行的時候消耗資源以及消耗的時間都比netstat少很多

-h : help 通過該選項獲取更多的使用幫助
-V : version 顯示軟件的版本號
-t : tcp 顯示 TCP 協議的 sockets
-u : udp 顯示 UDP 協議的 sockets
-n : numeric 不解析服務的名稱,如 “22” 端口不會顯示成 “ssh”
-l : listening 隻顯示處於監聽狀態的端口
-p : processes 顯示監聽端口的進程
-a : all 對 TCP 協議來說,既包含監聽的端口,也包含建立的連接
-r : resolve 把 IP 解釋為域名,把端口號解釋為協議名稱

[root@centos7 ~]# ss -tn | grep -w 22
ESTAB      0      0      192.168.245.151:22                 192.168.245.152:35318              
ESTAB      0      21800  192.168.0.105:22                 192.168.0.103:61488              
ESTAB      0      0      192.168.0.105:22                 192.168.0.103:61491          

[root@localhost ~]# ss -o state 'established' | grep ssh   #-o選項可用於顯示計時器信息。該信息向我們展示瞭諸如重新傳輸計時器值、已經發生的重新傳輸的數量以及已發送的keepalive探測的數量
tcp    0      52     192.168.245.211:ssh                  192.168.245.1:64550                 timer:(on,234ms,0)

[root@localhost ~]# ss -t state established   #established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, closed-wait, last-ack監聽和關閉等狀態
Recv-Q Send-Q        Local Address:Port                         Peer Address:Port                
0      52          192.168.245.211:ssh                         192.168.245.1:64550                


[root@shengjie ~]# ss -tnl sport le 500
State       Recv-Q Send-Q                 Local Address:Port                                Peer Address:Port              
LISTEN      0      128                                *:111                                            *:*                  
LISTEN      0      5                      192.168.122.1:53                                             *:*                  
LISTEN      0      128                                *:22                                             *:*                  
LISTEN      0      100                        127.0.0.1:25                                             *:*                  
LISTEN      0      128                               :::111                                           :::*                  
LISTEN      0      128                               :::22                                            :::*                  
LISTEN      0      100                              ::1:25                                            :::*       

二、測試網絡連接

1.測試網絡連通性—ping

使用ping命令可以向目標主機持續的發送測試數據包,並反饋顯示結果,直到按“Ctrl+C”組合鍵後終止測試並顯示最終統計結果
例:測試從本機到百度網站的連通性情況(記得Ctrl+C終止,否則會一直顯示下去)
ping 192.168.126.15 #最常用是後面跟ip地址

[root@xjj ~]# ping baidu.com         #後面還可跟域名
PING www.a.shifen.com (180.101.49.12) 56(84) bytes of data.
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=1 ttl=128 time=58.0 ms
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=2 ttl=128 time=48.4 ms
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=3 ttl=128 time=52.0 ms
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=4 ttl=128 time=41.2 ms
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=5 ttl=128 time=47.5 ms
^C
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4008ms
rtt min/avg/max/mdev = 41.227/49.484/58.045/5.535 ms

ping -c 10 192.168.126.15               #-c表示指定ping的次數
ping -c 10 -i 0.5 192.168.126.15        #-i 秒數:設定間隔幾秒送一個網絡封包給一臺機器,預設值是一秒送一次
ping -w 5 www.baidu.com                 #表示ping的超時時間為5s,意思是隻ping5秒,5秒後結束

可能會發生以下情況
(1)“Destination Host Unreacheble”表示目的主機不可達,可能目標地址不存在或者目的主機已關閉
(2)”Netwokr is unreacheable”表示沒有可用的路由記錄(如默認網關),無法到達目標主機所在網絡
(3)也有可能因為網絡中存在影響通信過程穩定的因素(如網卡故障、病毒或網絡攻擊)時,會看到“Request timeout”的反饋結果,表示與目的主機連接超時(數據包響應緩慢或丟失)
(4)也還有可能是目標主機防火墻的限制導致連接超時反饋

[root@localhost ~]# ping 192.168.10.11
PING 192.168.10.11 (192.168.10.11) 56(84) bytes of data.
From 192.168.10.9 icmp_seq=1 Destination Host Unreachable
From 192.168.10.9 icmp_seq=2 Destination Host Unreachable
From 192.168.10.9 icmp_seq=3 Destination Host Unreachable
From 192.168.10.9 icmp_seq=4 Destination Host Unreachable
From 192.168.10.9 icmp_seq=5 Destination Host Unreachable
From 192.168.10.9 icmp_seq=6 Destination Host Unreachab

2.跟蹤數據包的路由途徑—traceroute

測試從當前主機到目的主機之間經過瞭哪些網絡節點,並顯示瞭各中間節點的連接狀態(響應時間)
對於無法顯示的節點,連接狀態將顯示“*”
例:從本主機到百度之間,需要跨越一個路由器192.168.126.2

[root@xjj ~]# traceroute www.baidu.com
traceroute to www.baidu.com (180.101.49.11), 30 hops max, 60 byte packets
 1  gateway (192.168.126.2)  0.088 ms  0.037 ms  0.024 ms

traceroute命令能比ping命令更加準確的定位網絡連接的故障點(中斷點),執行命令也會比ping稍慢一點

在網絡測試與排錯過程中,通常會先試用ping命令測試與目的主機的網絡連接,如果發現有故障,再來使用traceroute命令跟蹤查看故障在哪個中間節點,也是記得按Ctrl+C終止

兩種方式:臨時配置和永久配置

臨時配置:臨時配置:通過命令行直接修改當前正在使用的網絡地址,修改後立即可以生效。 這種方式操作簡單快速、執行效率高,一般在調試網絡的過程中使用。但由於所做 的修改並沒有固定地存放在靜態的文件中,因此當重啟 network 服務或重啟主機後 將會失效
永久配置:通過配置文件來存放固定的各種網絡地址,需要重啟 network 服務或重 啟主機後才會生效。這種方式操作上相對要復雜一些,但相當於“永久配置”,一般 在需要為服務器設置固定的網絡地址時使用

3.測試DNS域名解析—nslookup

軟件包的名字就可以使用 yum install -y bind-utils

當域名解析出現異常的時候,將無法再使用域名的形式來訪問網絡中的Web站點、電子郵件系統等服務

nslookup是專門用來測試域名解析的專用工具,使用時隻要指定要解析的目標域名作為參數即可

nslookup 目標主機地址 [DNS服務器地址]

示例:
執行以下命令後,nslookup程序將提交查詢請求,詢問百度站點對應的IP地址是多少

[root@xjj ~]# nslookup www.baidu.com
Server:  192.168.126.2               #所使用的的DNS服務器
Address: 192.168.126.2#53            #DNS的服務器IP地址和端口號

Non-authoritative answer:               #以下為DNS解析的反饋結果
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com                #解析的IP地址
Address: 180.101.49.11
Name: www.a.shifen.com
Address: 180.101.49.12

若能夠成功反饋要查詢域名的IP地址,則表示域名解析沒有問題,否則需要根據實際反饋情況來判斷故障原因

4.域名配置文件

bind-utils 安裝包

vi /etc/resolv.conf 
search localdomain          #設置默認的搜索域(域名擴展名),當訪問主機“localhost”時,就相當於訪問“localhost.localdomain”
nameserver 202.106.0.20 
nameserver 202.106.148.1

/etc/resolv.conf 文件中記錄瞭本機默認使用的 DNS 服務器的地址信息,對該文件所做 的修改將會立刻生效
Linux 操作系統中最多可以指定 3 個(第 3 個以後的將被忽略)不同 的 DNS 服務器地址,優先使用第一個 DNS 服務器。例如,執行以下操作可以指定默認使用的兩個 DNS 服務器地址分別位於 202.106.0.20 和 202.106.148.1。

5.本地主機映射文件

/etc/hosts 文件中記錄著一份主機名與 IP 地址的映射關系表,一般用來保存經常需要訪問的主機的信息。當訪問一個未知的域名時,先查找該文件中是否有相應的映射記錄,如果找不到再去向 DNS 服務器查詢

若在/etc/hosts 文件中添加“119.75.218.70 www.baidu.com”的映射記錄,則當訪問網站 www.baidu.com 時,將會直接向 IP 地址 119.75.218.70 發送 Web 請求,省略瞭向 DNS

Dig是一個在類Unix命令行模式下查詢DNS包括NS記錄,A記錄,MX記錄等相關信息的工具,系統默認安裝

對於經常訪問的一些網站,可以通過在/etc/hosts 文件添加正確的映射記錄,減少 DNS 查詢過程,從而提高上網速度。當然,若添加瞭錯誤的映射記錄,則可能導致網站訪問出現 異常

另外,因為 hosts 文件隻保存在本地,所以其中的映射記錄也隻適用於當前主機,而無法作用於整個網絡

 

果找不到再去向 DNS 服務器查詢

若在/etc/hosts 文件中添加“119.75.218.70 www.baidu.com”的映射記錄,則當訪問網站 www.baidu.com 時,將會直接向 IP 地址 119.75.218.70 發送 Web 請求,省略瞭向 DNS

Dig是一個在類Unix命令行模式下查詢DNS包括NS記錄,A記錄,MX記錄等相關信息的工具,系統默認安裝

對於經常訪問的一些網站,可以通過在/etc/hosts 文件添加正確的映射記錄,減少 DNS 查詢過程,從而提高上網速度。當然,若添加瞭錯誤的映射記錄,則可能導致網站訪問出現 異常

另外,因為 hosts 文件隻保存在本地,所以其中的映射記錄也隻適用於當前主機,而無法作用於整個網絡

到此這篇關於Linux–網絡設置的文章就介紹到這瞭,更多相關Linux內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: