centos7網絡配置詳解
20150416 Chenxin
1.配置文件位置
網絡基礎信息配置處:/etc/sysconfig/network-scripts/ifcfg-em2
DNS服務器地址配置處:/etc/resolv.conf
主機名與網關地址配置處:/etc/sysconfig/network(主機名,網關地址) /etc/hosts /etc/hostname(centos7才有,配置主機名)
其他跟網絡配置相關的文件列表:
centos6 /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM"net", ACTION"add", DRIVERS"?*", ATTR{address}"c8:1f:66:c0:e4:df", ATTR{type}"1", KERNEL"eth", NAME="em1"
SUBSYSTEM"net", ACTION"add", DRIVERS=="?", ATTR{address}"c8:1f:66:c0:e4:e0", ATTR{type}"1", KERNEL=="eth*", NAME="em2"
centos7 cat /etc/udev/rules.d/70-persistent-ipoib.rules
ACTION"add", SUBSYSTEM"net", DRIVERS"?*", ATTR{type}"32", ATTR{address}=="?*00:02:c9:03:00:31:78:f2", NAME="mlx4_ib3"
2.網卡配置信息參數說明
配置說明
cat ifcfg-em1
TYPE=Ethernet #以太網
BOOTPROTO=none #啟動靜態IP,這里一般配置為static
DEFROUTE=yes #設置這塊網卡作為默認路由
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes #此網卡作為默認路由
IPV6_FAILURE_FATAL=no
NAME=em1 #對應第一張網卡
UUID=42115cba-7ace-43b8-847f-230c4392c640 #UUID號碼(唯一設備編號)
ONBOOT=yes #開機自啟動
HWADDR=C8:1F:66:C0:C5:25 #硬件地址
IPADDR0=103.17.41.77 #IP地址
PREFIX0=27 #掩碼信息
GATEWAY0=103.17.41.65 #網關
DNS1=202.106.0.20 #最好將DNS配置到/etc/resolv.conf內,統一起來.
DNS2=202.106.196.115 #備選DNS
IPV6_PEERDNS=yes #覆蓋resolv.conf
IPV6_PEERROUTES=yes #是否覆蓋其他配置信息里的路由信息
PEERDNS=no #是否覆蓋resolv.conf文件的配置
http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-networkscripts-interfaces.html
IPV4_FAILURE_FATAL=no #解釋如下(ipv4失敗,是否連帶其他一起失敗呢)
If both IPv4 and IPv6 configuration is enabled, failing IPv4 configuration of activated device means that activation is considered as failing overall (which corresponds to Require IPv4 addressing for this connection to complete checked in nm-c-e or IPV4_FAILURE_FATAL=yes in ifcfg file).
Putting it another way it's saying that if a connection is setup for both IPv4 and IPv6, with this option set to yes, the setup of the said connection will be reported as failed, even if IPv6 is setup, and IPv4 is not.
ucloud centos7默認配置:
DEVICE=eth0
HWADDR=52:54:00:62:D8:1E
IPADDR=10.10.33.194
NETMASK=255.255.0.0
GATEWAY=10.10.0.1
BOOTPROTO=none
PEERDNS=yes
USERCTL=no
NM_CONTROLLED=no
ONBOOT=yes
DNS1=10.10.255.1
DNS2=10.10.255.2
DNS3=114.114.114.114
我們自有服務器,可以精簡配置如下(centos5,6,7均支持):
TYPE=Ethernet
BOOTPROTO=static
NAME=em1
ONBOOT=yes
DEFROUTE=yes
HWADDR=C8:1F:66:C0:C1:55
IPADDR=103.17.41.75
NETMASK=255.255.255.224
GATEWAY=X.X.X.X
DNS1=X.X.X.X
DNS2=X.X.X.X
網關和DNS地址只能放在這個文件,否則重啟后會失效.
查看網卡狀態是否有異常: systemctl status network
單網卡多IP
centos6以及較早前版本均支持:使用子連接配置文件 ifcfg-*:n
子連接配置文件是 Centos6 常用的方法,即:如果當前網卡配置文件為 ifcfg-eth0,則子連接配置文件可以為 ifcfg-eth0:1,並且文件中需要寫明 DEVICE=eth0:1 , IPADDR=<新IP地址> .
centos7對子連接配置方式不再支持,改為以下方式:
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=em2
UUID=553db91d-205d-4ae7-8ffb-2e9eac5bfefb
ONBOOT=yes
HWADDR=C8:1F:66:C0:C1:56
IPADDR0=192.168.63.75
PREFIX0=16
IPADDR1=192.168.64.75 #該網卡的第二個IP信息
PREFIX1=16
GATEWAY0=
DNS1=
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
ip addr檢查:
id: em2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether c8:1f:66:c0:c1:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.63.75/16 brd 192.168.255.255 scope global em2
valid_lft forever preferred_lft forever
inet 192.168.64.75/16 brd 192.168.255.255 scope global secondary em2
valid_lft forever preferred_lft forever
inet6 fe80::ca1f:66ff:fec0:c156/64 scope link
valid_lft forever preferred_lft forever
通過內網連接測試:OK
3.配置網卡后無默認路由的原因排查
cat /home/admin/ifcfg-em1_201504161113 (時好時壞)
...
IPADDR0=103.17.41.75
PREFIX0=27
GATEWAY0=103.17.41.65 #發現這個參數是導致路由時好時壞的原因.如果放到/etc/sysconfig/network則無故障.或改為GATEWAY=x.x.x.x
...
詳情見"4".
4.centos7關於路由的說明
ip route顯示和設定路由
4.1顯示路由表
ip route show (無默認路由)
103.17.41.64/27 dev em1 proto kernel scope link src 103.17.41.75
169.254.0.0/16 dev em1 scope link metric 1002
169.254.0.0/16 dev em2 scope link metric 1003
192.168.0.0/16 dev em2 proto kernel scope link src 192.168.63.75
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
103.17.41.64 0.0.0.0 255.255.255.224 U 0 0 0 em1
link-local 0.0.0.0 255.255.0.0 U 1002 0 0 em1
link-local 0.0.0.0 255.255.0.0 U 1003 0 0 em2
192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 em2
4.2添加靜態路由
ip route add 10.15.150.0/24 via 192.168.150.253 dev em2
4.3刪除靜態路由
只需要把 add 替換成 del,或者更簡單的只寫目標網絡
ip route del 10.15.150.0/24
4.4添加永久靜態路由
ip route 指令對路由的修改不能保存,重啟就沒了。
把 ip route 指令寫到 /etc/rc.local 也是徒勞的。
RHEL7官網文檔沒有提到 /etc/sysconfig/static-routes,經測試此文件已經無效;
/etc/sysconfig/network 配置文件僅僅可以提供全局默認網關,語法同 Centos6 一樣: GATEWAY=
永久靜態路由需要寫到 /etc/sysconfig/network-scripts/route-interface 文件中,比如添加兩條靜態路由:
vi /etc/sysconfig/network-scripts/route-enp0s3(網卡名)
10.15.150.0/24 via 192.168.150.253 dev enp0s3
10.25.250.0/24 via 192.168.150.253 dev enp0s3
重新啟用設備enp0s3才能生效.
nmcli dev connect enp0s3
一般直接連接一次設備即可,如果不成功就先斷開設備再連接設備,注意必須兩個指令一起運行,否則,你曉得。
nmcli dev disconnect enp0s3 && nmcli dev connect enp0s3
4.5清除永久靜態路由
可以刪除 ifcfg-enp0s3文件或者注釋掉文件里的相應靜態路由條目,重啟計算機。
想要讓修改后的靜態路由立即生效,只能用 ip route del 手工刪除靜態路由條目。
4.6實驗的過程中出現兩個奇怪的現象:
1.有時候路由生效了但是在 ip route show 卻沒有顯示,重啟計算機后是肯定顯示的,原因暫時不明。
2.存在多個網卡時,默認路由似乎是隨機經由某個網卡設備(故在ifcfg-em1里配置GATEWAY0=X.X.X.X經常造成無默認路由的情況)。檢查了所有連接配置文件后發現,第一網卡的默認連接配置文件 ifcfg-eth0 設置了GATEWAY0(此設置會覆蓋/etc/sysconfig/network 定義的全局默認網關).第二網卡的連接配置文件 ifcfg-eth1 使用的是dhcp,會在啟動時也分配默認網關,兩個默認網關讓計算機糊塗了。這是在測試系統里經常發生的現象,生產系統一般不會讓網卡用dhcp,或者即使是用了也會仔細分配默認網關防止沖突。
4.7其他需要注意的:
1.連接配置文件 ifcfg-* 里可以設置多個GATEWAY,一般第一個是 GATEWAY0,然后GATEWAY1, GATEWAY2... ,尾號最大的有效;
2.如果必須在/etc/sysconfig/network 文件定義全局網關,連接配置文件 ifcfg-* 就不要設置GATEWAY了,dhcp的連接要注意dhcp服務器不要定義默認網關。
3.ifcfg-enp0s3 文件改名為 ifcfg-eth0 后,route-enp0s3 文件也要改名為 route-eth0。