詳解Linux 主機網絡接入配置
前言:
網絡配置是我們在安裝好操作系統之后,需要解決的第一步。現時代沒有接入網絡的主機已然等同于一堆廢鐵。在網絡配置的過程中,通常我們需要配置本機IP地址,缺省網關,DNS,主機名等等。本文主要描述在Linux環境下,主要以傳統命令行方式講解如何將主機接入網絡。對于網路配置的新命令如ip,nmcli等等在以后的文章中描述。
一、網絡配置概述
主機接入互聯網前提:遵循TCP/IP協議棧
配置主機接入TCP/IP網絡需要配置的內容:
IP/Netmask
路由:
主機路由:一臺主機
網絡路由:是一個網絡
默認路由(缺省網關):
DNS服務器:
主DNS服務器
備用DNS服務器
主機名:computer_name.domain.com
網絡設備表示方法(CentOS7版本)
內核識別設備:驅動
網卡命名機制
CentOS 7中,systemd對網絡設備的命名方式
(a) 如果Firmware或BIOS為主板上集成的設備提供的索引信息可用,且可預測則根據此索引進行命名,例如eno1
(b) 如果Firmware或BIOS為PCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,例如ens1
(c) 如果硬件接口的物理位置信息可用,則根據此信息進行命名,例如enp2s0
(d) 如果用戶顯式啟動,也可根據MAC地址進行命名,enx2387a1dc56;
(e) 上述均不可用時,則使用傳統命名機制,基于BIOS支持biosdevname中
(f) 本地回環 lo
內置網卡:em1,em2
pci卡:pYpX Y:slot ,X:port
名稱組成格式
en: Ethernet 有線局域網
wl: wlan 無線局域網
ww: wwan無線廣域網
名稱類型:
o: 集成設備的設備索引號
s: 擴展槽的索引號
x: 基于MAC地址的命名
ps: enp2s1
二、IP地址配置
動態配置(IP/Netmask):
DHCP服務器(Dynamic Host Configuration Protocol)
靜態指定:
用戶空間工具(ifconfig,ip命令),立即生效,但不會長久有效(地址配置在內核,顯示在用戶空間)
網絡設備服務配置文件,完成長久有效配置:
/etc/sysconfig/network-script/ifcfg-eth0
GUI/TUI配置工具
網路配置命令
ifconfig(傳統配置命令)
ifconfig:顯示所有活動狀態的相關信息
ifconfig Interface:僅顯示指定接口的相關信息
ifconfig Interface Address
ip/mask
長格式:
ifconfig Interface IP netmask MASK
CIDR:無類別的預見路由
ifconfig Interface IP/MASK
ifconfig示例
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
|
# more /etc/redhat-release ###當前環境 CentOS Linux release 7.2.1511 (Core) # ifconfig |grep eno -A1 ###當前服務器有2塊網卡,分別為eno16777728,eno33554960 eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.24.8.131 netmask 255.255.255.0 broadcast 172.24.8.255 -- eno33554960: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.81.144 netmask 255.255.255.0 broadcast 192.168.81.255 # ifconfig eno33554960 192.168.81.145/24 # ifconfig eno33554960|head -2 eno33554960: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.81.145 netmask 255.255.255.0 broadcast 192.168.81.255 # ifconfig eno33554960 down ###禁用當前網卡 # ifconfig eno33554960 up ###激活當前網卡 # ifconfig eno33554960|head -2 ###再次查看網卡,由于使用了DHCP,IP地址被分配為原地址 eno33554960: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.81.144 netmask 255.255.255.0 broadcast 192.168.81.255 網卡手工配置示例 # vi /etc/sysconfig/network-scripts/ifcfg-eno16777728 TYPE= "Ethernet" // 指定網絡類型為以太網模式 BOOTPROTO= "dhcp" // 指定啟動地址協議的獲取方式(dhcp或bootp為自動獲取,none DEFROUTE= "yes" // 是否把這個eno16777728設置為默認路由 PEERDNS= "yes" // 是否允許DHCP服務分配地址時直接更新 /etc/resolv .conf中的DNS服務器地址 PEERROUTES= "yes" IPV4_FAILURE_FATAL= "no" // 如果IPv4配置失敗,設備是否被禁用 IPV6INIT= "yes" // 允許在該網卡上啟動IPV6的功能 IPV6_AUTOCONF= "yes" // 是否使用IPV6地址的自動配置 IPV6_DEFROUTE= "yes" ### Author : Leshami IPV6_PEERDNS= "yes" ### Blog : http://blog.csdn.net/leshami IPV6_PEERROUTES= "yes" ### QQ/Weixin : 645746311 IPV6_FAILURE_FATAL= "no" NAME= "eno16777728" // 網絡連接標識名 UUID= "52ff246a-d965-4056-b34f-16e8f4df2c0a" // 網卡全球通用唯一識別碼 DEVICE= "eno16777728" // 網絡連接標識名 ONBOOT= "yes" // 網卡開機后自動啟動 USERCTL=no // 是否允許普通用戶操作網卡 PEERDNS={ yes |no} // 是否允許DHCP服務分配地址時直接更新 /etc/resolv .conf中的DNS服務器地址 # systemctl restart network.service //重啟網絡服務,使配置生效 |
三、路由配置
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
|
route(傳統配置命令) route: route:顯示路由信息(網關指的就是下一跳的地址,下一跳地址必須與本地主機位于同一網絡) -n:使用數字格式顯示,不反解地址到主機名 route add // 添加路由 -host HOST_IP gw Next [dev Device] -net Net_ADDR -net 0.0.0.0 目標地址為任意地址,即默認路由 route del // 刪除路由 -host HOST_IP gw 下一跳 -net Net_ADDR gw 下一跳 示例: # route # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.81.2 0.0.0.0 UG 100 0 0 eno33554960 172.24.8.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777728 192.168.81.0 0.0.0.0 255.255.255.0 U 100 0 0 eno33554960 示例中對于目表為192.168.81.0以及172.24.8.0網絡段的訪問,Gateway為4個0表示沒有網絡,也就是說屬于直連網絡,無需路由 對于目標為default的(當使用route -n時,default為4個0)網絡段時,通過缺省網關192.168.81.2連接目標指向單個 主機的為主機路由,目標網絡地址的為網絡路由,目標指向所有地址(0.0.0.0或者default)的為默認路由。 route輸出具體描述 route命令輸出的路由表字段含義如下: Destination 目標 The destination network or destination host. 目標網絡或目標主機。 Gateway 網關 The gateway address or '*' if none set . 網關地址,如果沒有就顯示星號。 Genmask 網絡掩碼 The netmask for the destination net; '255.255.255.255' for a host destination and '0.0.0.0' for the default route. Flags:總共有多個旗標,代表的意義如下: U (route is up):該路由是啟動的; H (target is a host):目標是一部主機 (IP) 而非網域; G (use gateway):需要透過外部的主機 (gateway) 來轉遞封包; R (reinstate route for dynamic routing):使用動態路由時,恢復路由資訊的旗標; D (dynamically installed by daemon or redirect):已經由服務或轉 port 功能設定為動態路由 M (modified from routing daemon or redirect):路由已經被修改了; ! (reject route):這個路由將不會被接受(用來抵擋不安全的網域!) A (installed by addrconf) C (cache entry) Metric 距離、跳數。暫無用。 The 'distance' to the target (usually counted in hops). It is not used by recent kernels, but may be needed by routing dae- mons. Ref 不用管,恒為0。 Number of references to this route. (Not used in the Linux ker-nel.) Use 該路由被使用的次數,可以粗略估計通向指定網絡地址的網絡流量。 Count of lookups for the route. Depending on the use of -F and Iface 從哪一個網絡接口路由出去,如本例中的eno33554960 Interface to which packets for this route will be sent. 添加網絡路由 當前本機IP地址為172.24.8.131 假定要到達目標地址為:192.168.10.0 /24 ,下一跳為 172.24.8.2 則添加路由命令如下 # route add -net 192.168.10.0/24 gw 172.24.8.2 ###此時為網絡網關(路由) # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.81.2 0.0.0.0 UG 100 0 0 eno33554960 172.24.8.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777728 192.168.10.0 172.24.8.2 255.255.255.0 UG 0 0 0 eno16777728 192.168.81.0 0.0.0.0 255.255.255.0 U 100 0 0 eno33554960 可以看到上述多出了一條路由記錄,目標網絡為192.168.10.0 新添加的路由接口設備自動使用了eno16777728網卡,因為172.24.8.2與eno16777728 IP為同一網段內 添加主機路由 假定要到達目標地址為:192.168.20.1,下一跳為: 172.16.100.177 # route add -host 192.168.20.1 gw 172.16.100.177 SIOCADDRT: Network is unreachable #提示網絡不可達,因為172.16.100.177不在當前兩塊網卡的任一網段內 下面修改下一跳地址為172.24.8.254再次嘗試添加 # route add -host 192.168.20.1 gw 172.24.8.254 ###此處無需指定隱碼 # route -n ###在下面的列表中Flags有一個H,表示此條為主機路由 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.81.2 0.0.0.0 UG 100 0 0 eno33554960 172.24.8.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777728 192.168.10.0 172.24.8.2 255.255.255.0 UG 0 0 0 eno16777728 192.168.20.1 172.24.8.254 255.255.255.255 UGH 0 0 0 eno16777728 192.168.81.0 0.0.0.0 255.255.255.0 U 100 0 0 eno33554960 路由表描述 對于請求到192.168.10.0的網路,路由地址為172.24.8.2,經由網卡eno16777728 對于請求到192.168.20.1的主機,路由地址為172.24.8.254,經由網卡eno16777728 對于請求172.24.8.0以及192.168.81.0的網絡,為直連網絡,無需路由 對于請求到0.0.0.0的網絡經由192.168.81.2從網卡eno33554960進行路由,如訪問百度則由此路由 # ping www.baidu.com -c 2 PING www.baidu.com (14.215.177.38) 56(84) bytes of data. 64 bytes from 14.215.177.38: icmp_seq=1 ttl=128 time =5.76 ms 64 bytes from 14.215.177.38: icmp_seq=2 ttl=128 time =6.13 ms 刪除路由 假定需要刪除默認路由 # route del -net 0.0.0.0 netmask 0.0.0.0 ###等價于 route del default # route |grep -i default # ping www.baidu.com ###缺省路由被刪除后,ping百度不可達 connect: Network is unreachable 刪除之前添加的網絡路由和主機路由 # route del -net 192.168.10.0/24 # route del -host 192.168.20.1 # route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 172.24.8.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777728 192.168.81.0 0.0.0.0 255.255.255.0 U 100 0 0 eno33554960 添加缺省網關 # route add default gw 192.168.81.2 # route add -net 0.0.0.0 gw 192.168.81.2 ###與上一條命令等價 路由靜態配置文件 /etc/sysconfig/network /etc/sysconfig/network-scripts/route-ethX | route-pppX 配置文件的格式1:每行一個要配置的路徑條目 目標 via 下一跳 例子: 192.168.0.0 /24 via 172.16.100.177 配置文件的格式2:每一組一個路由條目 ADDRESS #=目標 NETMASK #=掩碼 GATEWAY #=下一跳 ADDRESS0=192.168.0.0 NETMASK0=255.255.255.0 GATEWAY0=172.16.100.1 |
四、DNS配置
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
|
DNS服務器指向: 配置文件: /etc/resolv .conf 最多三個: nameserver DNS_SERVER_IP nameserver 8.8.8.8 測試DNS解析 dig -t A 域名 // 正解測試 dig -x IP // 反解測試 查看當前主機DNS解析配置 # more /etc/resolv.conf # Generated by NetworkManager search localdomain example.com nameserver 192.168.81.2 nameserver 172.24.8.1 # dig -t A www.oracle.com ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.oracle.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id : 11680 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.oracle.com. IN A ;; ANSWER SECTION: www.oracle.com. 5 IN CNAME ds-www.oracle.com.edgekey.net. ds-www.oracle.com.edgekey.net. 5 IN CNAME e11582.dscx.akamaiedge.net. e11582.dscx.akamaiedge.net. 5 IN A 184.28.37.127 ;; Query time : 12 msec ;; SERVER: 192.168.81.2 #53(192.168.81.2) //通過本地IP 192.168.81.2遞交外部DNS服務器解析 ;; WHEN: Mon Sep 04 21:14:31 CST 2017 ;; MSG SIZE rcvd: 128 # dig -x 184.28.37.127 ; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -x 184.28.37.127 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id : 20357 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 8, ADDITIONAL: 9 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; MBZ: 0005 , udp: 512 ;; QUESTION SECTION: ;127.37.28.184. in -addr.arpa. IN PTR ;; ANSWER SECTION: 127.37.28.184. in -addr.arpa. 5 IN PTR a184-28-37-127.deploy.static.akamaitechnologies.com. ;; AUTHORITY SECTION: 28.184. in -addr.arpa. 5 IN NS ns5.reverse.deploy.akamaitechnologies.com. 28.184. in -addr.arpa. 5 IN NS ns1.reverse.deploy.akamaitechnologies.com. 28.184. in -addr.arpa. 5 IN NS ns7.reverse.deploy.akamaitechnologies.com. 28.184. in -addr.arpa. 5 IN NS ns3.reverse.deploy.akamaitechnologies.com. 28.184. in -addr.arpa. 5 IN NS ns4.reverse.deploy.akamaitechnologies.com. 28.184. in -addr.arpa. 5 IN NS ns8.reverse.deploy.akamaitechnologies.com. 28.184. in -addr.arpa. 5 IN NS ns2.reverse.deploy.akamaitechnologies.com. 28.184. in -addr.arpa. 5 IN NS ns6.reverse.deploy.akamaitechnologies.com. ;; ADDITIONAL SECTION: ns1.reverse.deploy.akamaitechnologies.com. 5 IN A 96.7.50.32 ns2.reverse.deploy.akamaitechnologies.com. 5 IN A 2.16.40.32 ns3.reverse.deploy.akamaitechnologies.com. 5 IN A 23.74.25.32 ns4.reverse.deploy.akamaitechnologies.com. 5 IN A 95.100.168.32 ns5.reverse.deploy.akamaitechnologies.com. 5 IN A 95.100.173.32 ns6.reverse.deploy.akamaitechnologies.com. 5 IN A 23.61.199.32 ns7.reverse.deploy.akamaitechnologies.com. 5 IN A 184.26.161.32 ns8.reverse.deploy.akamaitechnologies.com. 5 IN A 2.22.230.32 ;; Query time : 205 msec ;; SERVER: 192.168.81.2 #53(192.168.81.2) ;; WHEN: Mon Sep 04 21:17:05 CST 2017 ;; MSG SIZE rcvd: 407 |
網絡服務啟動腳本
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
|
CentOS 5 /6 : 服務腳本: /etc/init .d /network CentOS 6 服務腳本: /etc/init .d /NetworkManager 服務腳本:SysV style LSB 控制運行在后臺守護進程,接受參數{start|stop|restart|status} 腳本位置: /etc/rc .d /init .d或 /etc/init .d 配置某服務開機自動啟動:chkconfig Src_Script_Name on 禁止開機自動啟動:chkconfig Src_Script_Name off 查看 chkconfig --list 調用機制: 1. /etc/init .d /Script_Name {start|stop|restart|status} 1.service Script_Name {start|stop|restart|status} CentOS 7 服務腳本: /etc/init .d /network # systemctl start network.service 如何實現在單網卡上配置多個地址(通常用于VIP) 通過網絡接口別名來實現 eth0X eth0:X eth0:0 eth0:1.... 配置1: ifconfig ethX:Y IP /mask 配置2: ifcfg-ethX:Y DEVICE=ethX:Y BOOTPROTO={none|static} IPADDR= NETMASK= GATEWAY= 非主地址(別名地址)不支持DHCP協議獲取 |
五、主機名配置
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
|
短主機名,如mycomputer1 長主機名(FQDN),如mycomputer.example.com CentOS 5 /6 配置主機名 查看主機名: # hostname # more /etc/sysconfig/network # more /proc/sys/kernel/hostname 臨時修改主機名: # hostname new_host_name # hostname new_host_name.domain.com 永久修改主機名(需要重啟): # vi /etc/sysconfig/network 修改以及立即生效 # echo new_host_name >/proc/sys/kernel/hostname # sysctl kernel.hostname=new_host_name 示例 # more /etc/redhat-release CentOS release 6.7 (Final) # hostname node133 # hostname host133 # hostname host133 [root@host133 ~] # echo host133.example.com >/proc/sys/kernel/hostname [root@host133 ~] # hostname host133.example.com [root@host133 ~] # sysctl kernel.hostname=host133.example.com kernel. hostname = host133.example.com [root@host133 ~] # hostname host133.example.com CentOS 7 配置主機名 在RHEL7中,引入了靜態(static)、瞬態(transient)和靈活(pretty)三種主機名。 “靜態”主機名——也稱為內核主機名,是系統在啟動時從 /etc/hostname 自動初始化的主機名。 “瞬態”主機名——是在系統運行時臨時分配的主機名,例如,通過DHCP或DNS服務器分配。 靜態主機名和瞬態主機名都遵從作為互聯網域名同樣的字符限制規則。 “靈活”主機名——是允許使用自由形式(可包括特殊/空白字符)的主機名,以展示給終端用戶(如Tom‘s Computer) 查看主機名的命令一般格式如下: hostnamectl [status] [--static|--transient|--pretty] 選項說明如下: status——可同時查看靜態、瞬態和靈活三種主機名及其相關的設置信息。 --static——僅查看靜態(永久)主機名。 --transient——僅查看瞬態(臨時)主機名。 --pretty ——僅查看靈活主機名。 [root@centos7 ~] # hostnamectl status Static hostname : centos7.example.com Icon name: computer-vm Chassis: vm Machine ID: 8ef737feff1942798ec060bf5a162df6 Boot ID: e2c8eded07f04e879d2b160d9a6bc6cf Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe: /o :centos:centos:7 Kernel: Linux 3.10.0-327.el7.x86_64 Architecture: x86-64 修改主機名的命令一般格式如下 # hostnamectl [--static|--transient|--pretty] set-hostname <new_hostname> [root@centos7 ~] # hostnamectl --transient centos7.example.com # hostnamectl --transient set-hostname centos7-a //修改瞬態主機名 # hostnamectl //查看修改后的瞬態主機名 Static hostname : centos7.example.com Transient hostname : centos7-a # hostnamectl --static //查看修改前的靜態主機名 centos7.example.com # hostnamectl --static set-hostname centos7-a.example.com //修改靜態主機名 # hostnamectl --static //查看修改后的瞬態主機名 centos7-a.example.com Hostnamectl設置主機名后,會立即刷新內核主機名,以及更新 /etc/hostname 文件, 但當前Bash提示符需重新登陸shell [root@centos7 ~] # bash //重新開啟shell # /etc/hosts 文件中主機名不會自動更新,應手動更新主機名與IP地址的映射關系 vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.81.142 centos7-a.example.com centos7-a // 添加此行,其中192.168.81.142是本機IP地址 :wq // 保存退出 |
如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://blog.csdn.net/leshami/article/details/77933663