php wordpress nginx 程序员 centos Windows java 云计算 apache linux Python Ubuntu 微软 google Firefox 开源 mysql 编程 Android shell

《循序漸進Linux(第2版) 基礎知識 服務器搭建 系統管理 性能調優 虛擬化與集群應用》——4.6 網絡設置與維護

4.6 網絡設置與維護

4.6.1 ifconfig命令
1.功能說明
ifconfig命令用來配置網絡或顯示當前網絡接口狀態。它類似於Windows下的ipconfig命令,同時ifconfig命令必須以root用戶來執行。其格式如下。

ifconfig [選項] [interface] [inet|up|down|netmask|addr|broadcast]
ifconfig命令的選項及其說明如表4.39所示。
screenshot

interface:網絡接口名,Linux下的網絡接口名類似於eth0、eth1和lo等(在CentOS 7.x版本中,網絡接口名變為類似enp0s1、enp0s2這樣的標識),分別表示第1塊網卡、第2塊網卡和回環接口。這是個可選項,如果不添加此選項,則顯示系統中所有的網卡信息;如果添加此選項,則顯示指定網卡信息。
up:激活一個網絡接口。
down:與up相反,使指定的網絡接口無效。
netmask:為一個指定的網絡接口指定子網掩碼。
addr:這裏的“addr”為網絡接口指定的ip地址。
broadcast:為指定的接口設置廣播地址。
2.舉例
1)顯示目前系統所有網絡接口信息,使用以下命令。

[root@centos7 ~]# ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.81.232 netmask 255.255.255.0 broadcast 192.168.81.255
    inet6 fe80::a00:27ff:fe90:55 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:90:00:55 txqueuelen 1000 (Ethernet)
    RX packets 20378 bytes 1845248 (1.7 MiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 958 bytes 147065 (143.6 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
 
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
    RX packets 4 bytes 336 (336.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 4 bytes 336 (336.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
從上面可以看出以下幾點。

第1行:“UP”代表網卡開啟狀態,“RUNNING”代表網卡上的網線處於連接狀態,“MULTICAST”代表支持組播,“MTU:1500”表示最大傳輸單元為1500字節。

第2行:依次顯示網卡的IP地址、子網掩碼和廣播地址。

第3行:IPv6地址的配置信息。

第4行:ether後面表示硬件網卡的MAC地址。Ethernet表示連接類型為以太網。

第5、6行:顯示網卡接收數據包的統計信息和接收錯誤的統計信息。

第7、8行:顯示網卡發送數據包的統計信息和發送錯誤的統計信息。

2)在網卡enp0s3上配置兩個IP地址,分別為192.168.60.136、192.168.66.138,子網掩碼為255.255.255.0,使用以下命令。

[root@centos7 ~]#ifconfig enp0s3 192.168.60.136 netmask 255.255.255.0
[root@centos7 ~]#ifconfig enp0s3:0 192.168.66.138 netmask 255.255.255.0
此時用ifconfig命令查看,就可以看到兩個網卡的信息了,分別是“enp0s3”和“enp0s3:0”。如果此時還想在enp0s3上增加IP地址,那麽網卡的命名依次是“enp0s3:1”、“enp0s3:2”等。

3)修改網卡的MAC地址為新的MAC地址,使用以下命令。

[root@centos7 ~]#ifconfig enp0s3hw ether xx:xx:xx:xx:xx:xx
其中,“xx:xx:xx:xx:xx:xx”為新的MAC地址,此時用ifconfig查看enp0s3的信息,MAC地址已經更改。

4)將網卡enp0s3禁用後再啟用,使用以下命令。

[root@centos7 ~]#ifconfig enp0s3 down
[root@centos7 ~]#ifconfig enp0s3 up
註意
 用ifconfig命令配置的網卡信息,在網卡重啟或者機器重啟後,所有的配置都失效了,如果要讓網卡配置永久生效,就需要修改網卡的配置文件了,這將在下面講述。
4.6.2 scp命令
1.功能說明
scp就是secure copy,用於將文件或者目錄從一個Linux系統復制到另一個Linux系統下。scp傳輸數據用的是ssh協議,保證了數據傳輸的安全。其格式如下。

scp 遠程用戶名@ip地址:文件的絕對路徑本地Linux系統路徑
scp 本地Linux系統文件路徑遠程用戶名@ip地址:遠程系統文件絕對路徑名
scp使用第1種格式將遠程Linux系統上的某個文件或者目錄復制到本地Linux系統上,使用第2種格式是將本地的某個文件或者目錄復制到遠程Linux系統的某個路徑下。

2.舉例
1)目前我們處在IP為“192.168.60.133”的Linux系統下,計劃將此系統下的/home/ixdba/etc.tar.gz文件復制到IP為“192.168.60.168”的遠程Linux系統中root用戶下的/tmp目錄下,使用下面命令。

