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介面具有一個靜態的(static)IP配置;
第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-up和post-down命令時間。這是一組命令(pre-up、up、post-up、pre-down、down、post-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地址。
這段配置首先配置了兩個邏輯介面(這個名詞的定義請參見)lan和internet,然後根據網絡卡的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