1. 程式人生 > >Linux ip命令詳解

Linux ip命令詳解

ip 是個命令, ip 命令的功能很多!基本上它整合了 ifconfig 與 route 這兩個命令,不過ip 的功能更強大! 如果您有興趣的話,請自行 vi /sbin/ifup 就知道整個 ifup 就是利用 ip 這個命令來實現的。下面介紹一下使用方法

[[email protected] ~]# ip [option] [動作] [命令]

引數:

option :設定的引數,主要有:

     -s :顯示出該裝置的統計資料(statistics),例如總接受封包數等;

  動作:就是是可以針對哪些網路引數進行動作,包括有:

       link :關於裝置 (device) 的相關設定,包括 MTU, MAC 地址等等

       addr/address :關於額外的 IP 設定,例如多 IP 的實現等等;

       route :與路由有關的相關設定 

由上面的語法我們可以知道, ip 除了可以設定一些基本的網路引數之外,還能夠進行額外的 IP 設定, 包括多 IP 的實現,真是太完美了!下面我們就分三個部分 (link, addr, route) 來介紹這個 ip 命令。

--------------------------------------------------------------------------------  

關於裝置(device) 的相關設定: ip link 

ip link 可以設定與裝置 (device) 有關的相關設定,包括 MTU 以及該網路裝置的 MAC 等等, 當然也可以啟動 (up) 或關閉 (down) 某個網路裝置。整個語法是這樣的:

[[email protected] ~]# ip [-s] link show <== 單純的查閱該裝置相關的資訊

[[email protected] ~]# ip link set [device] [動作與引數]

引數:

show:僅顯示出這個裝置的相關內容,如果加上 -s 會顯示更多統計資料;

set :可以開始設定專案, device 指的是 eth0, eth1 等等裝置代號;

動作與引數:包括以下動作:

   up|down :啟動 (up) 或關閉 (down) 某個裝置,其他引數使用預設的乙太網引數;

   address :如果這個裝置可以更改 MAC ,用這個引數修改;

   name     :給予這個裝置一個特殊的名字;

   mtu      :設定最大傳輸單元。 

範例一:顯示出所有的裝置資訊

[[email protected] ~]# ip link show

1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff

3: sit0: <NOARP> mtu 1480 qdisc noop

    link/sit 0.0.0.0 brd 0.0.0.0 

[[email protected] ~]# ip -s link show eth0

2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff

    RX: bytes packets errors dropped overrun mcast

    484011792 2247372 0       0       0       0

    TX: bytes packets errors dropped carrier collsns

    2914104290 2867753 0       0       0       0 

使用 ip link show 可以顯示出整個裝置的硬體相關資訊,如上所示,包括 MAC地址、MTU等等, 比較有趣的應該是那個 sit0 的裝置了,那個 sit0 的裝置是將IPv4 和 IPv6 的封包進行轉換, 對於我們僅使用 IPv4 的網路是沒有作用的。 lo 及 sit0 都是主機內部自行設定的。 而如果加上 -s 的引數後,則這個網絡卡的相關統計資訊就會被列出來, 包括接收 (RX) 及傳送 (TX) 的封包數量等等,詳細的內容與 ifconfig 所輸出的結果相同。

範例二:啟動、關閉與設定裝置的相關資訊

[[email protected] ~]# ip link set eth0 up

# 啟動eth0這個裝置; 

[[email protected] ~]# ip link set eth0 down

# 關閉eth0這個裝置; 

[[email protected] ~]# ip link set eth0 mtu 1000

# 更改 MTU為1000 bytes,單位就是 bytes 。

更新網絡卡的 MTU 使用 ifconfig 也可以實。如果是要更改『網絡卡代號、 MAC 地址的資訊』的話,那可就得使用 ip了,設定前需要先關閉該網絡卡,否則會不成功。 如下所示:

範例三:修改網絡卡代號、MAC 等引數

[[email protected] ~]# ip link set eth0 name vbird

SIOCSIFNAME: Device or resource busy

# 因為該裝置目前是啟動的,所以不能這樣做設定。你應該要這樣做: 

[[email protected] ~]# ip link set eth0 down       <==關閉裝置

