概述:熟悉了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網絡配置完全解析