Linux學習之CentOS(二十九)--Linux網卡高級命令、IP別名及多網卡綁定



您可以通過點擊 右下角 的按鈕 來對文章內容作出評價, 也可以通過左下方的 關注按鈕 來關注我的博客的最新動態。 如果文章內容對您有幫助, 不要忘記點擊右下角的 推薦按鈕 來支持一下哦 如果您對文章內容有任何疑問, 可以通過評論或發郵件的方式聯系我: 501395377@qq.com / lzp501395377@gmail.com 如果需要轉載,請注明出處,謝謝!!

 

本篇隨筆將詳細講解Linux系統的網卡高級命令、IP別名以及Linux下多網卡綁定的知識

一、網卡高級命令

在之前的一篇隨筆里Linux學習之CentOS(九)--Linux系統的網絡環境配置,詳細講解了Linux系統下的網絡環境配置等知識,我們了解了一些關於網絡配置的一些基本命令。在這里將補充一些Linux系統下有關網卡的一些高級命令。

mii-tool 命令  

mii-tool命令我們可以用來查看網卡狀態信息,包括了以太網連接是否正常,使用的是哪種型號的網卡等等

 

[root@xiaoluo ~]# mii-tool eth0
eth0: no autonegotiation, 100baseTx-FD, link ok

 

我們從輸出的信息可以看到,當前以太網連接正常,以太網的速率是100M每秒,通過這個命令我們可以看到網卡底層的一些信息,當有時我們在上層通過ping、traceroute等命令進行網絡排錯時,如果發現網絡還是不能連接暢通,這時就可以使用這個命令來查看是否是以太網連接出問題了

ethtool 命令

通過mii-tool命令可以查看網卡的一些底層信息,但是如果我們想要查看網卡的更詳細信息,就可以使用ethtool 這個命令,它可以將網卡的所有信息都詳細列出來

[root@xiaoluo ~]# ethtool eth0
Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    MDI-X: Unknown
    Supports Wake-on: umbg
    Wake-on: d
    Current message level: 0x00000007 (7)
                   drv probe link
    Link detected: yes

包括網卡支持的鏈接速率、雙工模式等等信息都能查看到

如果說我們想要查看網卡的驅動信息,可以在 ethtool 命令后加上 -i 參數,就能顯示網卡的驅動信息了

[root@xiaoluo ~]# ethtool -i eth0

driver: e1000
version: 7.3.21-k8-NAPI
firmware-version: 
bus-info: 0000:00:03.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

如果說我們還需要查看網卡當前底層工作狀態信息,可以在命令后加上 -S 參數

[root@xiaoluo ~]# ethtool -S eth0

NIC statistics:
     rx_packets: 3255
     tx_packets: 898
     rx_bytes: 477575
     tx_bytes: 2228309
     rx_broadcast: 2190
     tx_broadcast: 198
     rx_multicast: 0
     tx_multicast: 6
     rx_errors: 0
     tx_errors: 0
     tx_dropped: 0
     multicast: 0
     collisions: 0
     rx_length_errors: 0
     rx_over_errors: 0
     rx_crc_errors: 0
     rx_frame_errors: 0
     rx_no_buffer_count: 0
     rx_missed_errors: 0
     tx_aborted_errors: 0
     tx_carrier_errors: 0
     tx_fifo_errors: 0
     tx_heartbeat_errors: 0
     tx_window_errors: 0
     tx_abort_late_coll: 0
     tx_deferred_ok: 0
     tx_single_coll_ok: 0
     tx_multi_coll_ok: 0
     tx_timeout_count: 0
     tx_restart_queue: 0
     rx_long_length_errors: 0
     rx_short_length_errors: 0
     rx_align_errors: 0
     tx_tcp_seg_good: 263
     tx_tcp_seg_failed: 0
     rx_flow_control_xon: 0
     rx_flow_control_xoff: 0
     tx_flow_control_xon: 0
     tx_flow_control_xoff: 0
     rx_long_byte_count: 477575
     rx_csum_offload_good: 0
     rx_csum_offload_errors: 0
     alloc_rx_buff_failed: 0
     tx_smbus: 0
     rx_smbus: 0
     dropped_smbus: 0

包括網卡發送了多少數據包、接受了多少數據包等信息都能看到。