[[email protected] ~]# ip link set eth0 name vbird <==重新設定

[[email protected] ~]# ip link show                <==檢視資訊

2. vbird: <BROADCAST,MILTICASE> mtu 900 qdisc pfifo_fast qlen 1000

    link/ehter 00:40:d0:13:c3:46 brd ff:ff:ff:ff:ff:ff

# 呵呵,連網絡卡代號都可以改變!不過,玩玩後記得改回來啊!

# 因為我們的 ifcfg-eth0 還是使用原本的裝置代號!避免有問題,要改回來

[[email protected] ~]# ip link set vbird name eth0 <==裝置改回來 

[[email protected] ~]# ip link set eth0 address aa:aa:aa:aa:aa:aa

[[email protected] ~]# ip link show eth0

# 如果你的網絡卡支援MAC更改的話,

# 那麼上面這個命令就可以更改你的網絡卡MAC了!

# 不過,還是那句老話,測試完之後請立刻改回來! 

在這個裝置的硬體相關資訊設定,上面包括 MTU, MAC 以及傳輸的模式等等,都可以在這裡設定。 有趣的是那個 address 的專案,那個專案後面接的可是MAC地址而不是IP地址很容易搞錯啊!切記切記!更多的硬體引數可以使用 man ip 查閱一下與 ip link 有關的設定。 

-------------------------------------------------------------------------------- 

關於額外的 IP 相關設定: ip address 

如果說 ip link 是與 OSI 七層模型的第二層資料鏈路層有關的話,那麼 ip address (ip addr) 就是與第三層網路層有關的了。主要是在設定與 IP 有關的各項引數,包括 netmask, broadcast 等等。

[[email protected] ~]# ip address show   <==檢視IP引數

[[email protected] ~]# ip address [add|del] [IP引數] [dev 裝置名] [相關引數]

引數:

show  :單純的顯示出裝置的 IP 資訊;

add|del :進行相關引數的增加 (add) 或刪除 (del) 設定,主要有:

IP 引數 :主要就是網域的設定,例如 192.168.100.100/24 之類的設定;

dev :這個 IP 引數所要設定的裝置,例如 eth0, eth1 等等;

 相關引數:如下所示:

        broadcast:設定廣播位址,如果設定值是 + 表示讓系統自動計算;

        label    :該裝置的別名,例如eth0:0;

        scope    :這個裝置的領域,通常是以下幾個大類:

                   global :允許來自所有來源的連線;

                   site   :僅支援IPv6 ,僅允許本主機的連線;

                   link   :僅允許本裝置自我連線;

                   host   :僅允許本主機內部的連線;

                   所以當然是使用 global 了。預設也是 global ! 

範例一:顯示出所有裝置的 IP 引數:

[[email protected] ~]# ip address show

1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0

    inet6 fe80::250:fcff:fe22:9acb/64 scope link

       valid_lft forever preferred_lft forever

3: sit0: <NOARP> mtu 1480 qdisc noop

    link/sit 0.0.0.0 brd 0.0.0.0 

下面我們進一步來新增虛擬的網路裝置:

範例二:新增一個裝置,名稱假設為 eth0:vbird 

[[email protected] ~]# ip address add 192.168.50.50/24 broadcast + /

> dev eth0 label eth0:vbird

[[email protected] ~]# ip address show eth0

2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:40:d0:13:c3:46 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0

    inet 192.168.50.50/24 brd 192.168.50.255 scope global eth0:vbird

    inet6 fe80::240:d0ff:fe13:c346/64 scope link

       valid_lft forever preferred_lft forever

# 看上面的輸出多出了一行,增加了新的裝置,名稱是 eth0:vbird

# 至於那個 broadcast + 也可以寫成 broadcast 192.168.50.255 。

[[email protected] ~]# ifconfig

eth0:vbir Link encap:Ethernet HWaddr 00:40:D0:13:C3:46

          inet addr:192.168.50.50 Bcast:192.168.50.255 Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

          Interrupt:5 Base address:0x3e00

# 如果使用 ifconfig 就能夠看到這個怪東西了!

範例三:將剛剛的裝置刪除 

[[email protected] ~]# ip address del 192.168.50.50/24 dev eth0

