⑴ linux下怎麼判斷網卡異常網卡狀態
ip link 命令 或者 通過mii-tool指令
[root@localhost
root]# mii-tool
eth0:
negotiated 100baseTx-FD, link ok
eth1:
no link
或
[root@localhost
root]# mii-tool -v
eth0:
negotiated 100baseTx-FD, link ok
proct
info: vendor 00:50:43, model 2 rev 3
basic
mode: autonegotiation
enabled
basic
status: autonegotiation complete, link ok
capabilities:
100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
advertising:
100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
link
partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
eth1:
no link
proct
info: vendor 00:50:43, model 2 rev 3
basic
mode: autonegotiation
enabled
basic
status: no link
capabilities:
100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
advertising:
100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
或
[root@localhost
root]# mii-tool -w
21:20:33
eth0: negotiated 100baseTx-FD, link ok
21:20:33
eth1: no link
//mii-tool主要是用於配置網卡工作模式的指令,同時也可以進行查詢、監控等工作!
2)
[root@localhost /]# /etc/init.d/network status
Configured devices:
lo eth0 eth1
Currently active devices:
lo eth0
等同於
[root@localhost root]# service --status-all
............
............
Configured devices:
lo eth0 eth1
Currently active devices:
lo eth0
............
............
3)ifconfig -a
[root@localhost /]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:09:6B:09:08:FC
inet addr:192.168.10.1 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::209:6bff:fe09:8fc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:106732953 errors:0 dropped:0 overruns:0 frame:0
TX packets:104379788 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:2351331877 (2.1 GiB) TX bytes:391707945 (373.5 MiB)
Base address:0x2500 Memory:fbfe0000-fc000000
eth1 Link encap:Ethernet HWaddr 00:09:6B:09:08:FD
BROADCAST MULTICAST MTU:1500 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:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Base address:0x2540 Memory:fbfc0000-fbfe0000
4)ethtool
ethtool eth0
Settings for eth0:
Supported ports: [ MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: g
Wake-on: d
Current message level: 0x000000ff (255)
Link detected: yes
ethtool eth1
Settings for eth1:
Supported ports: [ MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised auto-negotiation: Yes
Speed: Unknown! (0)
Duplex: Half
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: g
Wake-on: d
Current message level: 0x000000ff (255)
Link detected: no
從上面可以看出eth0 處於連接狀態,eth1沒有連接
二. 查看網卡的配置
一般在linux下查看網路配置可以使用ifconfig命令,可以顯示當前網卡的基本配置信息。
終端輸入ifconfig 會出現一下內容:
eth0
Link encap:Ethernet HWaddr 00:0C:29:0C:4B:0F
inet addr:192.168.37.128 Bcast:192.168.37.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:33 errors:0 dropped:0 overruns:0 frame:0
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:2823 (2.7 Kb)
TX bytes:2722 (2.6 Kb)
Interrupt:10 Base address:0x1080
他們分別表示:
Eth0:網路介面
link encap:網路類型
HWaddr:網卡物理地址
Inet addr :IP地址
Bcast:廣播地址
Mask:子網掩碼
UP:正在使用的網路介面
RX packets,TX packets接收和傳輸的數據包個數
RX byte,TX byte表示接搜和傳輸的具體數目
Interrupt:終端信息
Base address:內存地址
三. 網卡配置文件
如果希望每次啟動linux時,都能為你的網卡配置正確的網路地址,可以採用下列兩種方法:
1. 每次開機後,使用ifconfig手動重新設置網卡的配置;
2. 在開機流程中,將網路配置的設置保存在某些RC Script中。
第一種方式麻煩,第二種方式涉及到在哪個RC Script中配置網卡是比較適當的?
Linux啟動過程中會執行以下三個RC Script。
1. /etc/rc.d/init.d/rc.sysinit;
2. /etc/rc.d/init.d/rc;
3. /etc/rc.d/init.d/rc.local
為了維護Linux的穩定性,建議不要修改前兩項。但是,用ifconfig配置第三個RC Script的話,導致嚴重的問題:由於最後執行這個程序,在其執行之前,可能已經執行了數十項網路服務。因此,會造成一堆網路服務因為網卡尚未啟動而無法順利的啟動。
四、網卡配置文件
解決上述問題的方法:每一個網路介質都對應一個配置文件,超級用戶可以通過這些配置文件來配置網卡。
網卡配置文件存放在 /etc/sysconfig/network-scripts/目錄中;
/etc/sysconfig/network-scripts/ifcfg-interface-name
設置文件ifcfg-interface-name包含了初始化介面所需的大部分周詳信息。其中interface-name將根據網卡的類型和排序而不
同,一般其名字為eth0、eth1、ppp0等,其中eth表示以太(eth0)類型網卡,0表示第一塊網卡,1表示第二塊網卡,而ppp0則表示第一 個point-to-poirt protocol網路介面。在ifcfg文件中定義的各項目取決於介面類型。
下面的值較問常見:
》DEVICE=name ,其中,name是物理設備名。
》IPADDR=addr,其中,addr是IP地址。
》NETMASK=mask,其中,mask是網路掩碼值。
》NETWORK=addr,其中addr是網路地址。
》BROADCAST=addr,其中,addr是廣播地址。
》GATEWAY=addr,其中addr是網關地址。
》ONBOOT=answer,其中,answer是yes(引導時激活設備)或no(引導時不激活設備)
》USERCTL=answer,其中,answer是yes(非root用戶能控制該設備)或no
》BOOTPROTO=proto,其中,proto取下列值之一:none,引導時不使用協議;static靜態分配地址;bootp,使用BOOTP協議,或dhcp,使用DHCP協議。
(2)根據上述各參數的意義,設定linpcl.lintec.e.cn機器的設置文件如下:
[root@linpcl root]#cat /etc/sysconfig/networking/devices/ifcfg-rth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.2
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
⑵ vmware虛擬機的eth0有問題。但不知道問題在哪。路過的各位大神幫忙看下啊。多謝啦
沒有ip地址,如果是自動獲取的。
橋接模式請檢查路由器的dhcp功能
nat模式請檢查物理主機的vmdhcp和vmnat服務
⑶ centos6.4 bring up interface eth1有報錯 怎麼解決
用ifconfig -a查看顯示的是eth1,但是在/etc/system/network-scripts/目錄下面顯示的是eth0,所以才會導致這個問題的出現,解決方法就是在目錄中將eth0重命名為eth1,如果是虛擬機還要修改網卡地址.
[root@centos network-scripts]# ifconfig -a
eth1 Link encap:Ethernet HWaddr 08:00:27:5C:4A:F6
inet addr:2.2.2.177 Bcast:2.2.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe5c:4af6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:72479 errors:0 dropped:0 overruns:0 frame:0
TX packets:36533 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5311979 (5.0 MiB) TX bytes:26144482 (24.9 MiB)
[root@centos network-scripts]# cp -a ifcfg-eth0 ifcfg-eth1
[root@centos network-scripts]# vim /etc/udev/rules.d/70-persistent-net.rules --查看網卡地址
[root@centos network-scripts]# rm -rf ifcfg-eth0 --如果是虛擬機還要修改網卡的地址
[root@centos ~]# /etc/init.d/network restart --重啟成功了
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth1: Active connection state: activated
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/1
[ OK ]
[root@centos ~]#
⑷ 如何在Linux下統計高速網路中的流量
在本文中我們介紹一種簡單的Shell 腳本,它可以監控網路流量而且不依賴於緩慢的libpcap庫。這些腳本畢拍攜支持Gb以上規模的高速網路介面,如果你對「匯聚型」的網路流量感興趣的話,它們可統計每個網路介面上的流量。
腳本主要是基於sysfs虛擬文件系統,這是由內核用來將設備或驅動相關的信息輸出到用戶空間的一種機制。網路介面的相關分析數據會通過「/sys/class/net/<ethX>/statistics」輸出。
舉個例子,eth0的網口上分析報告會輸出到這些文件中:
/sys/class/net/eth0/statistics/rx_packets: 收到手伏的數據包數據
/sys/class/net/eth0/statistics/tx_packets: 傳輸的數據包數量
/sys/class/net/eth0/statistics/rx_bytes: 接收的位元組數
/sys/class/net/eth0/statistics/tx_bytes: 傳輸的位元組數
/sys/class/net/eth0/statistics/rx_dropped: 收包時丟棄的數據包
/sys/class/net/eth0/statistics/tx_dropped: 發包時丟棄的數據包
這些數據會根據內核數據發生變更的時候自動刷新。因此,你可以編寫一系列的腳本進行分析並計算流量統計。下面就是這樣的腳本(感謝 joemiller 提供)。第一個腳本是統計每秒數據量,包含接收(RX)或發送(TX)。而後面的則是一個描述網路傳輸中的接收(RX)發送(TX)帶寬。這些腳本中安裝不需要任何的工具。
測量網口每秒數據包:
下賀配面的屏幕截圖顯示了上面的兩個腳本的輸出。
⑸ ethtool原理介紹和解決網卡丟包排查思路
之前記錄過處理因為LVS網卡流量負載過高導致軟中斷發生丟包的問題, RPS和RFS網卡多隊列性能調優實踐 ,對一般人來說壓力不大的情況下其實碰見的概率並不高。這次想分享的話題是比較常見伺服器網卡丟包現象排查思路,如果你是想了解點對點的丟包解決思路涉及面可能就比較廣,不妨先參考之前的文章 如何使用MTR診斷網路問題 ,對於Linux常用的網卡丟包分析工具自然是ethtool。
2020年06月22日 - 初稿
閱讀原文 - https://wsgzao.github.io/post/ethtool/
ethtool - utility for controlling network drivers and hardware
ethtool is the standard Linux utility for controlling network drivers and hardware, particularly for wired Ethernet devices. It can be used to:
Most features are dependent on support in the specific driver. See the manual page for full information.
ethtool 用於查看和修改網路設備(尤其是有線乙太網設備)的驅動參數和硬體設置。你可以根據需要更改乙太網卡的參數,包括自動協商、速度、雙工和區域網喚醒等參數。通過對乙太網卡的配置,你的計算機可以通過網路有效地進行通信。該工具提供了許多關於接駁到你的 Linux 系統的乙太網設備的信息。
接收數據包是一個復雜的過程,涉及很多底層的技術細節,但大致需要以下幾個步驟:
NIC 在接收到數據包之後,首先需要將數據同步到內核中,這中間的橋梁是 rx ring buffer 。它是由 NIC 和驅動程序共享的一片區域,事實上, rx ring buffer 存儲的並不是實際的 packet 數據,而是一個描述符,這個描述符指向了它真正的存儲地址,具體流程如下:
當驅動處理速度跟不上網卡收包速度時,驅動來不及分配緩沖區,NIC 接收到的數據包無法及時寫到 sk_buffer ,就會產生堆積,當 NIC 內部緩沖區寫滿後,就會丟棄部分數據,引起丟包。這部分丟包為 rx_fifo_errors ,在 /proc/net/dev 中體現為 fifo 欄位增長,在 ifconfig 中體現為 overruns 指標增長。
這個時候,數據包已經被轉移到了 sk_buffer 中。前文提到,這是驅動程序在內存中分配的一片緩沖區,並且是通過 DMA 寫入的,這種方式不依賴 CPU 直接將數據寫到了內存中,意味著對內核來說,其實並不知道已經有新數據到了內存中。那麼如何讓內核知道有新數據進來了呢?答案就是中斷,通過中斷告訴內核有新數據進來了,並需要進行後續處理。
提到中斷,就涉及到硬中斷和軟中斷,首先需要簡單了解一下它們的區別:
當 NIC 把數據包通過 DMA 復制到內核緩沖區 sk_buffer 後,NIC 立即發起一個硬體中斷。CPU 接收後,首先進入上半部分,網卡中斷對應的中斷處理程序是網卡驅動程序的一部分,之後由它發起軟中斷,進入下半部分,開始消費 sk_buffer 中的數據,交給內核協議棧處理。
通過中斷,能夠快速及時地響應網卡數據請求,但如果數據量大,那麼會產生大量中斷請求,CPU 大部分時間都忙於處理中斷,效率很低。為了解決這個問題,現在的內核及驅動都採用一種叫 NAPI(new API)的方式進行數據處理,其原理可以簡單理解為 中斷 + 輪詢,在數據量大時,一次中斷後通過輪詢接收一定數量包再返回,避免產生多次中斷。
(1) RX errors
表示總的收包的錯誤數量,這包括 too-long-frames 錯誤,Ring Buffer 溢出錯誤,crc 校驗錯誤,幀同步錯誤,fifo overruns 以及 missed pkg 等等。
(2) RX dropped
表示數據包已經進入了 Ring Buffer,但是由於內存不夠等系統原因,導致在拷貝到內存的過程中被丟棄。
(3) RX overruns
表示了 fifo 的 overruns,這是由於 Ring Buffer(aka Driver Queue) 傳輸的 IO 大於 kernel 能夠處理的 IO 導致的,而 Ring Buffer 則是指在發起 IRQ 請求之前的那塊 buffer。很明顯,overruns 的增大意味著數據包沒到 Ring Buffer 就被網卡物理層給丟棄了,而 CPU 無法即使的處理中斷是造成 Ring Buffer 滿的原因之一,上面那台有問題的機器就是因為 interruprs 分布的不均勻(都壓在 core0),沒有做 affinity 而造成的丟包。
(4) RX frame
表示 misaligned 的 frames。
網線上的packet首先被網卡獲取,網卡會檢查packet的CRC校驗,保證完整性,然後將packet頭去掉,得到frame。網卡會檢查MAC包內的目的MAC地址,如果和本網卡的MAC地址不一樣則丟棄(混雜模式除外)。
網卡將frame拷貝到網卡內部的FIFO緩沖區,觸發硬體中斷。(如有ring buffer的網卡,好像frame可以先存在ring buffer里再觸發軟體中斷(下篇文章將詳細解釋Linux中frame的走向),ring buffer是網卡和驅動程序共享,是設備里的內存,但是對操作系統是可見的,因為看到linux內核源碼里網卡驅動程序是使用kcalloc來分配的空間,所以ring buffer一般都有上限,另外這個ring buffer size,表示的應該是能存儲的frame的個數,而不是位元組大小。另外有些系統的 ethtool 命令 並不能改變ring parameters來設置ring buffer的大小,暫時不知道為什麼,可能是驅動不支持。)
網卡驅動程序通過硬中斷處理函數,構建sk_buff,把frame從網卡FIFO拷貝到內存skb中,接下來交給內核處理。(支持napi的網卡應該是直接放在ring buffer,不觸發硬中斷,直接使用軟中斷,拷貝ring buffer里的數據,直接輸送給上層處理,每個網卡在一次軟中斷處理過程能處理weight個frame)
過程中,網卡晶元對frame進行了MAC過濾,以減小系統負荷。(除了混雜模式)
網卡驅動程序將IP包添加14位元組的MAC頭,構成frame(暫無CRC)。Frame(暫無CRC)中含有發送端和接收端的MAC地址,由於是驅動程序創建MAC頭,所以可以隨便輸入地址,也可以進行主機偽裝。
驅動程序將frame(暫無CRC)拷貝到網卡晶元內部的緩沖區,由網卡處理。
網卡晶元將未完全完成的frame(缺CRC)再次封裝為可以發送的packet,也就是添加頭部同步信息和CRC校驗,然後丟到網線上,就完成一個IP報的發送了,所有接到網線上的網卡都可以看到該packet。
產生中斷的每個設備都有一個相應的中斷處理程序,是設備驅動程序的一部分。每個網卡都有一個中斷處理程序,用於通知網卡該中斷已經被接收了,以及把網卡緩沖區的數據包拷貝到內存中。
當網卡接收來自網路的數據包時,需要通知內核數據包到了。網卡立即發出中斷。內核通過執行網卡已注冊的中斷處理函數來做出應答。中斷處理程序開始執行,通知硬體,拷貝最新的網路數據包到內存,然後讀取網卡更多的數據包。
這些都是重要、緊迫而又與硬體相關的工作。內核通常需要快速的拷貝網路數據包到系統內存,因為網卡上接收網路數據包的緩存大小固定,而且相比系統內存也要小得多。所以上述拷貝動作一旦被延遲,必然造成網卡FIFO緩存溢出 - 進入的數據包占滿了網卡的緩存,後續的包只能被丟棄,這也應該就是ifconfig里的overrun的來源。
當網路數據包被拷貝到系統內存後,中斷的任務算是完成了,這時它把控制權交還給被系統中斷前運行的程序。
網卡的內核緩沖區,是在PC內存中,由內核控制,而網卡會有FIFO緩沖區,或者ring buffer,這應該將兩者區分開。FIFO比較小,裡面有數據便會盡量將數據存在內核緩沖中。
網卡中的緩沖區既不屬於內核空間,也不屬於用戶空間。它屬於硬體緩沖,允許網卡與操作系統之間有個緩沖;
內核緩沖區在內核空間,在內存中,用於內核程序,做為讀自或寫往硬體的數據緩沖區;
用戶緩沖區在用戶空間,在內存中,用於用戶程序,做為讀自或寫往硬體的數據緩沖區;
另外,為了加快數據的交互,可以將內核緩沖區映射到用戶空間,這樣,內核程序和用戶程序就可以同時訪問這一區間了。
對於有ring buffer的網卡,ring buffer是由驅動與網卡共享的,所以內核可以直接訪問ring buffer,一般拷貝frames的副本到自己的內核空間進行處理(deliver到上層協議,之後的一個個skb就是按skb的指針傳遞方式傳遞,直到用戶獲得數據,所以,對於ring buffer網卡,大量拷貝發生在frame從ring buffer傳遞到內核控制的計算機內存里)。
網卡工作在數據鏈路層,數據量鏈路層,會做一些校驗,封裝成幀。我們可以查看校驗是否出錯,確定傳輸是否存在問題。然後從軟體層面,是否因為緩沖區太小丟包。
一台機器經常收到丟包的報警,先看看最底層的有沒有問題:
(1) 查看工作模式是否正常
(2) 查看檢驗是否正常
Speed,Duplex,CRC 之類的都沒問題,基本可以排除物理層面的干擾。
Why rx_crc_errors incrementing in the receive counter of ethtool -S output?
Check ethtool -S output and find where are the drops and errors.
Check the numbers corresponding to rx_crc_errors .
顯示了p1p1 的介面類型,連接模式,速率等等信息,以及當前是否連接了網線(如果是網線Supported ports 就是TP,如果是光纖則顯示Fiber),這里例舉下3個重要關鍵詞
Supported ports: [ FIBRE ]
Speed: 10000Mb/s
Link detected: yes
ethtool
Counters Troubleshooting for Linux Driver
Why do I see rx_crc_errors in ethtool output?
ping請求錯誤分析
ifconfig 命令詳解
ethtool 命令詳解
ethtool 解決網卡丟包嚴重和網卡原理
⑹ linux 下用ifconfig 查看網卡狀態,發現eth0有RX有drop包,這是否說明內網硬體不正常.或者存在arp攻擊
ifconfig 顯示接收丟包,一般來說是驅動申請不到足夠的內存來存放收到的包
接收丟包統計在數據結構net_device_stats的下面這個欄位中
unsigned long rx_dropped; /* no space in linux buffers */
所以既不是硬體問題(否則根本收不到包),也不是arp攻擊(驅動不管上層協議類型的),有可能是內存不夠,但是不能確定,樓主可以查一下你網卡的驅動程序確認下
⑺ 如何用linux建立eth1
cp ifcfg-eth0 ifcfg-eth1
然後 vi ifcfg-eth1
按照 裡面的 參數 設置 就可以
最簡單 方法 如果你有 安裝upset
用upset吧
⑻ 如何在Linux中為eth0增加一個路由
Linux下網卡命名規律:eth0,eth1。第一塊乙太網卡,第二塊。lo為環回介面,它的IP地址固定為127.0.0.1,掩碼8位。它代表你的機器本身。1、ifconfig是查看網卡的信息ifconfig[Interface]Interface是可選項,如果不加此項,則顯示系統中所有網卡的信息。如果添加此選項則顯示所指定的網卡信息.例如:ifconfigeth0eth0Linkencap:EthernetHWaddr00:0C:29:F3:3B:F2inetaddr:192.168.0.10Bcast:192.168.0.255Mask:255.255.255.:1500Metric:1RXpackets:78errors:0dropped:0overruns:0frame:0TXpackets:104errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:100RXbytes:11679(11.4Kb)TXbytes:14077(13.7Kb)Interrupt:10Baseaddress:0x1080可以看到:第一行:連接類型:Ethernet(乙太網)HWaddr(硬體mac地址)第二行:網卡的IP地址、子網、掩碼第三行:UP(代表網卡開啟狀態)RUNNING(代表網卡的網線被接上)MULTICAST(支持組播)MTU:1500(最大傳輸單元):1500位元組第四、五行:接收、發送數據包情況統計第七行:接收、發送數據位元組數統計信息。(1)配置eth0的IP地址,同時激活該設備。#ifconfigeth0192.168.1.10netmask255.255.255.0up(2)配置eth0別名設備eth0:1的IP地址,並添加路由。#ifconfigeth0:1192.168.1.3#routeadd–host192.168.1.3deveth0:1(3)激活設備。#ifconfigeth0:1up(4)禁用設備。#ifconfigeth0:down(5)查看指定的網路介面的配置。#ifconfigeth0(6)查看所有的網路介面配置。#ifconfig2、route命令來配置並查看內核路由表的配置情況例如:(1)添加到主機的路由。#routeadd–host192.168.1.2deveth0:0#routeadd–host10.20.30.148gw10.20.30.40(2)添加到網路的路由。#routeadd–net10.20.30.40netmask255.255.255.248eth0#routeadd–net10.20.30.48netmask255.255.255.248gw10.20.30.41#routeadd–net192.168.1.0/24eth1(3)添加默認網關。#routeadddefaultgw192.168.1.1(4)查看內核路由表的配置。#route(5)刪除路由。#routedel–host192.168.1.2deveth0:0#routedel–host10.20.30.148gw10.20.30.40#routedel–net10.20.30.40netmask255.255.255.248eth0#routedel–net10.20.30.48netmask255.255.255.248gw10.20.30.41#routedel–net192.168.1.0/24eth1#routedeldefaultgw192.168.1.1對於1和2兩點可使用下面的語句實現:Ifconfigeth0172.16.19.71netmask255.255.255.0Route0.0.0.0gw172.16.19.254Servicenetworkrestart3、traceroute命令顯示數據包到達目的主機所經過的路由例如:#traceroute.cn4、ping命令來測試網路的連通性例如:#ping.cn#ping–c4192.168.1.125、netstat命令來顯示網路狀態信息
⑼ 如何快速辨別網卡ID與物理網卡的對應關系(即eth
如何快速辨別網卡ID與物理網卡的對應關系
一般購買的伺服器都有4個網卡,這個時候在安裝好伺服器後,配置IP的時候就郁悶了
如是一個浪潮8560M2伺服器安裝Redhat後的網卡顯示:
[root@DBSERVER51 ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:E0:ED:2D:0F:58
inet addr:192.168.4.10 Bcast:192.168.4.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:40428 errors:0 dropped:0 overruns:0 frame:0
TX packets:392 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3413500 (3.2 MiB) TX bytes:44521 (43.4 KiB)
Memory:faee0000-faf00000
eth1 Link encap:Ethernet HWaddr 00:E0:ED:2D:0F:59
BROADCAST MULTICAST MTU:1500 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:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:fae60000-fae80000
eth2 Link encap:Ethernet HWaddr 00:25:90:5A:15:B6
BROADCAST MULTICAST MTU:1500 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:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:fafe0000-fb000000
eth3 Link encap:Ethernet HWaddr 00:25:90:5A:15:B7
BROADCAST MULTICAST MTU:1500 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:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:faf60000-faf80000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:660 (660.0 b) TX bytes:660 (660.0 b)
從一個機房搬下來時,忘記標記了。這個時候還是想修改eth0作為通信口。但是一個一個插拔比較麻煩,於是就想能不能有個好辦法,畢竟Linux不像Windows那樣直觀,打開網路連接就可以看到。這個時候就要用到ethtool這樣一個命令,命令詳解如下:
命令描述:
ethtool 是用於查詢及設置網卡參數的命令。
ethX是乙太網卡的名稱,Linux系統將檢測到的第一塊乙太網卡命名為eth0, 第二塊為eth1,…….。
使用概要:
ethtool ethx //查詢ethx網口基本設置,其中 x 是對應網卡的編號,如eth0、eth1等等
ethtool –h //顯示ethtool的命令幫助(help)
ethtool –i ethX //查詢ethX網口的相關信息
ethtool –d ethX //查詢ethX網口注冊性信息
ethtool –r ethX //重置ethX網口到自適應模式
ethtool –S ethX //查詢ethX網口收發包統計
ethtool –s ethX [speed 10|100|1000] [plex half|full] [autoneg on|off] //設置網口速率10/100/1000M、設置網口半/全雙工、設置網口是否自協商
ethtool [ -a | -c | -g | -i | -d | -k | -r | -S |] ethX
ethtool [-A] ethX [autoneg on|off] [rx on|off] [tx on|off]
ethtool [-C] ethX [adaptive-rx on|off] [adaptive-tx on|off] [rx-usecs N] [rx-frames N] [rx-usecs-irq N] [rx-frames-irq N] [tx-usecs N] [tx-frames N] [tx-usecs-irq N] [tx-frames-irq N] [stats-block-usecs N][pkt-rate-low N][rx-usecs-low N] [rx-frames-low N] [tx-usecs-low N] [tx-frames-lowN] [pkt-rate-high N] [rx-usecs-high N] [rx-frames-high N] [tx-usecs-high N] [tx-frames-high N] [sample-interval N]
ethtool [-G] ethX [rx N] [rx-mini N] [rx-jumbo N] [tx N]
ethtool [-e] ethX [raw on|off] [offset N] [length N]
ethtool [-E] ethX [magic N] [offset N] [value N]
ethtool [-K] ethX [rx on|off] [tx on|off] [sg on|off] [tso on|off]
ethtool [-p] ethX [N]
ethtool [-t] ethX [offline|online]
ethtool [-s] ethX [speed 10|100|1000] [plex half|full] [autoneg on|off] [port tp|aui|bnc|mii] [phyad N] [xcvr internal|external]
[wol p|u|m|b|a|g|s|d...] [sopass xx:yy:zz:aa:bb:cc] [msglvl N]
標志
-a 查看網卡中 接收模塊RX、發送模塊TX和Autonegotiate模塊的狀態:啟動on 或 停用off
-A 修改網卡中 接收模塊RX、發送模塊TX和Autonegotiate模塊的狀態:啟動on 或 停用off
-c display the Coalesce information of the specified ethernet card
-C Change the Coalesce setting of the specified ethernet card
-g Display the rx/tx ring parameter information of the specified ethernet card
-G change the rx/tx ring setting of the specified ethernet card
-i 顯示網卡驅動的信息,如驅動的名稱、版本等
-d 顯示register mp信息, 部分網卡驅動不支持該選項
-e 顯示EEPROM mp信息,部分網卡驅動不支持該選項
-E 修改網卡EEPROM byte
-k 顯示網卡Offload參數的狀態:on 或 off,包括rx-checksumming、tx-checksumming等。
-K 修改網卡Offload參數的狀態
-p 用於區別不同ethX對應網卡的物理位置,常用的方法是使網卡port上的led不斷的閃;N指示了網卡閃的持續時間,以秒為單位。
-r 如果auto-negotiation模塊的狀態為on,則restarts auto-negotiation
-S 顯示NIC- and driver-specific 的統計參數,如網卡接收/發送的位元組數、接收/發送的廣播包個數等。
-t 讓網卡執行自我檢測,有兩種模式:offline or online
-s 修改網卡的部分配置,包括網卡速度、單工/全雙工模式、mac地址等
⑽ 廣電網路eth0和eth1介面區別
eth0 eth0:1 和eth0.1三者的關系對應於物理網卡、子網卡、虛擬VLAN網卡的關系:
物理網卡:物理網卡這里指的是伺服器上實際的網路介面設備,這里我伺服器上雙網卡,在系統中看到的2個物理網卡分別對應是eth0和eth1這兩個網路介面。
子網卡:子網卡在這里並不是實際上的網路介面設備,但是可以作為網路介面在系統中出現,如eth0:1、eth1:2這種網路介面。它們必須要依賴於物理網卡,雖然可以與物理網卡的網路介面同時在系統中存在並使用不同的IP地址,而且也擁有它們自己的網路介面配置文件。但是當所依賴的物理網卡不啟用時(Down狀態)這些子網卡也將一同不能工作。
虛擬VLAN網卡:這些虛擬VLAN網卡也不是實際上的網路介面設備,也可以作為網路介面在系統中出現,但是與子網卡不同的是,他們沒有自己的配置文件。他們只是通過將物理網加入不同的VLAN而生成的VLAN虛擬網卡。如果將一個物理網卡通過vconfig命令添加到多個VLAN當中去的話,就會有多個VLAN虛擬網卡出現,他們的信息以及相關的VLAN信息都是保存在/proc/net/vlan/config這個臨時文件中的,而沒有獨自的配置文件。它們的網路介面名是eth0.1、eth1.2這種名字。
注意:當需要啟用VLAN虛擬網卡工作的時候,關聯的物理網卡網路介面上必須沒有IP地址的配置信息,並且,這些主物理網卡的子網卡也必須不能被啟用和必須不能有IP地址配置信息。這個在網上看到的結論根據我的實際測試結果來看是不準確的,物理網卡本身可以綁定IP,並且給本徵vlan提供通信網關的功能,但必須是在802.1q下。
/sbin/ifconfig 查看、配置、啟用或禁用網路介面(網卡)的工具
ifconfig 是一個用來查看、配置、啟用或禁用網路介面的工具,這個工具極為常用的。比如我們可以用這個工具來配置網卡的IP地址、MAC地址、掩碼、廣播地址等。值得一說的是用ifconfig 為網卡指定IP地址,這只是用來調試網路用的,並不會更改系統關於網卡的配置文件。如果您想把網路介面的IP地址固定下來,目前有三個方法:一是通過各個發行和版本專用的工具來修改IP地址;二是直接修改網路介面的配置文件;三是修改特定的文件,加入ifconfig 指令來指定網卡的IP地址,比如在redhat或Fedora中,把ifconfig 的語名寫入/etc/rc.d/rc.local文件中;
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth0
ifconfig配置網路介面語法:
ifconfig 網路埠 IP地址 hw MAC地址 netmask 掩碼地址 broadcast 廣播地址 [up/down]
ifconfig常用用法:
ifconfig : 查看主機激活狀態的網路介面情況; 輸出結果中:lo 是表示主機的回壞地址,eth0 表示第一塊網卡, 其中 HWaddr 表示網卡的物理地址(MAC地址); inet addr 用來表示網卡的IP地址,Bcast表示廣播地址,Mask表示掩碼地址
ifconfig -a : 查看主機所有(包括沒有被激活的)網路介面的情況
ifconfig eth0 : 查看特定網路介面的狀態
ifconfig eth0 down = ifup eth0 : 如果eth0是激活的,就把它終止掉。此命令等同於 ifdown eth0;
ifconfig eth0 up = ifdown eth0 : 激活eth0 ; 此命令等同於 ifup eth0
ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 : 配置 eth0的IP地址、廣播地址和網路掩碼;
ifconfig eth0 192.168.1.99 broadcast 192.168.1.255 netmask 255.255.255.0 up : 配置IP地址、網路掩碼、廣播地址的同時,激活網卡eth0
ifconfig eth1 hw ether 00:11:00:00:11:22 : 設置網卡的物理地址(MAC地址)。其中 hw 後面所接的是網路介面類型, ether表示乙太網, 同時也支持 ax25 、ARCnet、netrom等,詳情請查看 man ifconfig ;
虛擬IP技術在高可用領域像資料庫SQLSERVER、web伺服器等場景下使用很多,很疑惑它是怎麼實現的,偶然,發現了一種方式可以實現虛擬ip。它的原理在於同一個物理網卡,是可以擁有多個ip地址的,至於虛擬網卡,也可用通過該方式擁有多個ip。 即對外提供資料庫伺服器的主機除了有一個真實IP外還有一個虛IP,使用這兩個IP中的 任意一個都可以連接到這台主機,所有項目中資料庫鏈接一項配置的都是這個虛IP,當伺服器發生故障無法對外提供服務時,動態將這個虛IP切換到備用主機。
其實現原理主要是靠TCP/IP的ARP協議。因為ip地址只是一個邏輯地址,在乙太網中MAC地址才是真正用來進行數據傳輸的物理地址,每台主機中都有一個ARP高速緩存,存儲同一個網路內的IP地址與MAC地址的對應關系,乙太網中的主機發送數據時會先從這個緩存中查詢目標IP對應的MAC地址,會向這個MAC地址發送數據。操作系統會自動維護這個緩存。這就是整個實現 的關鍵。
在eth0處引用別名,設置完子網掩碼即可
ifconfig eth0:0 166.111.69.100 netmask 255.255.255.0 up
此時查看網卡信息
eth0 Link encap:Ethernet HWaddr 08:00:27:64:59:11
inet addr:166.111.69.17 Bcast:166.111.69.255 Mask:255.255.255.0
inet6 addr: 2402:f000:1:4412:a00:27ff:fe64:5911/64 Scope:Global
inet6 addr: fe80::a00:27ff:fe64:5911/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:597673 errors:0 dropped:0 overruns:0 frame:0
TX packets:215472 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:67285933 (67.2 MB) TX bytes:22782158 (22.7 MB)
eth0:0 Link encap:Ethernet HWaddr 08:00:27:64:59:11
inet addr:166.111.69.100 Bcast:166.111.69.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
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:843 errors:0 dropped:0 overruns:0 frame:0
TX packets:843 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:67174 (67.1 KB) TX bytes:67174 (67.1 KB)
然後找另一台機器ping這個vip(eth0:0)就可以看到顯示結果了。
寫在/etc/rc.local里也可以,寫在這里就不怕斷電後機器無法正常使用了。
更詳細參考:Linux-配置虛擬IP實例
用ifconfig 來配置虛擬網路介面:
有時我們為了滿足不同的需要還需要配置虛擬網路介面,比如我們用不同的IP地址來架運行多個HTTPD伺服器,就要用到虛擬地址;這樣就省卻了同一個IP地址,如果開設兩個的HTTPD伺服器時,要指定埠號。
虛擬網路介面指的是為一個網路介面指定多個IP地址,虛擬介面是這樣的 eth0:0 、 eth0:1、eth0:2 ... .. eth1N。當然您為eth1 指定多個IP地址,也就是 eth1:0、eth1:1、eth1:2 ... ...以此類推;
ifconfig eth1:0 192.168.1.250 hw ether 00:11:00:00:11:44 netmask 255.255.255.0 broadcast 192.168.1.255 up
ifconfig eth1:1 192.168.1.249 hw ether 00:11:00:00:11:55 netmask 255.255.255.0 broadcast 192.168.1.255 up
注意:指定時,要為每個虛擬網卡指定不同的物理地址;