[root@centos7 ~]#scp /home/ixdba/etc.tar.gz root@192.168.60.168:/tmp
命令輸入完畢,會要求輸入“192.168.60.168”服務器root的密碼,然後開始遠程復制數據。如果目前我們處在“192.168.60.168”服務器上,也可以使用下面的命令傳輸數據。

[root@centos7 ~]#scp root@192.168.60.133:/home/ixdba/etc.tar.gz /tmp
命令輸入完畢,此時會要求輸入“192.168.60.133”服務器root的密碼,然後開始遠程復制數據。

2)將本地/etc目錄中所有文件和子目錄復制到IP為“192.168.60.135”的遠程Linux系統的root用戶下的/opt目錄中,使用以下命令。

[root@centos7 ~]#scp –r /etc root@192.168.60.135:/opt
這裏的選項“r”與cp命令中的“r”選項含義相同。

4.6.3 netstat命令
1.功能說明
netstat命令用來顯示本機網絡連接、運行端口和路由表等信息。其格式如下。

netstat [選項]

2.舉例
1)顯示當前系統的路由信息。

[root@centos7 ~]# netstat -rn
Kernel IP routing table
Destination   Gateway     Genmask     Flags  MSS Window irtt Iface
0.0.0.0     192.168.81.250 0.0.0.0     UG    0 0     0 enp0s3
169.254.0.0   0.0.0.0     255.255.0.0   U     0 0     0 enp0s3
192.168.81.0  0.0.0.0     255.255.255.0  U     0 0     0 enp0s3
從上面可以看出,當前系統的默認網關是“192.168.81.250”,而對應的網絡接口為enp0s3。

2)顯示當前系統中所有有效的TCP連接,使用以下命令。

[root@centos7 ~]#netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address      Foreign Address     State   
tcp    0   0 0.0.0.0:22       0.0.0.0:*        LISTEN   
tcp    0   0 127.0.0.1:631      0.0.0.0:*        LISTEN   
tcp    0   0 127.0.0.1:25      0.0.0.0:*        LISTEN   
tcp    0   52 192.168.81.232:22    192.168.81.30:65409   ESTABLISHED
tcp    0   0 192.168.81.232:22    192.168.81.30:64394   ESTABLISHED
tcp6    0   0 :::80          :::*          LISTEN   
tcp6    0   0 :::22          :::*          LISTEN   
tcp6    0   0 ::1:631         :::*          LISTEN   
tcp6    0   0 ::1:25         :::*          LISTEN   
udp    0   0 0.0.0.0:123       0.0.0.0:*             
udp    0   0 127.0.0.1:323      0.0.0.0:*             
udp    0   0 0.0.0.0:46122      0.0.0.0:*             
udp    0   0 0.0.0.0:5353      0.0.0.0:*             
udp6    0   0 :::123         :::*                
udp6    0   0 ::1:323         :::*
……以下省略……
在上面的顯示中,可以看出netstat的輸出分為兩部分,分別是TCP/IP網絡部分和UNIX Socket部分,我們先來看看輸出的組成部分。

Proto:連接協議的種類,主要是TCP/UDP協議。
Recv-Q:不是由程序連接而產生的字節數。
Send-Q:從遠端主機傳送而來的字節數。
Local Address:本地端的IP地址,可以是IP,也可以是主機名。
Foreign Address:遠程主機的IP與端口。
state:顯示狀態列,主要有以下幾個狀態。

