Linux——網路配置及命令
traceroute命令(unix)/tracert命令(windows)
tracert命令的格式為:tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name。
①、-d
表示不將地址解析成主機名。
②、-h maximum_hops
表示搜尋目標的最大躍點數。
③、-j host-list
表示與主機列表一起的鬆散源路由(僅適用於IPv4)。
④、-w timeout
表示等待每個回覆的超時間(以毫秒為單位)。
⑤、-R
表示跟蹤往返行程路徑(僅適用於IPv6)。
⑥、-S srcaddr
表示要使用的源地址(僅適用於IPv6)。
⑦、-4和-6
表示強制使用IPv4或者IPv6。
⑧、target_name
表示目標主機的名稱或者IP地址。
在Linux中配置IP地址的方法有以下這麼幾種:
- 圖形介面配置IP地址(操作方式如Windows系統配置IP,但在實際生產中,我們並不建議在我們的伺服器上安裝Linux的圖形介面,因為安裝了圖形介面將一定程度地影響了伺服器的安全性和穩定性,因此,在這裡就不對該方式進行詳細的介紹了。)
ifconfig
命令臨時配置IP地址(臨時配置IP地址,即當我們重啟計算機或重啟網路服務後,配置將失效)setup
工具永久配置IP地址(setup
Red Hat
開發的,因此在正常情況下,該工具只能用於Red Hat
系列的Linux系統)(setup
工具——紅帽專有圖形化工具setup
設定IP地址)(使用setup命令設定完網路後需要使用service network restart
重啟網路)- 修改網路配置檔案
ifconfig
命令
ifconfig
命令可以檢視與配置網路狀態。命令結果如下:
eth0 Link encap:Ethernet HWaddr 00:0C:29:11:30:39
inet addr:192.168.134.129 Bcast:192.168.134.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe11:3039/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19731 errors:0 dropped:0 overruns:0 frame:0
TX packets:502 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1248492 (1.1 MiB) TX bytes:58905 (57.5 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
- (
lo
表示本地迴環網絡卡的資訊)
使用ifconfig
命令還可以臨時設定某一網絡卡的IP地址和子網掩碼。如:
ifconfig eth0 192.168.0.200 netmask 255.255.255.0
Linux網路配置檔案
網絡卡資訊檔案
檢視第一張網絡卡的網絡卡資訊:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
- 資訊如下:
DEVICE=eth0
HWADDR=00:0C:29:11:30:39
TYPE=Ethernet
UUID=5ab36190-a5df-4bf1-94d8-6c126afd05f1
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
- 更多資訊說明,如下表格:
配置 | 說明 |
---|---|
DEVICE=eth0 |
網絡卡裝置名,eth0表示第一張網絡卡 |
BOOTPROTO=none |
是否自動獲取IP(none、static、dhcp),當值為dhcp時,只需配置上述例子中的那幾項就可以聯網 |
HWADDR=00:0C:29:11:30:39 |
MAC地址 |
NM_CONTROLLED=yes |
是否可以由Network Manager圖形管理工具託管 |
ONBOOT=yes |
是否隨網路服務啟動當前網絡卡生效(在CentOS 6 以上的版本中ONBOOT是預設關閉的。) |
TYPE=Ethernet |
網路型別,這裡為乙太網 |
UUID=5ab36190-a5df-4bf1-94d8-6c126afd05f1 |
唯一識別碼 |
IPADDR=192.168.0.200 |
IP地址 |
NETMASK=255.255.255.0 |
子網掩碼 |
GATEWAY=192.168.0.1 |
閘道器 |
DNS1=202.106.0.20 |
DNS |
IPV6INIT=no |
IPv6是否啟用,這裡設定為不啟用 |
USERCTL=no |
是否允許非root使用者控制此網絡卡,這裡為不允許 |
說明:
1.自動獲取IP的條件是:必須在區域網記憶體在DHCP伺服器。
2.相同UUID網路配置的計算機會導致互相不能上網。
主機名檔案
檢視主機名檔案:
vi /etc/sysconfig/network
- 內容如下:
NETWORKING=yes
HOSTNAME=localhost.localdomain
其中:
1./etc/sysconfig/network
該檔案中NETWORKING=no
時主機將無法連線網路。
2. Windows下,在同一區域網內相同主機名之間是不能進行傳遞的。要求在區域網內是不能有相同主機名的主機的。而在Linux中區域網內是可以有相同主機名的主機的,如預設主機名:localhost.localdomain
。
3. 修改/etc/sysconfig/network
檔案中的主機名後需要重啟計算機才能生效。使用hostname 主機名
命令可以臨時更改主機名後,重啟計算機後將失效。通過hostname
命令可以檢視當前主機名。
DNS配置檔案
檢視DNS配置檔案:
vi /etc/resolv.conf
- 內容如下:
; generated by /sbin/dhclient-script
search localdomain
nameserver 192.168.134.2
其中最重要的是nameserver
這一項,設定的是域名伺服器的地址,多個域名伺服器,則在後續新增空格繼續補充域名伺服器的地址,或者另起一行做類似的nameserver
配置。
VMWare中Linux的網路引數配置
(以CentOS為例)
1. 配置Linux IP地址;
2. CentOS 6以上的系統修改修改網路配置以啟動網絡卡vi /etc/sysconfig/network-scripts/ifcfg-eth0
將ONBOOT
選項的值修改為yes
,重啟網路服務service network restart
;
3. 對於網路配置檔案中UUID出現相同的情況,需要修改UUID的值,修改方式如下:
1. `vi /etc/sysconfig/network-scripts/ifcfg-eth0`,刪除MAC地址行
2. `rm -rf /etc/udev/rules.d/70-persistent-net.rules`,刪除網絡卡和MAC地址繫結檔案
3. 重啟當前系統
- 4.設定VMWare虛擬機器的網路連線方式,選擇橋接模式(可不勾選“複製物理網路連線狀態”這一選項)(其中橋接模式,允許虛擬機器訪問外網,同時可以與區域網內的其他計算機進行通訊(包括本機);NAT模式,允許虛擬機器訪問外網,能與本機進行資料通訊;Host Only模式,只能同本機進行通訊);
5. 修改橋接的網絡卡,在“虛擬網路編輯器”視窗中選擇VMnet0
,修改橋接模式下橋接的網絡卡,這裡選擇可以上網的網絡卡。
VMWare橋接模式下配置靜態IP
修改網絡卡配置檔案,如下:
DEVICE=eth0
HWADDR=00:0C:29:FC:8D:E6
TYPE=Ethernet
#UUID=343b502d-2249-4e33-9187-9abc285b9292
UUID=31b6504c-7ddd-4b74-a51e-46cd34ed182d
ONBOOT=yes
NM_CONTROLLED=yes
#BOOTPROTO=dhcp
BOOTPROTO=static
IPADDR=11.10.1.192
NETMASK=255.255.255.0
GATEWAY=10.8.8.1
DNS1=114.114.114.114
DNS2=8.8.8.8
IPV6INIT=no
USERCTL=no
重啟網絡卡:
service network restart
這裡,ping外網地址會失敗。使用route
命令發現,預設閘道器沒有設定成功。原因不明(DHCP模式下,動態獲取IP,預設閘道器10.8.8.1
設定成功,可以正常上網。)
為配置靜態IP的情況下,解決預設閘道器未設定成功的問題,使用route命令臨時修改預設閘道器:
臨時修改預設閘道器(linux中配置網路出現 SIOCADDRT: No such process):
sudo route add 10.8.8.1/32 dev eth0
sudo route add default gw 10.8.8.1
Linux網路命令
網路環境操作
ifconfig
命令
ifconfig
:檢視網路狀態(能檢視IP地址和子網掩碼,但是不能檢視閘道器和DNS地址),還可以臨時設定某一網絡卡的IP地址和子網掩碼。- 關閉與啟動網絡卡
ifdown 網絡卡裝置名
:禁用該網絡卡裝置。
ifup 網絡卡裝置名
:啟用該網絡卡裝置。 - 查詢網路狀態
netstat 選項
(可以用於檢視當前計算機開放的埠,從而判斷當前計算機啟動了哪些服務)
選項:
-t:列出TCP協議埠
-u:列出UPD協議埠
-n:不使用域名和服務名,而使用IP地址和埠號
-l:僅列出在監聽狀態網路服務
-a:列出所有的網路連線
-r:列出路由列表,功能和route命令一隻
常用組合:-tuln、-an、-rn
檢視某一狀態下的網路連線情況,如:netstat -an | grep ESTABLISHED
檢視某一網路狀態下的行數(檢視有多少臺計算機連線到當前伺服器),如:netstat -an | grep ESTABLISHED | wc -l
netstat -rn 和 route -n 命令功能一樣,結果一致。通過這樣的命令檢視當前計算機的閘道器地址。
- (注:Linux中如何中止遠端連線?使用
logout
命令。在Windows中則操作選單欄點選登出
。)
4.route
命令
route -n
:檢視路由列表(可以看到當前計算機的閘道器)。
route add default gw 192.168.1.1
:臨時設定閘道器。
route del default gw 192.168.1.1
:刪除設定的閘道器。
5. 域名解析命令
nslookup [主機名或IP]
:進行域名或IP地址的解析。
nslookup
> server
# 檢視本機DNS伺服器
> exit
# 退出
- (注:CentOS 6.x後
nslookup
已不存在,需要進行安裝,參考:CentOS 6.x 安裝 nslookup 的步驟 (與 yum 如何查詢套件)。在不想安裝nslookup
的情況下,又想檢視本機配置的DNS伺服器地址,可以使用cat /etc/resolv.conf
命令。)
網路測試命令
ping
命令
ping [選項] ip或域名
:探測指定IP或域名的網路狀況。
選項:
-c 次數:指定ping傳送包的次數
- 1
- 2
2.telnet
命令
telnet [域名或IP] [埠]
:遠端管理與埠探測命令。(telnet
的遠端連線是極不安全的,它是明文傳遞資料,並未將資料加密。所以我們並不建議使用telnet
命令進行遠端管理,但是我們可以通過該命令探測某個計算機中是否開放了某一埠。如:telnet 192.168.0.1 80
)
3.traceroute
命令
traceroute [選項] IP或域名
:路由跟蹤,檢視訪問某一IP或域名時經過的路由(路由路徑)。(該命令可能需要單獨安裝)
選項:
-n 使用IP而不使用域名顯示
- 4.
wget
命令
wget 下載地址
:下載命令。
5.tcpdump
命令
tcpdump
命令:用於監聽某一網絡卡下某一服務的資料包接收情況(截獲資料包-抓包)。如:tcpdump -i eth0 -nnX port 21
。
選項:
-i 指定監聽的網絡卡
-nn 將資料包中的域名與服務轉為IP和埠顯示
-X 以十六進位制和ASCII碼顯示資料包內容
port 指定監聽的埠
下面我們逐步介紹幾個常用的命令:
1、Ping命令。
當您的機器不能訪問Internet,首先確認是否是本地區域網的故障。假定區域網的代理伺服器IP地址為202.168.0.1,您可以使用ping 202.168.0.1命令檢視本機是否和代理伺服器聯通。此外可以測試本機的網絡卡是否正常工作,使用 ping 127.0.0.1命令。一般返回ping的資訊就表示本地到該主機的網路線路連通。
但是很多伺服器為了防止攻擊,一般會關閉對ping的響應。所以ping一般作為測試連通性使用。ping命令後,會接收到對方傳送的回饋資訊,其中記錄著對方的IP地址和TTL。TTL是該欄位指定IP包被路由器丟棄之前允許通過的最大網段數量。TTL是IPv4包頭的一個8 bit欄位。例如IP包在伺服器中傳送前設定的TTL是64,你使用ping命令後,得到伺服器反饋的資訊,其中的TTL為56,說明途中一共經過了8道路由器的轉發,每經過一個路由,TTL減1。
2、Tracert
Tracert命令用來顯示資料包到達目標主機所經過的路徑(路由器),並顯示到達每個節點(路由器)的時間。命令功能同Ping類似,但它所獲得的資訊要比Ping命令詳細得多,它把資料包所走的全部路徑、節點的IP以及花費的時間都顯示出來。該命令比較適用於大型網路。
Tracert 先發送 TTL 為 1 的迴應資料包,當資料包上的 TTL在路由器收到後TTL自動減1
,一旦某個伺服器將TTL減1後,等於了0,路由器應該將“ICMP Time
Exceeded”的訊息發回源計算機,源計算機就根據收到的資訊判斷達到的路由器和所用時間。下次再次傳送資料包時,將TTL遞增
1,繼續上述測試,直到目標響應或 TTL 達到最大值,從而確定路由。通過檢查中間路由器發回的“ICMP
已超時”的訊息確定路由。某些路由器不經詢問直接丟棄 TTL過期的資料包,這在 Tracert
實用程式中看不到,我們會顯示請求超時的請求資訊。下圖所示,我們測試到新浪的路經過了8道路由,同時根據上圖測試ping
新浪時候,TTL=56,說明新浪的TTL初始設定為64,經過8道路由後到達我們客戶機,還剩下64-8 =
56。下圖中請求超時的反饋資訊是因為路由器對ping命令做了處理,關閉了ping的響應,所以我們收不到發給他的反饋資訊。
3、pathping
pathping 命令是一個路由跟蹤工具,它將 ping 和 tracert 命令的功能與這兩個工具所不提供的其他資訊結合起來,綜合了二者的功能。pathping會先顯示中間的通過的路由器(類似tracert命令得到的資訊),然後對每個中間路由器(節點)傳送一定數量的ping包,通過統計他們對ping包響應的資料包來分析通訊質量。上面也提到了,有的路由器對ping關閉了響應,所以有的節點的丟包率會達到100%,所以這種一般就是關閉了ping回覆。你可以自己ping試一下。還有,對ping包丟棄程度只是節點本身對ping的處理,並不一定影響他的通訊,你可以看到,關閉ping命令節點的下一個節點返回到資料是正常的,說明回覆的包都成功傳送回來。總之,pathping 命令在一段時間內將資料包傳送到將到達最終目標的路徑上的每個路由器,然後根據從每個躍點返回的資料包計算結果。由於命令顯示資料包在任何給定路由器或連結上丟失的程度,因此可以很容易地確定可能導致網路問題的路由器或連結。下圖所示,我們看到,達到第二個就終止了,因為第二道節點(路由器),不支援ping,然後,程式就終止不在繼續往下探測了。
4、nslookup
Nslookup命令用於解析域名,一般用來檢測本機的DNS設定是否配置正確。如: nslookup 網站域名,即可解析出網站的IP地址。如圖,可以看出解析www.163.com的時候,可以解析出它所有的IP地址,而如果網路出現異常或者無法收到伺服器傳送來的資訊時候,會出現下面第二張圖片的顯示。伺服器和Address代表是解析這些IP地址和域名的DNS伺服器資訊。比如我使用的DNS是jtjndc007.home.langchao.com, DNS伺服器地址是10.100.1.11.