所以通過 mii-tool 和 ethtool 這兩個命令,我們可以看到網卡更多的底層信息以及網卡的物理信息等等,這可能會為我們在進行網絡排錯時提供便利

二、IP別名

在Linux系統中,我們可以在一塊物理網卡上配置多個IP地址,以此來實現類似子接口的功能,我們稱之為IP別名。當然在其他操作系統上,比如windowns、mac os上也支持在一塊物理網卡配置多個IP地址。比如說我們的Linux主機作為一個DHCP服務器,它可能要為不同的網段分配多個IP地址,在Linux系統中,我們通過IP別名來實現在一塊物理網卡上配置多個IP地址。

注意:要使用IP別名來配置多個IP地址,我們首先需要關閉NetworkManager服務

在CentOS或者RHEL上,都默認會啟用NerworkManager這個服務來對網卡進行管理,NetworkManager服務其實就是我們操作系統右上方那兩個小電腦圖標,我們在圖形化界面可以點擊那個來指定使用哪塊網卡,但是我們如果需要使用IP別名,就必須要禁用掉這個服務

[root@xiaoluo ~]# service NetworkManager stop
Stopping NetworkManager daemon:                            [  OK  ]  // 停掉我們的NetworkManager服務,此時我們可以發現右上角那個圖標就不見了

[root@xiaoluo ~]# chkconfig NetworkManager off  //  NetworkManager這個服務默認會開機啟動,所以我們將其設置成開機不啟動

[root@xiaoluo ~]# chkconfig --list | grep NetworkManager
NetworkManager     0:off    1:off    2:off    3:off    4:off    5:off    6:off

在停掉NetworkManager服務以后我們就可以使用IP別名技術來配置多個IP地址了,這里我們使用 ip 這個命令,命令語法格式如下

ip addr add 172.25.215.40/24 dev etho label eth0:0

后面的eth0:0 表示,我們給eth0這塊網卡增加一個IP別名,后面那個0表示別名號,第二個別名就可以寫成 eth0:1

我們首先通過 ifconfig 命令來查看我們當前網卡的信息

 