# 刪除比較簡單。

-------------------------------------------------------------------------------- 

關於路由的設定: ip route 

這個專案就是路由的檢視與設定。事實上ip route 的功能幾乎與 route 這個命令一樣,但是,它還可以進行額外的引數設定,例如 MTU 的規劃等等,相當的強悍啊!

[[email protected] ~]# ip route show <==單純的顯示出路由的設定

[[email protected] ~]# ip route [add|del] [IP或網域] [via gateway] [dev 裝置]

引數:

show :單純的顯示出路由表,也可以使用 list ;

add|del :增加 (add) 或刪除 (del) 路由;

    IP或網域:可使用 192.168.50.0/24 之類的網域或者是單純的 IP ;

    via     :從那個 gateway 出去,不一定需要;

    dev     :由那個裝置連出去,需要;

    mtu     :可以額外的設定 MTU 的數值; 

範例一:顯示出目前的路由資料

[[email protected] ~]# ip route show

192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2

169.254.0.0/16 dev eth1 scope link

default via 192.168.1.254 dev eth1 

如上表所示,最簡單的功能就是顯示出目前的路由資訊,其實跟 route 這個命令相同。必須注意的幾點: 

proto:此路由的路由協定,主要有 redirect, kernel, boot, static, ra 等, 其中 kernel 指的是直接由核心判斷自動設定。 

scope:路由的範圍,主要是 link ,是與本裝置有關的直接連線。

再來看一下如何進行路由的增加與刪除:

範例二:增加路由,主要是本機直接可溝通的網域

[[email protected] ~]# ip route add 192.168.5.0/24 dev eth0

# 針對本機直接溝通的網域設定好路由,不需要透過外部的路由器

[[email protected] ~]# ip route show

192.168.5.0/24 dev eth0 scope link

....以下省略.... 

範例三:增加可以通往外部的路由,需透過 router ;

[[email protected] ~]# ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0

[[email protected] ~]# ip route show

192.168.5.0/24 dev eth0 scope link

....其他省略....

192.168.10.0/24 via 192.168.5.100 dev eth0

# 仔細,因為我有 192.168.5.0/24 的路由存在 (與我的網絡卡直接相關),

# 所以才可以將 192.168.10.0/24 的路由丟給 192.168.5.100 

# 那部主機來幫忙傳遞!與之前提到的 route 命令是一樣的限制! 

範例四:增加預設路由

[[email protected] ~]# ip route add default via 192.168.1.2 dev eth0

# 那個 192.168.1.2 就是我的預設路由器(gateway);

# 記住,只要一個預設路由就OK了; 

範例五:刪除路由

[[email protected] ~]# ip route del 192.168.10.0/24

[[email protected] ~]# ip route del 192.168.5.0/24 

事實上,這個 ip 的命令實在是太博大精深了!剛接觸 Linux 網路的朋友,可能會看到有點暈!您先會使用 ifconfig, ifup , ifdown 與 route 即可, 等以後有經驗了之後,再繼續回來玩 ip 這個好玩的命令吧!有興趣的話,也可以自行參考 ethtool 這個命令!

相關推薦

Linux ip命令

