天天看點

linux網絡配置完全解析一、網絡連接配接的基本原理2.配置方法

概述:熟悉了windows下面的網絡配置,對linux下的網絡配置缺未必了解透徹。熟練掌握linux下的網絡配置原理,能幫助我們更容易掌握網絡傳輸原理;同時具備一些網絡連接配接不通對應問題的排查能力。文本主要為你講解網絡連接配接的基本原理,配置方法,常見錯誤的解決方法等。

一、網絡連接配接的基本原理

1)實體層面:首先保證你的pc具備連接配接到internet的基本實體鍊路,網卡

2)軟體層面:網卡mac位址,ip位址,路由表,dns伺服器

3)連結過程:

資料包的流動順序如下:

本地應用程式——網卡——網關——外部路由器——目的主機

可以使用linux下的traceroute檢視:

1  10.10.18.254 (10.10.18.254)  0.523 ms  0.745 ms  0.929 ms
 2  159.226.41.190 (159.226.41.190)  4.881 ms  4.918 ms  5.088 ms
 3  192.168.200.1 (192.168.200.1)  5.516 ms  5.586 ms  5.507 ms
 4  159.226.43.36 (159.226.43.36)  6.483 ms  6.179 ms  6.659 ms
 5  192.168.46.49 (192.168.46.49)  5.858 ms  5.635 ms  5.844 ms
 6  159.226.253.77 (159.226.253.77)  6.136 ms  1.811 ms  5.088 ms
 7  159.226.253.46 (159.226.253.46)  28.114 ms  28.009 ms  28.049 ms
 8  219.142.17.37 (219.142.17.37)  8.392 ms  7.493 ms  8.678 ms
 9  219.142.9.110 (219.142.9.110)  832.102 ms  832.619 ms  832.096 ms<span style="font-size:14px;">
</span>
           

其中,本地應用程式資料能否發送到網卡取決于核心;

網卡能否發送到網關——》網卡ip配置和本機路由表配置

網卡能否發送到路由器——》網關配置

外部路由器能否發送到目的主機——》路由配置情況和目的主機

2.配置方法

1 )測試網卡與整個核心的網絡服務是否正常:ping localhost

這個指令是ping本機,如果暢通,說明網卡和核心提供的相關服務是正常的,這一點一般都可以滿足

2)測試與網關的連接配接是否暢通

在終端輸入route   -n指令,可以檢視預設網關位址,然後ping這個位址檢視相關ip位址和mac位址

br0       Link encap:Ethernet  HWaddr 00:25:90:63:84:6A  
          inet addr:10.10.129.92  Bcast:10.10.129.255  Mask:255.255.255.0
          inet6 addr: 2001:470:f822:d0:225:90ff:fe63:846a/64 Scope:Global
          inet6 addr: 2001:cc0:2026:c000:225:90ff:fe63:846a/64 Scope:Global
          inet6 addr: fe80::225:90ff:fe63:846a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:584156 errors:0 dropped:0 overruns:0 frame:0
          TX packets:62887 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:57043629 (54.4 Mb)  TX bytes:60873751 (58.0 Mb)

eth0      Link encap:Ethernet  HWaddr 00:25:90:63:84:6A  
          inet6 addr: 2001:cc0:2026:c000:225:90ff:fe63:846a/64 Scope:Global
          inet6 addr: 2001:470:f822:d0:225:90ff:fe63:846a/64 Scope:Global
          inet6 addr: fe80::225:90ff:fe63:846a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:585455 errors:0 dropped:0 overruns:0 frame:0
          TX packets:67453 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:65406243 (62.3 Mb)  TX bytes:61197875 (58.3 Mb)
          Memory:fade0000-fae00000 
           

如上圖,會出現本機的相關虛拟和實體的網絡裝置的相關配置

3)如何修改mac位址?

情景:一些地方,往往需要我們将mac和ip綁定才能進行上網,此時我們需要進行mac位址的綁定,操作如下:

#ifconfig eth0 down 

先把網卡禁用 

再用ifconfig eth0 hw ether 1234567890ab 

這樣就可以改成功了

要想永久改就這樣

在/etc/rc.d/rc.local裡加上這三句(也可以在/etc/init.d/network裡加下面三行):實際上是設定了開機自動運作

ifconfig eth0 down

ifconfig eth0 hw ether 1234567890ab 

ifconfig eht0 up

4)如何配置DNS

/etc/hosts                 // 配置本機主機名,可以省略
/etc/host.conf            // 必須的,本地dns用戶端的配置檔案
/etc/resolv.conf          // 必須的, 配置dns伺服器位址      
sudo /etc/init.d/network restart




5)如何配置路由表

我們先來看看一個傳統的路由表:


       
$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.10.18.254    0.0.0.0         UG    0      0        0 eth0
10.10.0.0       0.0.0.0         255.255.0.0     U     1      0        0 eth0
10.122.0.0      0.0.0.0         255.255.252.0   U     2      0        0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
           
