本篇隨筆將詳細講解Linux系統的網卡進階命令、IP別名以及Linux下多網卡綁定的知識
一、網卡進階命令
在之前的一篇隨筆裡Linux學習之CentOS(九)--Linux系統的網路環境配置,詳細講解了Linux系統下的網路環境配置等知識,我們瞭解了一些關於網路設定的一些基本命令。在這裡將補充一些Linux系統下有關網卡的一些進階命令。
①mii-tool 命令
mii-tool命令我們可以用來查看網卡狀態資訊,包括了乙太網路串連是否正常,使用的是哪種型號的網卡等等
[root@xiaoluo ~]# mii-tool eth0eth0: no autonegotiation, 100baseTx-FD, link ok
我們從輸出的資訊可以看到,當前乙太網路串連正常,乙太網路的速率是100M每秒,通過這個命令我們可以看到網卡底層的一些資訊,當有時我們在上層通過ping、traceroute等命令進行網路排錯時,如果發現網路還是不能串連暢通,這時就可以使用這個命令來查看是否是乙太網路串連出問題了
②ethtool 命令
通過mii-tool命令可以查看網卡的一些底層資訊,但是如果我們想要查看網卡的更詳細資料,就可以使用ethtool 這個命令,它可以將網卡的所有資訊都詳細列出來
[root@xiaoluo ~]# ethtool eth0Settings 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 eth0driver: e1000version: 7.3.21-k8-NAPIfirmware-version: bus-info: 0000:00:03.0supports-statistics: yessupports-test: yessupports-eeprom-access: yessupports-register-dump: yessupports-priv-flags: no
如果說我們還需要查看網卡當前底層工作狀態資訊,可以在命令後加上 -S 參數
[root@xiaoluo ~]# ethtool -S eth0NIC 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 stopStopping NetworkManager daemon: [ OK ] // 停掉我們的NetworkManager服務,此時我們可以發現右上方那個表徵圖就不見了[root@xiaoluo ~]# chkconfig NetworkManager off // NetworkManager這個服務預設會開機啟動,所以我們將其設定成開機不啟動[root@xiaoluo ~]# chkconfig --list | grep NetworkManagerNetworkManager 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 ~]# ifconfigeth0 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 ~]# ifconfigeth0 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:1lo 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]# lsifcfg-eth0 ifdown-isdn ifup-aliases ifup-plusb init.ipv6-globalifcfg-lo ifdown-post ifup-bnep ifup-post net.hotplugifdown ifdown-ppp ifup-eth ifup-ppp network-functionsifdown-bnep ifdown-routes ifup-ippp ifup-routes network-functions-ipv6ifdown-eth ifdown-sit ifup-ipv6 ifup-sitifdown-ippp ifdown-tunnel ifup-isdn ifup-tunnelifdown-ipv6 ifup ifup-plip ifup-wireless[root@xiaoluo network-scripts]# vi ifcfg-eth0:0DEVICE=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-bond0DEVICE=bond0 // 裝置名稱字IPADDR=172.25.215.200 // 網卡ip地址PREFIX=24 // 子網路遮罩24位ONBOOT=yes // 開機啟動yesBOOTPROTO=none // 啟動協議,因為我們是手動設定IP,所以設定成none,如果是通過DHCP動態分配,則設定成dhcpUSERCTL=no // 關閉掉使用者控制BONDING_OPTS="mode=1 miimon=5" // 這個是bond網卡最主要的配置,我們的bond網卡其實是根據一個叫做bonding的驅動來配置的,後面跟配置參數,這裡我們使用的是模式1(主動備份)
因為我們要使用多網卡綁定,所以我們這裡再添加一塊網卡,然後根據提示就可以添加一塊新網卡了,我們這裡添加一塊網卡eth1,使用ifconfig查看一下:
[root@xiaoluo network-scripts]# ifconfigbond0 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-eth0DEVICE=eth0HWADDR=08:00:27:D7:F8:84TYPE=EthernetUUID=2877e96e-6ddd-443b-a337-bafa7c77c6e5ONBOOT=noNM_CONTROLLED=yesBOOTPROTO=noneIPV6INIT=noUSERCTL=noMASTER=bond0SLAVE=yes[root@xiaoluo network-scripts]# vi ifcfg-eth1DEVICE=eth1BOOTPROTO=noneTYPE=EthernetPEERDNS=yesIPV6INIT=noONBOOT=noUSERCTL=noHWADDR=08:00:27:f4:7d:ccMASTER=bond0SLAVE=yes
之前說過bond0這塊網卡其實是通過一個叫做 bonding 的驅動來配置的,所以我們還需要為bond0這塊網卡添加驅動支援,將這個驅動添加到 /etc/modprobe.d/ 這個目錄下
[root@xiaoluo network-scripts]# cd /etc/modprobe.d/[root@xiaoluo modprobe.d]# lsanaconda.conf blacklist-visor.conf dist.conf openfwwf.confblacklist.conf dist-alsa.conf dist-oss.conf
這個檔案夾下放的都是我們系統所需驅動的設定檔,我們這時需要給我們的bonding添加一個名字為 bonding.conf 的設定檔
[root@xiaoluo modprobe.d]# vi bonding.confalias bond0 bonding
此時配置好以後,我們就可以通過 ifup bond0 來啟動我們的bond0網卡
[root@xiaoluo network-scripts]# ifup bond0Active connection state: activatedActive connection path: /org/freedesktop/NetworkManager/ActiveConnection/2
此時我們可以通過ifconfig命令來查看一下當前網卡資訊:
[root@xiaoluo network-scripts]# ifconfigbond0 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.25PING 172.25.215.25 (172.25.215.25) 56(84) bytes of data.bytes from 172.25.215.25: icmp_seq=1 ttl=64 time=1.78 msbytes from 172.25.215.25: icmp_seq=2 ttl=64 time=1.10 msbytes from 172.25.215.25: icmp_seq=3 ttl=64 time=1.08 msbytes from 172.25.215.25: icmp_seq=4 ttl=64 time=0.811 msbytes from 172.25.215.25: icmp_seq=5 ttl=64 time=1.17 ms***********************************************************************************
這個時候我們的bond0網卡就已經配置成功了,它是由兩塊物理網卡組成的,我們可以根據需要,比如說要提高網路頻寬或者提高網路穩定性來設定bond0的網卡繫結模式即可
本篇隨筆詳細講解了Linux網卡的一些進階命令以及如何在給一塊物理網卡配置多個IP地址,我們稱之為IP別名,當然還有我們的多網卡綁定配置!!!
原文連結:http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/26/3100065.html
以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。