LISTEN:一般用在服務的監聽端口。
SYN_SENT:在發送連接請求後等待匹配的連接請求。
SYN_RECEIVED:收到一個連接請求後,等待對方對連接請求的確認。
TIME_WAIT:表示該連接已經中斷,但套接字還在等待網絡結束。
FIN_WAIT1:表示該套接字已經中斷,而連接正在中斷之中。
FIN_WAIT2:表示該連接已經中斷,正在等待對方主機響應中斷確認請求。
3)顯示目前系統中已經啟動的網絡連接和對應的端口信息,使用如圖4.9所示命令。

screenshot

從圖4.9的輸出可以看出,系統中對外開放了80、22和23端口。為什麽這麽說呢?因為這些端口都是針對“0.0.0.0”開放的,而25、631端口僅僅針對內部127.0.0.1開放。最後一列顯示了每個端口對應的服務名(Program name)和進程ID(PVD),可以很方便地知道每個端口的用途。

4)查看當前系統上處於連接狀態的資源信息,可以使用如圖4.10所示命令。
screenshot

從上面的輸出看出,有四個線路處於連接狀態,分別是遠程主機192.168.81.30啟動的大於1024的兩個端口65409、64394向本地主機192.168.81.232的22端口建立的連接,以及遠程主機192.168.81.30啟動的大於1024的兩個端口49837、49848向本地主機192.168.81.232的23端口建立的連接。

4.6.4 traceroute命令
1.功能說明
traceroute命令用來顯示網絡數據包傳輸到指定主機的路徑信息,追蹤數據傳輸路由狀況。預設數據包大小是38字節,用戶可另行設置。它與Windows下的tracert命令類似,其格式如下。

traceroute [選項] [遠程主機名或者IP地址] [數據包大小]
traceroute命令的選項及其說明如表4.41所示。

screenshot

2.舉例
跟蹤從本機到網站www.ixdba.net的數據包發送過程,使用以下命令。

[root@localhost ~]# traceroute -i eth0 -s 192.168.60.251 -w 10 www.ixdba.net 100
traceroute to www.ixdba.net (221.130.192.57) from 192.168.60.251, 30 hops max, 100 byte 
packets
1 192.168.60.3 (192.168.60.3) 0.378 ms 0.564 ms 0.357 ms
2 192.168.1.10 (192.168.1.10) 0.494 ms 0.458 ms 0.377 ms
3 222.90.66.1 (222.90.66.1) 2.199 ms 4.531 ms 6.884 ms
4 61.185.192.101 (61.185.192.101) 8.946 ms 6.319 ms 7.726 ms
5 117.36.120.25 (117.36.120.25) 9.997 ms 23.021 ms 24.337 ms
6 61.150.3.165 (61.150.3.165) 27.591 ms 6.703 ms 11.928 ms
7 125.76.189.81 (125.76.189.81) 8.927 ms 4.388 ms 2.726 ms
8 61.134.0.9 (61.134.0.9) 5.731 ms 3.653 ms 3.667 ms
9 202.97.37.173 (202.97.37.173) 5.908 ms 3.874 ms 4.553 ms
10 202.97.37.182 (202.97.37.182) 2.568 ms 13.896 ms 14.722 ms
11 202.97.37.90 (202.97.37.90) 16.284 ms 26.148 ms 2.946 ms
12 202.97.36.161 (202.97.36.161) 49.285 ms 62.249 ms 55.451 ms
13 202.97.44.58 (202.97.44.58) 56.949 ms 56.292 ms 62.229 ms
14 202.97.15.226 (202.97.15.226) 142.705 ms 139.009 ms 150.365 ms
15 211.136.2.249 (211.136.2.249) 136.982 ms 156.440 ms 153.176 ms
16 211.136.6.22 (211.136.6.22) 136.463 ms 152.606 ms 150.101 ms
17 211.136.188.182 (211.136.188.182) 100.163 ms 128.552 ms 103.801 ms
18 221.130.192.57 (221.130.192.57) 149.583 ms
上面指定eth0網絡接口發送數據包,同時指定本地發送數據包的IP為192.168.60.251,並設置超時時間為10秒,最後設置發送數據包的大小為100字節。根據輸出可以看到,從本機到www.ixdba.net對應的IP地址經歷了18個路由的迂回。

