1. 程式人生 > >Linux之命令改ip

Linux之命令改ip

8.10開始,系統配置ip就比較複雜。原因是有個network-manager 管理軟體來管理ip,雖使ip配置簡單化了,但不是有效的配置。來自底層的配置才是王道。

首先需要刪除network-manager

sudo apt-get remove network-manager

其次   

下面用命令配置ip。

首先,必須弄清楚,我們設定的ip,都是儲存在一個檔案裡。DNS,儲存在另一個檔案裡。

ip儲存在/etc/network/interfaces 裡,就是interfaces 檔案中記錄著ip地址和網絡卡資訊。

DNS儲存在/etc/resolv.conf裡,resolv.conf記錄著DNS資訊。

第一步,開啟ip儲存檔案interfaces

下面開啟終端輸入

sudo gedit /etc/network/interfaces 

會彈出如下對話方塊

顯示內容(#後面是新增的註釋)如下:

auto lo   #lo介面在系統啟動時自動配置

iface lo inet loopback  #lo介面設定為本地環路地##址   相當於127.0.0.1

iface eth0 inet static #使用第一塊網絡卡,靜態ip

address 172.31.65.110  #這是ip 地址

netmask 255.255.0.0   #掩碼

gateway 172.31.65.1   #閘道器

auto eth0   #eth0介面在系統啟動時自動配置

第二步,在終端中輸入

gedit /etc/resolv.conf

彈出對話方塊

顯示內容

### BEGIN INFO

#

# Modified_by:  NetworkManager

# Process:      /usr/bin/NetworkManager

# Process_id:   5045

#

### END INFO

search private

nameserver 202.102.154.3   #DNS

nameserver 202.102.128.68  #DNS

第三步,重啟網絡卡驅動

sudo /etc/init.d/networking restart

參考網址:

這樣就沒有問題了

如果你之前沒有刪除NetworkManager網路管理的話,重啟後/etc/resolv.conf裡面的配置檔案又會被修改為

# Generated by NetworkManager

        導致又是使用DHCP動態分配IP地址的。

上面講解了配置ip和dns。有興趣的,可以閱讀下面的內容。

1,關於配置interfaces

話說Debian系的網絡卡配置跟Redhat系很不一樣,Redhat是放在/etc/sysconfig/network-scripts目錄下 面的一大堆檔案裡面,要修改?你一個一個檔案來過吧。Debian系的則是存在/etc/network/interfaces檔案裡面,無論有多少塊網 卡,統統扔在這個檔案裡。下面就來看一下這個檔案的內容。

首先,一個基本的配置大概是下面這個樣子:

  1 auto lo

  2 iface lo inet loopback

  3 

  4 # The primary network interface

  5 auto eth0

  6 iface eth0 inet static

  7      address 192.168.0.42

  8      network 192.168.0.0

  9      netmask 255.255.255.0

 10      broadcast 192.168.0.255

 11      gateway 192.168.0.1

上面的配置中,

1行跟第5行說明lo介面跟eth0介面會在系統啟動時被自動配置;

2行將lo介面設定為一個本地迴環(loopback)地址;

6行指出eth0介面具有一個靜態的(staticIP配置;

7-11行分別設定eth0介面的ip、網路號、掩碼、廣播地址和閘道器。

再來看一個更復雜點的:

 12 auto eth0

 13 iface eth0 inet static

 14     address 192.168.1.42

 15     network 192.168.1.0

 17     netmask 255.255.255.128

 18     broadcast 192.168.1.0

 19     up route add -net 192.168.1.128 netmask 255.255.255.128 gw 192.168.1.2

 20     up route add default gw 192.168.1.200

 21     down route del default gw 192.168.1.200

 22     down route del -net 192.168.1.128 netmask 255.255.255.128 gw 192.168.1.2

這次,有了一個複雜一些的掩碼,和一個比較奇怪的廣播地址。還有就是增加的介面啟用、禁用時的路由設定;

19行和20行配置的左右是在介面啟用的時候,新增一條靜態路由和一個預設路由;

21行和22行會在介面禁用的時候,刪掉這兩條路由配置。

至於配置路由的寫法,仔細看,它就是route命令嘛。

繼續,下面是一個物理網絡卡上多個介面的配置方法:

 23 auto eth0 eth0:1

 24 iface eth0 inet static

 25     address 192.168.0.100

 26     network 192.168.0.0

 27     netmask 255.255.255.0

 28     broadcast 192.168.0.255

 29     gateway 192.168.0.1

 30 iface eth0:1 inet static

 31     address 192.168.0.200

 32     network 192.168.0.0

 33     netmask 255.255.255.0

30行到33行在eth0上配置了另外一個地址,這種配置方法在配置一塊網絡卡多個地址的時候很常見:有幾個地址就配置幾個介面。冒號後面的數字可以隨便寫的,只要幾個配置的名字不重複就可以。

下面是pre-uppost-down命令時間。這是一組命令(pre-upuppost-uppre-downdownpost-down),分別定義在對應的時刻需要執行的命令。

 34 auto eth0

 35 iface eth0 inet dhcp

 36     pre-up [ -f /etc/network/local-network-ok ]

36行會在啟用eth0之前檢查/etc/network/local-network-ok檔案是否存在,如果不存在,則不會啟用eth0

再更進一步的例子:

 37 auto eth0 eth1

 38 iface eth0 inet static

 39     address 192.168.42.1

 40     netmask 255.255.255.0

 41     pre-up /path/to/check-mac-address.sh eth0 11:22:33:44:55:66

 42     pre-up /usr/local/sbin/enable-masq

 43 iface eth1 inet dhcp

 44     pre-up /path/to/check-mac-address.sh eth1 AA:BB:CC:DD:EE:FF

 45     pre-up /usr/local/sbin/firewall

41行和第44行中,check-mac-address.sh放在/usr/share/doc/ifupdown/examples/目錄 中,使用的時候需要給它加上可執行許可權。這兩行命令會檢測兩塊網絡卡的MAC地址是否為11:22:33:44:55:66和 AA:BB:CC:DD:EE:FF,如果正確,則啟用網絡卡。如果MAC地址錯誤,就不會啟用這兩塊網絡卡。

42行和第45行是假定在這兩塊網絡卡上分別執行的命令,你可以把它們替換成你想要的任何玩意 :)

手冊上說,這種方法主要是用來檢測兩塊網絡卡的MAC地址交換(If their MAC addresses get swapped),其實就是兩塊網絡卡名互換了,這種情況在debian系統上再常見不過了,主要是因為核心識別網絡卡的順序發生了變化。這個問題可以用下面 的這種方法來避免。

46 auto eth0 eth1

47 mapping eth0 eth1

48     script /path/to/get-mac-address.sh

49     map 11:22:33:44:55:66 lan

50     map AA:BB:CC:DD:EE:FF internet

51 iface lan inet static

52     address 192.168.42.1

53     netmask 255.255.255.0

54     pre-up /usr/local/sbin/enable-masq $IFACE

55 iface internet inet dhcp

56     pre-up /usr/local/sbin/firewall $IFACE

48行中的get-mac-address.sh也在/usr/share/doc/ifupdown/examples/目錄裡,也同樣要加可執行許可權。這個指令碼的作用,就是獲得每塊網絡卡的MAC地址。

這段配置首先配置了兩個邏輯介面(這個名詞的定義請參見laninternet,然後根據網絡卡的MAC地址,將邏輯介面對映(mapped)到物理介面上去。

再來看下面這段配置:

57 auto eth0 58 iface eth0 inet manual 59  up ifconfig $IFACE0.0.0.0 up 60  up /usr/local/bin/myconfigscript 61  down ifconfig $IFACE down 

這段配置只是啟用一個網絡卡,但是ifupdown不對這個網絡卡設定任何ip,而是由外部程式來設定ip

最後一段配置,這段配置啟用了網絡卡的混雜模式,用來當監聽介面。

177 auto eth0

178 iface eth0 inet manual

179     up ifconfig $IFACE0.0.0.0 up

180       up ip link set $IFACE promisc on

181       down ip link set $IFACE promisc off

182       down ifconfig $IFACE down

文章源自:

因為Ubuntu系統基於Debian核心,所以配置方法與debian相似,感興趣可以看:

有關ip配置檔案(interfaces)

2,關於配置resolv.conf

檔案/etc/resolv.conf配置DNS客戶,它包含了主機的域名搜尋順序和DNS伺服器的地址,每一行應包含一個關鍵字和一個或多個的由空格隔開的引數。下面是一個例子檔案:   search mydom.edu.cn  nameserver 210.34.0.14  nameserver 210.34.0.2  合法的引數及其意義如下:  nameserver 表明DNS伺服器的IP地址。可以有很多行的nameserver,每一個帶一個IP地址。在查詢時就按nameserver在本檔案中的順序進行,且只有當第一個nameserver沒有反應時才查詢下面的nameserver。   domain   宣告主機的域名。很多程式用到它,如郵件系統;當為沒有域名的主機進行DNS查詢時,也要用到。如果沒有域名,主機名將被使用,刪除所有在第一個點( .)前面的內容。   search   它的多個引數指明域名查詢順序。當要查詢沒有域名的主機,主機將在由search宣告的域中分別查詢。domain和search不能共存;如果同時存在,後面出現的將會被使用。   sortlist  允許將得到域名結果進行特定的排序。它的引數為網路/掩碼對,允許任意的排列順序。   Red Hat中沒有提供預設的/etc/resolv.conf檔案,它的內容是根據在安裝時給出的選項動態建立的。

有關DNS配置檔案(resolv.conf),感興趣可以看

http://blog.chinaunix.net/u2/60589/showart_1423592.html

宣告:本文件可以隨意更改,但必須署名原作者

作者:鳳凰舞者 qq:578989855