[root@xiaoluo ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:D7:F8:84  
          inet addr:172.25.215.40  Bcast:172.25.215.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fed7:f884/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5801 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2011 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:819876 (800.6 KiB)  TX bytes:2288399 (2.1 MiB)

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:167 errors:0 dropped:0 overruns:0 frame:0
          TX packets:167 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:14861 (14.5 KiB)  TX bytes:14861 (14.5 KiB)

 

此時我們的eth0網卡信息就會顯示出來,我們此時通過ip命令來給eth0添加一個IP別名

[root@xiaoluo ~]# ip addr add 172.25.215.31/24 dev eth0 label eth0:0

[root@xiaoluo ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:D7:F8:84  
          inet addr:172.25.215.40  Bcast:172.25.215.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fed7:f884/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6323 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2011 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:914440 (893.0 KiB)  TX bytes:2288399 (2.1 MiB)

eth0:0    Link encap:Ethernet  HWaddr 08:00:27:D7:F8:84  
          inet addr:172.25.215.31  Bcast:0.0.0.0  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:167 errors:0 dropped:0 overruns:0 frame:0
          TX packets:167 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:14861 (14.5 KiB)  TX bytes:14861 (14.5 KiB)

我們看到,此時我們對出來了一塊 eth0:0 網卡,其實這個就是eth0網卡的一個IP別名,eth0上就有兩個IP地址了,此時我們通過外面的主機ping這兩個IP地址都是可以ping通的,如果說我們需要永久保存這個信息,我們就需要在 /etc/sysconfig/network-scripts 這個文件下建立一個名字為 ifcfg.eth0:0 這樣的配置文件,新建的IP別名是什么,那么就在這個目錄下建立一個與該名字對應的文件即可

[root@xiaoluo ~]# cd /etc/sysconfig/network-scripts/

[root@xiaoluo network-scripts]# ls
ifcfg-eth0   ifdown-isdn    ifup-aliases  ifup-plusb     init.ipv6-global
ifcfg-lo     ifdown-post    ifup-bnep     ifup-post      net.hotplug
ifdown       ifdown-ppp     ifup-eth      ifup-ppp       network-functions
ifdown-bnep  ifdown-routes  ifup-ippp     ifup-routes    network-functions-ipv6
ifdown-eth   ifdown-sit     ifup-ipv6     ifup-sit
ifdown-ippp  ifdown-tunnel  ifup-isdn     ifup-tunnel
ifdown-ipv6  ifup           ifup-plip     ifup-wireless

[root@xiaoluo network-scripts]# vi ifcfg-eth0:0

DEVICE=eth0:0    // 設備名字
IPADDR=172.25.215.31  //  IP地址
PREFIX=24  // 前綴是24,其實就是相當於子網掩碼有24位 ONPARENT=yes  //  eth0:0是eth0的IP別名,yes表示附屬於eth0

通過添加上述的配置文件,我們的IP別名信息就能永久保存了。

三、多網卡綁定

為什么要使用多網卡綁定技術呢?我們知道如果使用一塊網卡進行網絡數據傳輸時其速度是有限的,即使是千兆網卡,其速度也是有限制的,我們為了提高帶寬,我們可以將多塊物理網卡綁定成一塊邏輯網卡,這樣網卡的速率就是多塊網卡的速率了。

Linux支持將多塊物理網卡綁定成一塊邏輯網卡,綁定后的邏輯網卡可以並行使用組成其的所有物理網卡,通過這樣的方式可以提高帶寬以及網路的穩定性

我們在將多塊物理網卡綁定成一塊邏輯網卡以后,我們的IP地址就要求配置在這塊邏輯網卡上了,而非多塊物理網卡

Linux下支持三種模式的網卡綁定:

①模式0平衡輪訓  使用這種模式來進行多網卡綁定時我們可以提高網絡的帶寬,其流量是從綁定的多塊網卡上平均分配的

②模式1主動備份  使用這種模式來進行多網卡綁定時我們可以提高網絡的穩定性,這種模式不會提高網絡的帶寬,每次只有一塊網卡在走流量,只有當這塊網卡發生故障時,綁定在一起的其它物理網卡才會工作

③模式3廣播模式  這種模式一般都不用

我們如果想通過多網卡綁定來提升網絡的帶寬,就選擇模式0,如果想提高網絡的穩定性,則選擇模式1

下面我們來看看如何進行網卡綁定的配置

①網卡綁定以后我們需要給我們的邏輯網卡取一個名字,通常格式為 bondn,n代表的是編號,如 /dev/bond0, /dev/bond1

②然后我們需要在 /etc/sysconfig/network-scripts 這個目錄下創建該邏輯網卡的配置文件,如:

/etc/sysconfig/network-scripts/ifc-bond0

 

[root@xiaoluo network-scripts]# vi ifcfg-bond0

DEVICE=bond0  //  設備名字
IPADDR=172.25.215.200  //  網卡ip地址
PREFIX=24  //  子網掩碼24位
ONBOOT=yes  //  開機啟動yes
BOOTPROTO=none  //  啟動協議,因為我們是手動配置IP,所以設置成none,如果是通過DHCP動態分配,則設置成dhcp
USERCTL=no  //  關閉掉用戶控制
BONDING_OPTS="mode=1 miimon=5"  //  這個是bond網卡最主要的配置,我們的bond網卡其實是根據一個叫做bonding的驅動來配置的,后面跟配置參數,這里我們使用的是模式1(主動備份)

 

因為我們要使用多網卡綁定,所以我們這里再添加一塊網卡,然后根據提示就可以添加一塊新網卡了,我們這里添加一塊網卡eth1,使用ifconfig查看一下:

 

[root@xiaoluo network-scripts]# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
          inet addr:172.25.215.200  Bcast:172.25.215.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MASTER 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:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

eth0      Link encap:Ethernet  HWaddr 08:00:27:D7:F8:84  
          inet6 addr: fe80::a00:27ff:fed7:f884/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1285 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:221706 (216.5 KiB)  TX bytes:468 (468.0 b)

eth1      Link encap:Ethernet  HWaddr 08:00:27:F4:7D:CC  
          inet6 addr: fe80::a00:27ff:fef4:7dcc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1196 errors:0 dropped:0 overruns:0 frame:0
          TX packets:95 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:216126 (211.0 KiB)  TX bytes:4806 (4.6 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:73 errors:0 dropped:0 overruns:0 frame:0
          TX packets:73 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:6330 (6.1 KiB)  TX bytes:6330 (6.1 KiB)

 

此時我們計算機里面就有兩塊網卡了,因為我們需要將這兩塊網卡綁定到bond0這個邏輯網卡中,所以我們要在兩塊網卡的配置文件里面添加兩條語句:

MASTER=bond0  // 將這兩塊網卡綁定到bond0這塊邏輯網卡上
SLAVE=yes  //  SLAVE=yes表示這兩塊網卡附屬於bond0這塊網卡
[root@xiaoluo network-scripts]# vi ifcfg-eth0

DEVICE=eth0
HWADDR=08:00:27:D7:F8:84
TYPE=Ethernet
UUID=2877e96e-6ddd-443b-a337-bafa7c77c6e5
ONBOOT=no
NM_CONTROLLED=yes
BOOTPROTO=none
IPV6INIT=no
USERCTL=no
MASTER=bond0
SLAVE=yes

[root@xiaoluo network-scripts]# vi ifcfg-eth1

DEVICE=eth1
BOOTPROTO=none
TYPE=Ethernet
PEERDNS=yes
IPV6INIT=no
ONBOOT=no
USERCTL=no
HWADDR=08:00:27:f4:7d:cc
MASTER=bond0
SLAVE=yes

之前說過bond0這塊網卡其實是通過一個叫做 bonding 的驅動來配置的,所以我們還需要為bond0這塊網卡添加驅動支持,將這個驅動添加到 /etc/modprobe.d/ 這個目錄下

[root@xiaoluo network-scripts]# cd /etc/modprobe.d/

[root@xiaoluo modprobe.d]# ls
anaconda.conf   blacklist-visor.conf  dist.conf      openfwwf.conf
blacklist.conf  dist-alsa.conf        dist-oss.conf

這個文件夾下放的都是我們系統所需驅動的配置文件,我們這時需要給我們的bonding添加一個名字為 bonding.conf 的配置文件

 

[root@xiaoluo modprobe.d]# vi bonding.conf

alias bond0 bonding

 

此時配置好以后,我們就可以通過 ifup bond0 來啟動我們的bond0網卡

[root@xiaoluo network-scripts]# ifup bond0

Active connection state: activated
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/2

此時我們可以通過ifconfig命令來查看一下當前網卡信息:

[root@xiaoluo network-scripts]# ifconfig
bond0 Link encap:Ethernet HWaddr 08:00:27:D7:F8:84 inet addr:172.25.215.200 Bcast:172.25.215.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fed7:f884/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:8175 errors:0 dropped:0 overruns:0 frame:0 TX packets:117 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1417884 (1.3 MiB) TX bytes:6230 (6.0 KiB) eth0 Link encap:Ethernet HWaddr 08:00:27:D7:F8:84 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:4131 errors:0 dropped:0 overruns:0 frame:0 TX packets:22 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:711693 (695.0 KiB) TX bytes:1424 (1.3 KiB) eth1 Link encap:Ethernet HWaddr 08:00:27:D7:F8:84 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:4044 errors:0 dropped:0 overruns:0 frame:0 TX packets:95 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:706191 (689.6 KiB) TX bytes:4806 (4.6 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:81 errors:0 dropped:0 overruns:0 frame:0 TX packets:81 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:7226 (7.0 KiB) TX bytes:7226 (7.0 KiB)

此時我們通過 ping 命令來ping我們外面的主機,發現已經可以正常ping通的

[root@xiaoluo network-scripts]# ping 172.25.215.25
PING 172.25.215.25 (172.25.215.25) 56(84) bytes of data.
64 bytes from 172.25.215.25: icmp_seq=1 ttl=64 time=1.78 ms
64 bytes from 172.25.215.25: icmp_seq=2 ttl=64 time=1.10 ms
64 bytes from 172.25.215.25: icmp_seq=3 ttl=64 time=1.08 ms
64 bytes from 172.25.215.25: icmp_seq=4 ttl=64 time=0.811 ms
64 bytes from 172.25.215.25: icmp_seq=5 ttl=64 time=1.17 ms
***********************************************************************************

這個時候我們的bond0網卡就已經配置成功了,它是由兩塊物理網卡組成的,我們可以根據需要,比如說要提高網絡帶寬或者提高網絡穩定性來設置bond0的網卡綁定模式即可

 

本篇隨筆詳細講解了Linux網卡的一些高級命令以及如何在給一塊物理網卡配置多個IP地址,我們稱之為IP別名,當然還有我們的多網卡綁定配置!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM