ifconfig 中的 eth0 eth0:1 eth0.1 與 lo

1. eth0 eth0:1 eth0.1html

 

eth0 eth0:1 和eth0.1三者的關係對應於物理網卡、子網卡、虛擬VLAN網卡的關係:
物理網卡:物理網卡這裏指的是服務器上實際的網絡接口設備,這裏我服務器上雙網卡,在系統中看到的2個物理網卡分別對應是eth0和eth1這兩個網絡接口。
 
子網卡:子網卡在這裏並非實際上的網絡接口設備,可是能夠做爲網絡接口在系統中出現,如eth0:一、eth1:2這種網絡接口。它們必需要依賴於物理網卡,雖然能夠與物理網卡的網絡接口同時在系統中存在並使用不一樣的IP地址,並且也擁有它們本身的網絡接口配置文件。可是當所依賴的物理網卡不啓用時(Down狀態)這些子網卡也將一同不能工做。
 
虛擬VLAN網卡:這些虛擬VLAN網卡也不是實際上的網絡接口設備,也能夠做爲網絡接口在系統中出現,可是與子網卡不一樣的是,他們沒有本身的配置文件。他們只是經過將物理網加入不一樣的VLAN而生成的VLAN虛擬網卡。若是將一個物理網卡經過vconfig命令添加到多個VLAN當中去的話,就會有多個VLAN虛擬網卡出現,他們的信息以及相關的VLAN信息都是保存在/proc/net/vlan/config這個臨時文件中的,而沒有獨自的配置文件。它們的網絡接口名是eth0.一、eth1.2這種名字。linux

 

注意:當須要啓用VLAN虛擬網卡工做的時候,關聯的物理網卡網絡接口上必須沒有IP地址的配置信息,而且,這些主物理網卡的子網卡也必須不能被啓用和必須不能有IP地址配置信息。這個在網上看到的結論根據個人實際測試結果來看是不許確的,物理網卡自己能夠綁定IP,而且給本徵vlan提供通訊網關的功能,但必須是在802.1q下。web

 

 

 

/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地址發送數據。操做系統會自動維護這個緩存。這就是整個實現 的關鍵。tcp

 

在eth0處引用別名,設置完子網掩碼便可
ifconfig eth0:0 166.111.69.100 netmask 255.255.255.0 up工具

 

此時查看網卡信息oop

 

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:一、eth0:2 ... .. eth1N。固然您爲eth1 指定多個IP地址,也就是 eth1:0、eth1:一、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 
注意:指定時,要爲每一個虛擬網卡指定不一樣的物理地址;

 

2. Lo

網絡配置必定須要有 環回接口,也就是loopback。

什麼接口是loopback?先看一個linux下面的配置:

[root@ZhouTianzuo ~]# ifconfig lo
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:2584 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2584 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:129200 (126.1 KiB)  TX bytes:129200 (126.1 KiB

從配置能夠看出,lo的mask僅爲8bit,也就是說,只要127開頭,任何網絡主機號均可以,也就是說環回接口能夠理解爲一個網絡號。

驗證一下,ping 127.0.0.1 127.0.1.1 127.1.1.1 126.1.1.1

linux:~ # ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.019 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.012 ms
^C
--- 127.0.0.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.012/0.015/0.019/0.005 ms
linux:~ # 
linux:~ # 
linux:~ # ping 127.0.1.1
PING 127.0.1.1 (127.0.1.1) 56(84) bytes of data.
64 bytes from 127.0.1.1: icmp_seq=1 ttl=64 time=0.015 ms
64 bytes from 127.0.1.1: icmp_seq=2 ttl=64 time=0.010 ms
^C
--- 127.0.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.010/0.012/0.015/0.004 ms
linux:~ # 
linux:~ # ping 127.1.1.1
PING 127.1.1.1 (127.1.1.1) 56(84) bytes of data.
64 bytes from 127.1.1.1: icmp_seq=1 ttl=64 time=0.014 ms
64 bytes from 127.1.1.1: icmp_seq=2 ttl=64 time=0.009 ms
64 bytes from 127.1.1.1: icmp_seq=3 ttl=64 time=0.010 ms
^C
--- 127.1.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.009/0.011/0.014/0.002 ms
linux:~ # 
linux:~ # ping 126.1.1.1
PING 126.1.1.1 (126.1.1.1) 56(84) bytes of data.
^C
--- 126.1.1.1 ping statistics ---
31 packets transmitted, 0 received, 100% packet loss, time 30238ms

linux:~ # 

能夠,127這網絡號下面的主機編址都是loopback。

繼續這個,咱們修改一下lo的地址,也是能夠的:

[root@ZhouTianzuo ~]# ifconfig lo 130.0.0.1

[root@ZhouTianzuo ~]# ifconfig lo
lo        Link encap:Local Loopback  
          inet addr:130.0.0.1  Mask:255.255.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:3363 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3363 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:169619 (165.6 KiB)  TX bytes:169619 (165.6 KiB)

[root@ZhouTianzuo ~]# 

這個時候,默認的掩碼變成了16bits,也就是網絡130.0的下面的全部的主機都是loopback了,再ping以前的127.0.0.1也就不可能通了:

[root@ZhouTianzuo ~]# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.

沒法通,這裏就不抓包了。

再看配置爲32bits的掩碼,會有什麼狀況:

[root@ZhouTianzuo ~]# ifconfig lo 130.0.0.1 netmask 255.255.255.255
[root@ZhouTianzuo ~]# 
[root@ZhouTianzuo ~]# ifconfig lo
lo        Link encap:Local Loopback  
          inet addr:130.0.0.1  Mask:255.255.255.255
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:3363 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3363 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:169619 (165.6 KiB)  TX bytes:169619 (165.6 KiB)

[root@ZhouTianzuo ~]# 

[root@ZhouTianzuo ~]# ping 130.0.0.1
PING 130.0.0.1 (130.0.0.1) 56(84) bytes of data.
64 bytes from 130.0.0.1: icmp_seq=1 ttl=64 time=0.186 ms
^C
--- 130.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 925ms
rtt min/avg/max/mdev = 0.186/0.186/0.186/0.000 ms
[root@ZhouTianzuo ~]# ping 130.0.0.2
PING 130.0.0.2 (130.0.0.2) 56(84) bytes of data.

明顯ping 130.0.0.2就沒有這個ip了。

總結:環回接口能夠配置,並且是一個網絡號,並不是主機號,除非把掩碼配置爲32bits。在tcp ip詳解裏面有說起,就是,net/2的實現,會把到不是徹底匹配ip的到lo的報文轉發,好比lo的配置爲127.0.0.1,到lo 127.0.0.2的報文就會轉發,如此就不對了。

相關文章
相關標籤/搜索