traceroute命令會對這18個路由節點做ICMP的回應時間測試,每個路由節點做3次時間測試,如上面顯示,基本上每個路由節點的回應時間都在100秒內,只有在第15個路由節點,回應時間稍長。通過這種網絡跟蹤,可以測試數據傳輸在哪個部分出現問題,以便及時解決。

如果在指定的時間內(這裏設置的是10秒),traceroute檢測不到某個路由節點的回應信息,就在屏幕輸出“*”,表示此節點無法通過。由於traceroute是利用ICMP連接的,有些網絡設備(如防火墻)可能會屏蔽ICMP通過的權限,因此也會出現節點沒有回應的狀態,這些都是我們分析網絡問題需要知道的。

4.6.5 telnet命令
1.功能說明
telnet命令通過telnet協議與遠程主機通信或者獲取遠程主機對應端口的信息。它與Windows下的telnet具有相同的功能。其格式如下。

telnet 主機名或者IP地址端口
2.舉例
1)要通過telnet協議登錄到開啟了telnet服務的遠程主機上,使用以下命令。

[root@localhost ~]# telnet192.168.60.12323
Trying 192.168.60.123...
Connected to 192.168.60.123.
Escape character is '^]'.
 
Kernel 3.10.0-229.el7.x86_64 on an x86_64
centos7 login: ixdba
Password:
當輸入用戶名ixdba和密碼後就登錄到了“192.168.60.123”服務器,這裏直接用“telnet 192.168.60.123”也是可以的,因為telnet默認尋找的就是“23”端口。

[root@localhost ~]# telnet192.168.60.12325
Trying 192.168.60.123...
telnet: connect to address 192.168.60.123: Connection refused
如果出現這個問題,就表示這個端口對應的服務沒有開啟,或者端口被屏蔽,無權訪問。

2)要查看某臺Linux系統的22和80端口是否打開以及分別開啟了什麽服務,使用以下命令。

[root@localhost ~]# telnet 192.168.60.88 22
Trying 192.168.60.88...
Connected to 192.168.60.88.
Escape character is '^]'.
SSH-2.0-OpenSSH_6.6.1
 
Protocol mismatch.
Connection closed by foreign host.
從這裏可以看出,在“192.168.60.88”的22端口運行著SSH服務,對應的SSH版本為SSH-2.0-OpenSSH_6.6.1。

[root@localhost ~]# telnet www.ixdba.net 80
Trying 221.130.192.57...
Connected to www.ixdba.net (221.130.192.57).
Escape character is '^]'.
get
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Method Not Implemented</title>
</head><body>
<h1>Method Not Implemented</h1>
<p>get to /index.html not supported.<br />
</p>
<hr>
<address>Apache/2.2.4 (Unix) PHP/5.2.3 mod_fastcgi/2.4.2 Resin/3.1.3 Server at 
www.ixdba.net Port 80</address>
</body></html>
Connection closed by foreign host.
當輸入“telnet www.ixdba.net 80”之後,如果“www.ixdba.net”對應IP的80端口開啟,就會給出歡迎信息,類似於“Escape character is '^]'”。此時通過鍵盤輸入“get”命令,將顯示80端口對應的應用服務器類型,例如本例的80端口對應的應用服務為Apache與php以及resin的組合。

4.6.6 wget命令
1.功能說明
wget命令用來從網絡上下載某個軟件,這個命令對於能夠連接到互聯網的Linux系統作用非常大,可以直接從網絡下載自己需要的軟件。其格式如下。

wget [要下載軟件的網址]
2.舉例
下載一個linux-4.0.2版本內核,可以使用以下命令。

[root@localhost~]#wget \
>https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.2.tar.xz
-- 17:42:05-- https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.2.tar.xz
Resolving www.kernel.org (www.kernel.org)... 199.204.44.194, 198.145.20.140,149.20.4.69,...
Connecting to www.kernel.org (www.kernel.org)|199.204.44.194|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 82306532 (78M) [application/x-xz]
Saving to: 'linux-4.0.2.tar.xz'
 
10% [========>     ] 8,781,616  104KB/s eta 7m 35s 2

延伸阅读

    评论