ip 是個命令, ip 命令的功能很多!基本上它整合了 ifconfig 與 route 這兩個命令,不過ip 的功能更強大! 如果您有興趣的話,請自行 vi /sbin/ifup 就知道整個 ifup 就是利用 ip 這個命令來實現的。下面介紹一下使用方法 [[ema

Linux netstat命令,高級面試必備

bytes tool head osi ngs 進行 pen 通信 詳細信息 簡介 Netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerade 連接,多播成員 (Multicast Mem

linux top 命令

ctrl+ 一次 所有 使用方法 ase 隱藏 統計 ini 前臺 top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。下面詳細介紹它的使用方法。top - 01:06:48 up 1:22, 1 user

【轉】linux awk命令

column 環境變量 最後一行 工作流程 初始 文本文件 for循環 其中 cti 簡介 awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切

Linux ls命令

-c 目錄 輸出 限制 普通 排序 當前 ls -l sna ls 命令可以說是Linux下最常用的命令之一。 -a 列出目錄下的所有文件,包括以 . 開頭的隱含文件。(後有詳解)-b 把文件名中不可輸出的字符用反斜杠加字符編號(就象在c語言裏一樣)的形式列出。-c 輸出

linux lsof命令

open 日誌 文件和目錄 delete 數據報 正在 某個文件 alt targe 簡介 lsof(list open files)是一個列出當前系統打開文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件

linux tail 命令

基本 linux中 file tail命令 方式 sed 缺省 顯示 有效 linux ---tail命令 linux中tail命令---用於查看文件內容 最基本的是cat、more和less。 1. 如果你只想看文件的前5行,可以使用head命令,如: head -5 /

linux screen 命令

文本 常用 小時 遠程終端 參考 編輯 load 調整 長時間 一、背景 系統管理員經常需要SSH 或者telent 遠程登錄到Linux 服務器,經常運行一些需要很長時間才能完成的任務,比如系統備份、ftp 傳輸等等。通常情況下我們都是為每一個這樣的任務開一個遠程終端窗口

[轉載]linux awk命令

基本 特定 收集 comm rip 解釋 文本 工作流程 復制代碼 簡介 awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各

Linux crontab命令

條件 nta mman minute 使用 1-1 同時 刪除用戶 設置 1.crontab命令概覽      命令參數:   -u user:用來設定某個用戶的crontab服務,例如,“-u ixdba”表示設定ixdba用戶的crontab服務,此參數一般有root用

linux top命令

swa mem img 針對 alt 線程 opp 分區 緩存 Linux系統可以通過top命令查看系統的CPU、內存、運行時間、交換分區、執行的線程等信息。通過top命令可以有效的發現系統的缺陷出在哪裏。是內存不夠、CPU處理能力不夠、IO讀寫過高。

Linux netstat命令

訪問 ast osi cmp internet mtu www unix ngs Linux netstat命令詳解 簡介 Netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerade 連

linux awk命令

列數 才會 遍歷數組 文本文件 信息 shell腳本 == game 入門 簡介 awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分

Linux route命令和使用,以及網卡命令

linux 路由 網卡一 路由的基礎知識:1)路由概念路由: 跨越從源主機到目標主機的一個互聯網絡來轉發數據包的過程路由器:能夠將數據包轉發到正確的目的地,並在轉發過程中選擇最佳路徑的設備路由表:在路由器中維護的路由條目,路由器根據路由表做路徑選擇直連路由:當在路由器上配置了接口的IP地址,並且接口狀態為

[linux]vmstat命令-顯示虛擬內存狀態

span 並不是 增加 OS 表現 如果 2個 blog IT 本文轉載於http://man.linuxde.net/vmstat vmstat命令的含義為顯示虛擬內存狀態(“Viryual Memor Statics”),但是它可以報告關於進程、內存、I/O等系統整

Linux curl命令

cookied current form eat -o party tp服務器 cap lin 命令:curl 在Linux中curl是一個利用URL規則在命令行下工作的文件傳輸工具,可以說是一款很強大的http命令行工具。它支持文件的上傳和下載,是綜合傳輸工具,但按傳統,

linux yum命令

參數 string sound 修改 最新 metadata inux dep logs linux yum命令詳解 yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管

Linux nmap命令

http 默認 inux ping主機 ip地址 log alt flags ipv 1,nmap命令是一款開放源代碼的網絡探測和安全審核工具,它的設計目標是快速地掃描大型網絡。 2,語法nmap(選項)(參數) 3,選項-O:激活操作探測;-P0:值進行掃描,不ping主

Linux blkid命令

tom 展示 true tool spl als bubuko root 系統類型 blkid命令對查詢設備上所采用文件系統類型進行查詢。blkid主要用來對系統的塊設備(包括交換分區)所使用的文件系統類型、LABEL、UUID等信息進行查詢。要使用這個命令必須安裝e2f

Linux mount命令

沒有 使用 OS linu rfs man lap adfs 信息 mount命令用於加載文件系統到指定的加載點。此命令的也常用於掛載cdrom,使我們可以訪問cdrom中的數據,因為你將光盤插入cdrom中,Linux並不會自動掛載,必須使用Linux mount命令來手