|
1
2
3
4
5
6
7
8
9
10
11
|
配置文件詳解
在RHEL或者CentOS等Redhat系的Linux系統里,跟網絡有關的主要設置文件如下:
/etc/host.conf 配置域名服務客戶端的控制文件
/etc/hosts 完成主機名映射為IP地址的功能
/etc/resolv.conf 域名服務客戶端的配置文件,用於指定域名服務器的位置
/etc/sysconfig/network 包含了主機最基本的網絡信息,用於系統啟動.
/etc/sysconfig/network-script/ 系統啟動時初始化網絡的一些信息
/etc/xinetd.conf 定義了由超級進程xinetd啟動的網絡服務
/etc/networks 完成域名與網絡地址的映射
/etc/protocols 設定了主機使用的協議以及各個協議的協議號
/etc/services 設定主機的不同端口的網絡服務
# ifup eth0 # 開啟eth0網卡
# ifdown eth0 # 關閉eth0網卡
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
|
CentOS 查詢IP地址,輸入下面的命令:ip -a 。 CentOS 打開/關閉網絡連接,輸入下面的命令:ifup ens192 ifdw ens192 。 CentOS 重啟網絡服務,輸入下面的命令:systemctl retart network.service 或 systemctl restart network。 CentOS 啟動網絡服務,輸入下面的命令:systemctl start network.service,或 systemctl start network。 CentOS 停止網絡服務,輸入命令:systemctl stop network.service,或 systemctl stop network。 1. /etc/host.conf文件的默認信息如下:
multi
on
#允許主機擁有多個IP地址
order hosts,bind #主機名解析順序,即本地解析,DNS域名解析的順序
這個文件一般不需要我們修改,默認的解析順序是本地解析,DNS服務器解析,也就是說在本系統里對於一個主機名首先進行本地解析,如果本地解析沒有,然后進行DNS服務器解析。
2. /etc/hosts文件默認的內容大概如下:
127.0.0.1 butbueatiful localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
可見,默認的情況是本機ip和本機一些主機名的對應關系,第一行是ipv4信息,第二行是ipv6信息,如果用不上ipv6本機解析,一般把該行注釋掉。
第一行的解析效果是,butbueatiful localhost.localdomain localhost都會被解析成127.0.0.1,我們可以用ping試試。
[root@butbueatiful ~]# ping -c 3 butbueatiful
PING butbueatiful (127.0.0.1) 56(84) bytes of data.
64 bytes
from
butbueatiful (127.0.0.1): icmp_seq=1 ttl=64 time=0.061 ms
64 bytes
from
butbueatiful (127.0.0.1): icmp_seq=2 ttl=64 time=0.052 ms
64 bytes
from
butbueatiful (127.0.0.1): icmp_seq=3 ttl=64 time=0.051 ms
--- butbueatiful ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.051/0.054/0.061/0.009 ms
[root@butbueatiful ~]# ping -c 3 localhost.localdomain
PING butbueatiful (127.0.0.1) 56(84) bytes of data.
64 bytes
from
butbueatiful (127.0.0.1): icmp_seq=1 ttl=64 time=0.055 ms
64 bytes
from
butbueatiful (127.0.0.1): icmp_seq=2 ttl=64 time=0.035 ms
64 bytes
from
butbueatiful (127.0.0.1): icmp_seq=3 ttl=64 time=0.050 ms
--- butbueatiful ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.035/0.046/0.055/0.011 ms
看到上面的結果,你可能會問為什么ping localhost.localdomain的時候,下面顯示的是卻是butbueatiful,這是因為第一個主機名butbueatiful后面的那些主機名其實都是butbueatiful的主機別名。
如果我們要追加新的本地解析,比如我們希望在我們的機器里把yyyy.com和www.yyyy.com都解析成192.168.0.100,那么就追加如下一句即可:
192.168.0.100 yyyy.com www.yyyy.com
同樣,在這里,www.yyyy.com是yyyy.com的主機別名。
如果你仔細一想,會發現,其實這個文件是很危險的,如果有人惡意修改了你這個文件,比如把淘寶的網站域名解析到了他的釣魚網站,那你就要中招了。
3. /etc/resolv.conf, 指定域名解析的DNS服務器IP等信息, 配置參數一般接觸到的有4個:
nameserver 指定DNS服務器的IP地址
domain 定義本地域名信息
search 定義域名的搜索列表
sortlist 對gethostbyname返回的地址進行排序
但是最常用的配置參數是nameserver,其他的可以不設置,這個參數指定了DNS服務器的IP地址,如果設置不正確,就無法進行正常的域名解析。
一般來說,推薦設置2個DNS服務器,比如我們用google的免費DNS服務器,那么該文件的設置內容如下:
nameserver 8.8.8.8
nameserver 8.8.4.4
同樣,這個文件也是危險的,如果被人惡意改成了他自己的DNS服務器,他就可以為所欲為的控制你通過域名訪問的每個目的地了,這就是常說的DNS劫持。
4. /etc/sysconfig/network, 典型的配置如下:
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=butbueatiful
GATEWAY=192.168.0.1
參數簡要解釋:
NETWORK 設置網絡是否有效,yes有效,no無效
NETWORKING_IPV6 設置ipv6網絡是否有效,yes有效,no無效
HOSTNAME 設置服務器的主機名,最好和/etc/hosts里設置一樣,否則在使用一些程序的時候會有問題。
GATEWAY 指定默認網關IP
5. ifcfg-ethX, 設置對應網口的IP等信息, 比如第一個網口, 那么就是/etc/sysconfig/network-scripts/ifcfg-eth0,配置例子:
參數簡要解釋:
TYPE=Ethernet #類型=以太網絡 DEVICE 設備名,不要自己亂改,和文件ifcfg-ethX里的ethX要一致
BROADCAST 廣播地址
HWADDR 物理地址,這個你不要亂改
IPADDR IP地址
NETMASK 子網掩碼
ONBOOT 啟動或者重啟網絡時,是否啟動該設備,yes是啟動,no是不啟動
BOOTPROTO 開機協議,最常見的三個參數如下:
static
(靜態IP)
none(不指定,設置固定ip的情況,這個也行,但是如果要設定多網口綁定bond的時候,必須設成none)
dhcp(動態獲得IP相關信息)
6. route-ethX,比如第一個網口eth0的路由信息,那么就是/etc/sysconfig/network-scripts/route-eth0:
比如我們現在有這樣一個需求,通過eth0去網絡172.17.27.0/24不走默認路由,需要走192.168.0.254,那么我們第一反應,肯定是用route命令追加路由信息:
[root@butbueatiful ~]# route add -net 172.17.27.0 netmask 255.255.255.0 gw 192.168.0.254 dev eth0
可是,你沒意識到的是,這樣只是動態追加的而已,重啟網絡后,路由信息就消失了,所以需要設置靜態路由,這時候就要設置/etc/sysconfig/network-scripts/route-eth0文件了,如果沒有該文件,你就新建一個:
[root@butbueatiful ~]# vi /etc/sysconfig/network-scripts/route-eth0
#追加
172.17.27.0/24via 192.168.0.254
這下即使重啟網絡,重啟系統,該路由也會自動加載,當然了,如果你沒有這樣的需要,那么這個文件就沒必要創建和配置了。
二、常用的網絡配置
伴隨着時間的推移Red Hat公司推出了RHEL6.2,隨后CentOS也緊隨其后退出了CentOS6.2。新的系統中廠商加入了大量虛擬化及雲計算的元素,同時對於細節的改變也不少,這里我們僅對新系統中的網絡參數做以詳盡說明。
Linux中網絡參數大致包含以下內容:
IP地址
子網掩碼
網關
DNS服務器
主機名
歷來Linux系統中修改這些參數的方式通常有:命令、文件兩種。其中通過命令設置可以立即生效但重啟后將失效,通過文件修改實現永久生效,但不會立即生效。
首先我們來看看命令的方式:
ifconfig:查看與設置IP地址、子網掩碼
hostname:查看與設置主機名
route: 查看與設置路由信息(默認網關等)
通過文件的方式修改:
/etc/sysconfig/network-scripts/ifcfg-設備名(通常為ifcfg-eth0)
/etc/sysconfig/network
/etc/resolv.conf文件:設置DNS服務器
以上種種這些方式可以同時在5.0與6.0系統中實現,但6.0系統后官方文檔中描述說:ifconfig與route是非常陳舊的命令,取而代之的是ip命令。
那么我們先看一下老的命令使用方式:
*************************************************************************
ifconfig 接口 選項|地址
# ifconfig eth0 up # 開啟eth0網卡
# ifconfig eth0 down # 關閉eth0網卡
# ifconfig eth0 -arp # 關閉eth0網卡arp協議
# ifconfig eth0 promisc # 開啟eth0網卡的混合模式
# ifconfig eth0 mtu 1400 # 設置eth0網卡的最大傳輸單元為1400
# ifconfig eth0 192.168.0.2/24 # 設置eth0網卡IP地址
# ifconfig eth0 192.168.0.2 netmask 255.255.255.0 # 功能同上
*************************************************************************
主機名:
# hostname # 查看主機名
# hostname butbueatiful.com # 設置主機名為butbueatiful.com
*************************************************************************
網關設置:
route add [-net|-host] target [netmask] gw
route del [-net|-host] target [netmask] gw
# route add -net 192.168.3.0/24 gw 192.168.0.254 # 設置到192.168.3.0網段的網關為192.168.0.254
# route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.0.254 # 功能同上
# route add -host 192.168.4.4 gw 192.168.0.254 # 設置到192.168.4.4主機的網關為192.168.0.254
#
# route del -net 192.168.3.0/24 # 刪除192.168.3.0網段的網關信息
# route del -host 192.168.4.4 # 刪除192.168.4.4主機的網關信息
# route add default gw 192.168.0.254 # 設置默認網關為192.168.0.254
# route del default gw 192.168.0.254 # 刪除默認網關為192.168.0.254
*************************************************************************
而如今官方不再推薦使用如此陳舊的命令而推薦使用 ip 這個命令,以下我們看看它的用法:
ip [選項] 操作對象{link|addr|route...}
# ip link show # 顯示網絡接口信息
# ip link set eth0 upi # 開啟網卡
# ip link set eth0 down # 關閉網卡
# ip link set eth0 promisc on # 開啟網卡的混合模式
# ip link set eth0 promisc offi # 關閉網卡的混個模式
# ip link set eth0 txqueuelen 1200 # 設置網卡隊列長度
# ip link set eth0 mtu 1400 # 設置網卡最大傳輸單元
# ip addr show # 顯示網卡IP信息
# ip addr add 192.168.0.1/24 dev eth0 # 設置eth0網卡IP地址192.168.0.1
# ip addr del 192.168.0.1/24 dev eth0 # 刪除eth0網卡IP地址
# ip route list # 查看路由信息
# ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 # 設置192.168.4.0網段的網關為192.168.0.254,數據走eth0接口
# ip route add default via 192.168.0.254 dev eth0 # 設置默認網關為192.168.0.254
# ip route del 192.168.4.0/24 # 刪除192.168.4.0網段的網關
# ip route del default # 刪除默認路由
**************************************************************
接下來再看看通過文件修改網絡參數:(CentOS6.2系統為例)
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=
"eth0"
設備名
NM_CONTROLLED=
"yes"
設備是否被NetworkManager管理
ONBOOT=
"no"
開機是否啟動
HWADDR=
"00:0C:29:59:E2:D3"
硬件地址(MAC地址)
TYPE=Ethernet 類型
BOOTPROTO=none 啟動協議{none|dhcp}
IPADDR=192.168.0.1 IP地址
PREFIX=24 子網掩碼
GATEWAY=192.168.0.254 默認網關
DNS1=202.106.0.20 主DNS
DOMAIN=202.106.46.151 輔助DNS
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 設備UUID編號
**************************************************************
# cat /etc/sysconfig/network
HOSTNAME=butbueatiful.com 主機名
**************************************************************
注意:在5.0時代DNS服務器寫在 /etc/resolv.conf 文件中,但到了6.0時代DNS可以寫在/etc/resolv.conf但是此時需要在 /etc/sysconfig/network-scripts/ifcfg-eth0 文件中添加 PEERDNS=no 配置,不然每次重啟網卡就會重寫/etc/resolv.conf文件的內容,當然了也可以直接寫在 /etc/sysconfig/network-scripts/ifcfg-eth0 文件中。
后記:
1. 配置/etc/resolv.confg重啟丟失解決方法:
一種方法是把 PEERDNS 設置為“no”。
找到網卡配置文件,位置和: /etc/sysconfig/network-scripts/ifcfg-eth 文件中加入PEERDNS 選項。可以是 0, 1, 2等等,代表不同網卡的配置文件。例如,系統上第一張網卡是eth0的話,那它的配置文件就是/etc/sysconfig/network-scripts/ifcfg-eth0 然后在文件中把 PEERDNS 改為 ‘no’.
例如:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
PEERDNS=no
這個選項可令 /etc/resolv.conf 在系統重啟后不會被重寫。
另一種方法是在這個文件中增加DNS:
如:
DNS1=127.0.0.1
DNS2=8.8.8.8
2. 安全設置
我們前面說了/etc/resolv.conf和/etc/hosts被人篡改了的話, 會很危險, 那我們在設置好着2個文件后, 做一下處理, 讓這2個文件默認不能直接修改, 即使root也不行, 執行如下命令:
[root@butbueatiful ~]# chattr +i /etc/{resolv.conf,hosts}
如果我們自己想修改的時候,執行:
[root@butbueatiful ~]# chattr -i /etc/{resolv.conf,hosts}
然后就可以修改了,修改完了別忘記+i。
3. 網絡排除思路
檢查配置文件是否有錯誤(書寫及語法錯誤等)
檢查本機網絡協議是否正確:# ping -c 3 127.0.0.1
檢查本機網卡鏈路是否正確:# ping -c 3 192.168.0.1(本機IP地址)
檢查網關是否正確: # ping -c 3 192.168.0.254(網關IP地址)
檢查外部連通性: # ping -c 3 www.google.com.hk
檢查硬件
|