我們來解釋以下路由表的功能:192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0表示,發送到192.168.122.x這個網段的資料包,不需要禁果gateway,二十直接廣播,通過的裝置是virbr0 0.0.0.0         10.10.18.254    0.0.0.0         UG    0      0        0 eth0 10.10.0.0       0.0.0.0         255.255.0.0     U     1      0        0 eth0 這兩行要特别注意: 1)第二行表示發送到10.10.x.x這個網段的位址,會經過eth0廣播出去; 2)第一行表示,如果一個網段的位址不再其他的網段裡面,經過eth0發送到預設網關10.10.18.254;這個地方有一個需要特别注意的地方,如果這個網關位址是不可達的(去掉第二行,它就不可達了),此時如果添加這個路由器,将會出現錯誤提示:“no such process” 在添加一個新的網段時,它的出口位址應該是目前ip routing table表中的目前有的位址,否則會出現這個錯誤:SIOCADDRT: 沒有那個程序。第一點中使用第二個指令時,網關是預設的default gw,是以可以使用了。突然間想起鳥哥私房菜裡的那句話了, “透過 route add 來增加一個路由!請注意,這個路由必須要能夠與你互通”和“你隻要記得,當出現『SIOCADDRT: Network is unreachable』 這個錯誤時,肯定是由於 gw 後面接的 IP 無法直接與您的網域溝通 (Gateway 並不在你的網域內), 是以,趕緊檢查一下是否輸入錯誤啊!加油吧!” 增加一條路由記錄: route add -net 192.168.1.50 netmask 255.255.255.0 dev eth0 增加一個預設網關:route add default gw 10.10.18.254 eth0 6)如何修改IP位址 #ifconfig ethe0 down #ifconfig ethe0 192.168.169.245 netmask 255.255.255.0 以上的方法下次啟動時就無效了 如果要以後每次都生效則加入到以下檔案裡面 在/etc/sysconfig/network-scripts/下修改ifcfg-eth0位址 一塊網卡添加兩個ip位址 ifconfig eth0:1 192.168.1.1 netmask 255.255.255.0 ifconfig eth0:2 192.168.1.2 netmask 255.255.255.0 以上是對網卡eth0修改了兩個IP位址的方法 或者修改配置檔案(redhat系列):
#/etc/sysconfig/network-scripts/ifcfg-eth0:

DEVICE=eth0

BOOTPROT=static

BROADCAST=192.168.1.255

IPADDR=192.168.1.10

NETMASK=255.255.255.0

NETWORK=192.168.1.0

HWADDR=52:54:AB:2F:CF:F0

GATEWAY=192.168.1.1

ONBOOT=on

TYPE=Ethernet
           
ubuntu系列的linux下ip設定如下:
 Ubuntu 網卡設定,ip,mask,gateway,dns


       
sudo vi /etc/network/interfaces

 //這個應該是決定是否啟用這個端口

 auto eth0 

//靜态設定IP 

iface eth0 inet static

address 172.16.146.200

netmask 255.255.255.0

#broadcast 172.16.146.255

gateway 172.16.146.254

//通過dhcp動态設定

iface eth0 inet dhcp
           

3.第三方網絡配置

所謂第三方的網絡配置,指的是一些應用層的軟體,比如qemu或者kvm在運作的時候會模拟出一個虛拟的網橋或者網卡,然後用這個來完成網絡連結。其中,虛拟的網絡裝置也可以用ifconfig指令看到,但是不能用service networking restart 進行自動關閉和開始。      

3.1KVM 虛拟機網路配置

一般情況下,kvm虛拟機會先建立一個網橋,然後将虛拟網卡都綁定在網橋上,而虛拟網橋和主機之間進行nat連接配接。

/etc/libvirt/qemu/networks/
           
<network>
  <name>default</name>
  <uuid>0808119a-c214-496d-a90b-5a30c8fade83</uuid>
  <bridge name="virbr0" />
  <mac address='DC:0E:A1:69:34:9C'/>
  <forward/>
  <ip address="10.18.28.3" netmask="255.255.0.0">
    <dhcp>
      <range start="10.18.111.100" end="10.18.111.200" />
    </dhcp>
  </ip>
</network>
           
而每一個虛拟網卡,被綁定在哪個網橋之上,是借助于針對每個虛拟機的配置檔案來進行的:      
vim /etc/libvirt/qemu/ubuntu64.xml
           
<interface type='bridge'>
      <mac address='52:54:00:f0:26:b3'/>
      <source bridge='virbr0'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
           
總結:ifconfig 是一個配置網絡的萬能鑰匙,不過我們一般隻使用這個指令來檢視網絡。ifcfg是臨時配置ip,進行調試的利器,可以用于臨時的ip制定等功能。ifup和ifdown可以用于打開或者關閉一個網絡接口。如果需要配置DNS,可以設定/etc/resolv.conf,或者直接在ifcfg-eth檔案中設定DNS1,DNS2選項。      

 本文來源:誰不小心的CSDN部落格 linux網絡配置完全解析

繼續閱讀