linux網路基本知識
網路基本配置檔案
1. 網絡卡的配置檔案
系統網絡卡配置檔案位置/etc/sysconfig/network-scripts/ifcfg-
網絡卡eth0
檔案詳解:
DEVICE={name} #{name}表示網絡卡對應物理裝置的名字,eth0是第一塊網絡卡,雙網絡卡或更多依次為eth1,eth*
TYPE=Ethernet #網路型別,Ethernet代表乙太網
ONBOOT=yes/no #系統啟動引導時是否啟用該網路介面,設為yes,即啟用此裝置
NM_CONTROLLED=yes
UUID=dd69758a-a4fb-4fb6-9f52-a78dc97584ad 卡全域性唯一標示符
BOOTPROTO=none/static/bootp/dhcp #設定網絡卡獲得ip地址的方式,可能選項為none,static,bootp,dhcp,分別對應不適用協議,靜態指定ip地址,通過dhcp協議獲得ip地址,通過bootp協議獲得ip地址
HWADDR=50:e5:49:df:b0:8b #對應的網絡卡實體地址
DEFROUTE=yes #系統預設路由
PEERDNS=yes #是否允許網絡卡在啟動時向DHCP伺服器查詢DNS資訊,並自動覆蓋/etc/resolv.conf配置檔案
IPV4_FAILURE_FATAL=yes #強制使用
IPV6INIT=no #不適用IPV6
NAME=”System eth0” #名稱
其他配置:
IPADDR={address} #如果設定網絡卡獲得ip地址的方式為靜態指定,{addres}就代表賦給該網絡卡的ip地址
NETMASK={mask} #{mask}表示網絡卡對應的網路掩碼
NETWORK={address} #{address}表示網絡卡對應的網路地址,(可以不要)
GATEWAY={address} #{address}預設閘道器
DNS1=10.1.101.51 #DNS服務配置
BROADCAST={address} #{address}對應的子網廣播地址,如192.168.0.255(可以不要)
MACADDR={MAC-address} #{MAC-address}表示指定一個MAC地址
USERCTL=yes/no # 是否允許非root使用者控制該裝置
IPV6_AUTOCONF=no
MTU=1500 #最大傳輸單位的設定
2.DNS配置檔案
系統DNS配置檔案位置/etc/resolv.conf, DNS配置也可以在/etc/sysconfig/network-scripts/ifcfg-eth0中配置。
resolv.conf檔案用來配置DNS客戶端,它包含了DNS伺服器地址和域名搜尋配置。目前最多支援三個DNS伺服器。
nameserver ip #dns主機的ip地址
3.主機名配置檔案
主機名配置檔案位置/etc/sysconfig/network,
臨時修改主機名:hostname xxx
修改主機名:直接修改HOSTNAME=xxx
NETWORKING=yes #啟動時啟用聯網
4.閘道器配置檔案
閘道器配置檔案為/etc/sysconfig/network檔案
閘道器配置也可以在/etc/sysconfig/network-scripts/ifcfg-eth0中配置。
閘道器檢視:
Destination為0.0.0.0 對應的Gateway即為閘道器
network用來指定伺服器上的網路配置資訊,該檔案配置項含義如下:
NETWORK=yes #表示系統是否使用網路,一般設定為yes,如果設定為no,則不能使用網路,而且很多系統服務程式將無法啟動
RORWARD_IPV4=yes
HOSTNAME={hostname} #{hostname}表示伺服器的主機名,這裡的主機名要和/etc/hosts中設定的主機名對應
GAREWAY={address} #{address}設定本機連線的閘道器的IP地址,例如,閘道器10.0.0.2
GATEWAYDEV={device} #{device}表示閘道器的裝置名,如:eth0
NETWORK=yes/no #網路是否被配置
FORWARD_IPV4=yes/no #是否開啟IP轉發功能
5.主機名與ip埠對映
主機名與ip埠對映檔案位於/etc/hosts
在機器啟動時,在可用查詢DNS以前,機器需要查詢一些主機名到IP地址的匹配。這些資訊存放在/etc/hosts檔案中。在沒有域名伺服器的情況下,系統上所有的網路程式都通過查詢該檔案來解析對應於某個主機名的IP地址。
最左邊是一系列主機IP資訊,中間是一些列主機名。任何後面的列都是該主機的別名。
- 解析器查詢順序配置檔案
解析器查詢順序配置檔案位置/etc/host.conf, 表示先查詢本地hosts檔案,如果沒有結果,再嘗試查詢BIND dns伺服器
order hosts, bind 先是hosts,然後是bind
multi on
網路基本管理命令
網路的五個元素: MAC地址, IP地址, 網路掩碼, 閘道器, DNS
MAC地址也就是網絡卡的實體地址, 該地址是全球唯一的, 長度為六個位元組.
IP地址是四個位元組, 是分配給網絡卡的一個邏輯地址.
網路掩碼是三十二個位元組, 判斷一個地址是區域網還是廣域網, 如果是區域網在網內傳送, 如果是廣域網就傳送給閘道器.
DNS是講名字與IP地址相互轉化的一種服務.
網路基本管理:
Ifconfig、ping、netstat、route、tcpdump、nslookup、tracerout、 arp、ssh、scp、ftp、telnet
Ifconfig命令
ifconfig命令被用於配置和顯示Linux核心中網路介面的網路引數(臨時修改,配置檔案永久修改)
說明:
eth0表示第一塊網絡卡,其中HWaddr表示網絡卡的實體地址,可以看到目前這個網絡卡的實體地址(MAC地址)是00:16:3E:00:1E:51。
inet addr用來表示網絡卡的IP地址,此網絡卡的IP地址是10.160.7.81,廣播地址Bcast:10.160.15.255,掩碼地址Mask:255.255.240.0。
lo是表示主機的回壞地址,這個一般是用來測試一個網路程式,但又不想讓區域網或外網的使用者能夠檢視,只能在此臺主機上執行和檢視所用的網路介面。比如把 httpd伺服器的指定到回壞地址,在瀏覽器輸入127.0.0.1就能看到你所架WEB網站了。但只是您能看得到,區域網的其它主機或使用者無從知道。
• 第一行:連線型別:Ethernet(乙太網)HWaddr(硬體mac地址)。
• 第二行:網絡卡的IP地址、子網、掩碼。
• 第三行:UP(代表網絡卡開啟狀態)RUNNING(代表網絡卡的網線被接上)MULTICAST(支援組播)MTU:1500(最大傳輸單元):1500位元組。
• 第四、五行:接收、傳送資料包情況統計。
• 第七行:接收、傳送資料位元組數統計資訊。
啟動關閉指定網絡卡:
ifconfig eth0 up
ifconfig eth0 down
ifconfig eth0 up為啟動網絡卡eth0,ifconfig eth0 down為關閉網絡卡eth0。ssh登陸linux伺服器操作要小心,關閉了就不能開啟了,除非你有多網絡卡。
為網絡卡配置和刪除IPv6地址:
ifconfig eth0 add 33ffe:3240:800:1005::2/64 #為網絡卡eth0配置IPv6地址
ifconfig eth0 del 33ffe:3240:800:1005::2/64 #為網絡卡eth0刪除IPv6地址
用ifconfig修改MAC地址:
ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE
配置IP地址:
[[email protected] ~]# ifconfig eth0 192.168.2.10
[[email protected] ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0
[[email protected] ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255
啟用和關閉arp協議:
ifconfig eth0 arp #開啟網絡卡eth0 的arp協議
ifconfig eth0 -arp #關閉網絡卡eth0 的arp協議
設定最大傳輸單元:
ifconfig eth0 mtu 1500 #設定能通過的最大資料包大小為 1500 bytes
route命令
route命令用來顯示並設定Linux核心中的網路路由表,route命令設定的路由主要是靜態路由。要實現兩個不同的子網之間的通訊,需要一臺連線兩個網路的路由器,或者同時位於兩個網路的閘道器來實現。
在Linux系統中設定路由通常是為了解決以下問題:該Linux系統在一個區域網中,區域網中有一個閘道器,能夠讓機器訪問Internet,那麼就需要將這臺機器的ip地址設定為Linux機器的預設路由。要注意的是,直接在命令列下執行route命令來新增路由,不會永久儲存,當網絡卡重啟或者機器重啟之後,該路由就失效了;可以在/etc/rc.local中新增route命令來保證該路由設定永久有效。
語法
route(選項)(引數)
選項
-A:設定地址型別;
-C:列印將Linux核心的路由快取;
-v:詳細資訊模式;
-n:不執行DNS反向查詢,直接顯示數字形式的IP地址;
-e:netstat格式顯示路由表;
-net:到一個網路的路由表;
-host:到一個主機的路由表。
引數
Add:增加指定的路由記錄;
Del:刪除指定的路由記錄;
Target:目的網路或目的主機;
gw:設定預設閘道器;
mss:設定TCP的最大區塊長度(MSS),單位MB;
window:指定通過路由表的TCP連線的TCP視窗大小;
dev:路由記錄所表示的網路介面。
例項
顯示當前路由:
其中Flags為路由標誌,標記當前網路節點的狀態,Flags標誌說明:
• U Up表示此路由當前為啟動狀態。
• H Host,表示此閘道器為一主機。
• G Gateway,表示此閘道器為一路由器。
• R Reinstate Route,使用動態路由重新初始化的路由。
• D Dynamically,此路由是動態性地寫入。
• M Modified,此路由是由路由守護程式或導向器動態修改。
• ! 表示此路由當前為關閉狀態。
新增閘道器/設定閘道器:
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 #增加一條到達244.0.0.0的路由。
遮蔽一條路由:
route add -net 224.0.0.0 netmask 240.0.0.0 reject #增加一條遮蔽的路由,目的地址為224.x.x.x將被拒絕。
刪除路由記錄:
route del -net 224.0.0.0 netmask 240.0.0.0
route del -net 224.0.0.0 netmask 240.0.0.0 reject
刪除和新增設定預設閘道器:
route del default gw 192.168.120.240
route add default gw 192.168.120.240
ping命令
ping命令用來測試主機之間網路的連通性。執行ping指令會使用ICMP傳輸協議,發出要求迴應的資訊,若遠端主機的網路功能沒有問題,就會迴應該資訊,因而得知該主機運作正常。
選項
-d:使用Socket的SO_DEBUG功能;
-c<完成次數>:設定完成要求迴應的次數;
-f:極限檢測;
-i<間隔秒數>:指定收發資訊的間隔時間;
-I<網路介面>:使用指定的網路介面送出資料包;
-l<前置載入>:設定在送出要求資訊之前,先行發出的資料包;
-n:只輸出數值;
-p<範本樣式>:設定填滿資料包的範本樣式;
-q:不顯示指令執行過程,開頭和結尾的相關資訊除外;
-r:忽略普通的Routing Table,直接將資料包送到遠端主機上;
-R:記錄路由過程;
-s<資料包大小>:設定資料包的大小;
-t<存活數值>:設定存活數值TTL的大小;
-v:詳細顯示指令的執行過程。
引數
目的主機:指定傳送ICMP報文的目的主機。
例項
— host.1.linuxde.net ping statistics —
4 packets transmitted, 4 received, 0% packet loss, time 2998ms
rtt min/avg/max/mdev = 174.068/176.916/178.182/1.683 ms
netstat命令
netstat命令用來列印Linux中網路系統的狀態資訊,可讓你得知整個Linux系統的網路情況。
列出所有埠 (包括監聽和未監聽的)
netstat -a #列出所有埠
netstat -at #列出所有tcp埠
netstat -au #列出所有udp埠
列出所有處於監聽狀態的 Sockets
netstat -l #只顯示監聽埠
netstat -lt #只列出所有監聽 tcp 埠
netstat -lu #只列出所有監聽 udp 埠
netstat -lx #只列出所有監聽 UNIX 埠
顯示每個協議的統計資訊
netstat -s 顯示所有埠的統計資訊
netstat -st 顯示TCP埠的統計資訊
netstat -su 顯示UDP埠的統計資訊
在netstat輸出中顯示 PID 和程序名稱
netstat -pt
netstat -p可以與其它開關一起使用,就可以新增“PID/程序名稱”到netstat輸出中,這樣debugging的時候可以很方便的發現特定埠執行的程式。
在netstat輸出中不顯示主機,埠和使用者名稱(host, port or user)
當你不想讓主機,埠和使用者名稱顯示,使用netstat -n。將會使用數字代替那些名稱。同樣可以加速輸出,因為不用進行比對查詢。
netstat -an
如果只是不想讓這三個名稱中的一個被顯示,使用以下命令:
netsat -a –numeric-ports
netsat -a –numeric-hosts
netsat -a –numeric-users
持續輸出netstat資訊
netstat -c #每隔一秒輸出網路資訊
顯示核心路由資訊
netstat -r
使用netstat -rn顯示數字格式,不查詢主機名稱。
找出程式執行的埠
並不是所有的程序都能找到,沒有許可權的會不顯示,使用 root 許可權檢視所有的資訊。
netstat -ap | grep ssh
找出執行在指定埠的程序:
netstat -an | grep ‘:80’
顯示網路介面列表
netstat -i
顯示詳細資訊,像是ifconfig使用netstat -ie。
IP和TCP分析
檢視連線某服務埠最多的的IP地址:
netstat -ntu | grep :80 | awk ‘{print 5}' | cut -d: -f1 | awk '{++ip[1]} END {for(i in ip) print ip[i],”\t”,i}’ | sort -nr
TCP各種狀態列表:
netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk ‘/^tcp/ {++state[$NF]} END {for(i in state) print i,”\t”,state[i]}’
檢視phpcgi程序數,如果接近預設值,說明不夠用,需要增加:
netstat -anpo | grep “php-cgi” | wc -l
traceroute命令
traceroute命令用於追蹤資料包在網路上的傳輸時的全部路徑,它預設傳送的資料包大小是40位元組。
通過traceroute我們可以知道資訊從你的計算機到網際網路另一端的主機是走的什麼路徑。當然每次資料包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。
traceroute通過傳送小的資料包到目的裝置直到其返回,來測量其需要多長時間。一條路徑上的每個裝置traceroute要測3次。輸出結果中包括每次測試的時間(ms)和裝置的名稱(如有的話)及其ip地址。
具體引數格式:traceroute [-dFlnrvx][-f<存活數值>][-g<閘道器>…][-i<網路介面>][-m<存活數值>][-p<通訊埠>][-s<來源地址>][-t<服務型別>][-w<超時秒數>][主機名稱或IP地址][資料包大小]
記錄按序列號從1開始,每個紀錄就是一跳 ,每跳錶示一個閘道器,我們看到每行有三個時間,單位是ms,其實就是-q的預設引數。探測資料包向每個閘道器傳送三個資料包後,閘道器響應後返回的時間;如果用traceroute -q 4 www.58.com,表示向每個閘道器傳送4個數據包。
有時我們traceroute一臺主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火牆封掉了ICMP的返回資訊,所以我們得不到什麼相關的資料包返回資料。
有時我們在某一閘道器處延時比較長,有可能是某臺網關比較阻塞,也可能是物理裝置本身的原因。當然如果某臺DNS出現問題時,不能解析主機名、域名時,也會 有延時長的現象;您可以加-n引數來避免DNS解析,以IP格式輸出資料。
如果在區域網中的不同網段之間,我們可以通過traceroute 來排查問題所在,是主機的問題還是閘道器的問題。如果我們通過遠端來訪問某臺伺服器遇到問題時,我們用到traceroute 追蹤資料包所經過的閘道器,提交IDC服務商,也有助於解決問題
nslookup命令
nslookup命令是常用域名查詢工具,就是查DNS資訊用的命令。
nslookup4有兩種工作模式,即“互動模式”和“非互動模式”。在“互動模式”下,使用者可以向域名伺服器查詢各類主機、域名的資訊,或者輸出域名中的主機列表。而在“非互動模式”下,使用者可以針對一個主機或域名僅僅獲取特定的名稱或所需資訊。
進入互動模式,直接輸入nslookup命令,不加任何引數,則直接進入互動模式,此時nslookup會連線到預設的域名伺服器(即/etc/resolv.conf的第一個dns地址)。或者輸入nslookup -nameserver/ip。進入非互動模式,就直接輸入nslookup 域名就可以了。
arp命令
arp命令用於操作主機的arp緩衝區,它可以顯示arp緩衝區中的所有條目、刪除指定的條目或者新增靜態的ip地址與MAC地址對應關係。
-a<主機>:顯示arp緩衝區的所有條目;
-H<地址型別>:指定arp指令使用的地址型別;
-d<主機>:從arp緩衝區中刪除指定主機的arp條目;
-D:使用指定介面的硬體地址;
-e:以Linux的顯示風格顯示arp緩衝區中的條目;
-i<介面>:指定要操作arp緩衝區的網路介面;
-s<主機>