AWS云EC2(RHEL7)添加网络接口与路由调整
Amazon Linux(类似RHEL6,Centos6) 以及 RHEL7 修改MAC地址的说明
RHEL7 Centos7 添加路由
解决RHEL7因为文件里配置的MAC与实际不符导致系统无法启动的问题处理
20180625 Chenxin
20180627 update Chenxin
背景说明:
因RHEL7的镜像生成实例总是在启动中报网络错误,无法登陆排查原因.
故对RHEL7的实例进行添加网卡的测试.
系统说明:
在centos6以及之前,修改MAC地址只需要修改/etc/sysconfig/network-scripts/ifcfg-eth0文件,或者干脆这个文件里删除MAC地址那行.
到RHEL7后,除了修改上述文件外,还需要修改/etc/udev/rules.d/70-ec2-nvme-devices.rules文件.且确保2个文件里MAC地址一致,而且必须是系统真实的MAC地址,如果是自定义的MAC地址,会导致系统无法启动,提示:
Failed to start LSB: Bring up/down networking.
See 'systemctl status network.service' and 'journalctl -xn' for details.
这样,我们通过AMI克隆的RHEL7,就会出现无法启动的问题.因为我们在系统文件里的MAC地址是母机的,而非真实子实例的.子实例的MAC地址需要到控制台-网络接口-获取MAC地址,复制此地址.然后将获取到的写入EC2的子机.再启动子机才可以正常启动.
额外说明(方式2):
EC2通过RHEL7的AMI启动的时候,因为默认系统文件里的MAC地址会和ifcfg-eth0以及70-persistent-net.rules这2个文件里MAC地址不同,会造成系统无法启动.那么通过测试后,我们可以在AMI镜像的时候,将2个文件的含有MAC地址的行注释掉.这样EC2在启动的时候,会默认加载aws分配的MAC地址,系统便可以正常启动.(注释掉2个文件的MAC地址行,再制作AMI)
原实例IP地址信息:
公网弹性IP:13.251.152.158
绑定的私网IP: 10.0.1.7
在AWS控制台生成网络接口
首先在AWS控制台,EC2页面选择"网络接口",选择添加接口.接口IP为: 10.0.1.23
将此IP接口绑定到EC2实例上.
附加额外实验(将弹性IP 13.251.152.158 绑定到10.0.1.23 进行测试:
进入AWS控制台的弹性IP页面,将13.251.152.158 绑定到"网络接口ID"->10.0.1.23 (这里选择"实例ID"的话,控制台会报该实例有多个网络接口,不知道绑哪个接口的错误).)测试通过.
SSH登陆EC2配置IP信息
通过SSH登陆EC2实例,使用
ip addr
1.xxx
2.xxx
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 0a:9e:bc:8a:6a:c0 brd ff:ff:ff:ff:ff:ff #这个MAC地址同样会出现在AWS控制台"网络接口"里,可以从那里获取.
这里能够看到已经多了1个接口了(eth1).
记录此MAC地址.
配置Linux网络信息(一共修改2个文件):
cp -aprf /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-eth1
vim ifcfg-eth1

Created by cloud-init on instance boot automatically, do not edit.

BOOTPROTO=dhcp
DEVICE=eth1 #需要修改成eth1
HWADDR=0a:9e:bc:8a:6a:c0 #修改成新的MAC地址
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
配置70文件:
vim /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?", ATTR{address}=="0a:47:43:38:60:58", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?
", ATTR{address}=="0a:9e:bc:8a:6a:c0", NAME="eth1" #增加一行
注意,这里还没有重启网络,故不会发生默认路由的变化.
记住,RHEL7一定要配置真实的MAC地址(不能自定义),否则极有可能造成系统起不来,报网络故障.
确认和调整路由
因新绑定了网络接口(以及该网络接口对应的内网IP),重启网络服务的话,路由极有可能发生变化.
查看当前路由:
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 eth0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
这里添加了10.0.1.23的接口,重启后,默认路由很可能会变掉(测试的时候,确实变了,导致外网无法登陆EC2).
在未调整默认路由的情况下,重启EC2后,路由表会变成:
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 eth1
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
默认理由随机的给了eth1了,这个可不是希望看到的.
路由调整
临时策略,添加默认路由
route add default gw 10.0.1.1 dev eth0
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 eth0 #默认路由重复了,这条生效
default gateway 0.0.0.0 UG 0 0 0 eth1 #默认路由重复了,这条未生效
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
将多出来的那个默认路由删除
route del default gw 0.0.0.0 dev eth1
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 eth0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
永久路由(添加1个文件)
注:
测试发现最终有效文件是/etc/sysconfig/network-scripts/eth0.route
调整静态路由对应的相关配置文件(这里都测试了,都不生效,测试时间20180625,版本RHEL7.5,原因应该是2个网卡ip是同一个地址段的,网关地址是一样的)
/etc/sysconfig/network添加到末尾,全局生效的.GATEWAY=gw-ip或者GATEWAY=gw-dev
/etc/sysconfig/network-scripts/ifcfg-eth0 #添加如下内容 GATEWAY=X.X.X.X
/etc/sysconfig/network-scripts/eth0.route添加如下:(此文件是通过同路径下的那些网卡启动脚本发现的)
route add -net 10.0.1.0/24 dev eth0
route add default gw 10.0.1.1 dev eth0 #/var/log/messages会报错SIOCADDRT: File exists(该路由已存在),所以才看不到默认路由走eth0.但第一条理由在路由表里出现了.

route add –net 11.11.1.11 netmask 255.255.255.0 gw 11.11.1.1 #这种格式应该也可以

路由表如下:
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 eth1
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
eth0.route测试通过.在RHEL7中,如果修改为route-eth0(网上都说这种方法),/var/log/messages会报错:
Jun 25 20:47:59 ip-10-0-1-7 network: Error: inet prefix is expected rather than "route".
Jun 25 20:47:59 ip-10-0-1-7 network: Error: inet prefix is expected rather than "route".
这里应该是格式错误的意思,可以尝试写成如下2种格式再试试:
route-eth0文件内容,
1):
192.168.0.0/24 via 10.201.106.2
2):
ADDRESS0=192.168.20.0
NETMASK0=255.255.255.0
GATEWAY0=10.201.106.2
ADDRESS1=192.168.30.0
NETMASK1=255.255.255.0
GATEWAY1=10.201.106.2
不过需要两个网卡属于不同的网段才能测试.

不推荐:
可以修改/etc/rc.local文件(RHEL7默认此文件无执行权限,需要更改为755).在RHEL7之后,该文件与其他服务启动并行执行(systemd).
route add default gw 10.0.1.1 dev eth0
route del default gw 0.0.0.0 dev eth1
此方式在执行systemctl restart network.service后,eth1又会变成默认网关路由.不是很好的方式.

AWS云EC2(RHEL7)添加网络接口与路由调整的更多相关文章

  1. AWS系列-EC2实例添加磁盘

    注意:添加的磁盘,必须和挂载的实例是在同一可用区. 1.1 如下图,打开EC2控制台,打开卷,点击创建卷 1.2 选择磁盘配置 磁盘类型:如下图 磁盘大小:如图,最小500G,最大16T 可用区:注意 ...

  2. AWS云创建EC2与使用注意事项-踩坑记录

    目录 AWS 一 创建 EC2(云服务器) 二.AWS 注意事项 三.AWS 申请 SSL 证书 四. 创建VPC AWS 文章 GitHub 地址: 点我 AWS云服务器价格计算器 AWS WEB ...

  3. 亚马逊AWS学习——EC2的自定义VPC配置

    1 网络配置 EC2即亚马逊AWS云服务中的虚拟主机.创建EC2实例时如果使用的默认VPC并分配了公有IP是可以上网的.但我们经常需要自定义的网络环境,这时就需要自己定义VPC和子网了. 1.1 配置 ...

  4. 亚马逊AWS学习——EC2的自己定义VPC配置

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47153421 本文出自[我是干勾鱼的博客] 1 网络配置 EC2即亚马逊AWS云 ...

  5. Amazon AWS 架设EC2服务器(datizi)fanqiang (更新手机VPN/L2TP设置)

    今天用AWS在东京架设了一台服务器用来个人fanqiang.为什么用AWS呢,阿里云学生价9.9可以搭在香港,但是我的学制今年2月份在学信网上就到期了,腾讯云holy shit,我司AZURE据说员工 ...

  6. A亚马逊WS网上系列讲座——怎么样AWS云平台上千万用户的应用建设

    用户选择云计算平台构建应用程序的一个重要原因是高弹性的云平台和可扩展性. 面向Internet应用程序通常需要支持用户使用大量,但要建立一个高度可扩展.具有一定的挑战,高度可用的应用程序,只有立足AW ...

  7. AWS的EC2实例搭建服务器使用stackoverflow教程

    作为一个技术开发工程师, 一个给力的问题解决方案搜索引擎是十分必要的, stackoverflow作为一个码农必备神器, 存在访问不稳定,有时候打不开的问题,下面介绍如何在亚马逊云服务器上搭建属于自己 ...

  8. Oracle数据库迁移到AWS云的方案

    当前云已经成为常态,越来越多的企业希望使用云来增加基础设施的弹性.减轻基础设施的维护压力,运维的成本等.很多企业使用云碰到的难题之一是如何将现有的应用迁移到云上,将现有应用的中间件系统.Web系统及其 ...

  9. 亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计

    设计高可用的应用是架构师的一个重要目标,可是基于云计算平台设计高可用应用与基于传统平台的设计有很多不同.云计算在给架构师带来了很多新的设计挑战的时候,也给带来了很多新的设计理念和可用的服务.怎样在设计 ...

随机推荐

  1. SpringBoot-配置文件相关(五)

    SpringBoot-配置文件 SpringBoot官方文档 配置相关 SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的 application.properties 语法结构 : ...

  2. luogu P2640 神秘磁石

    题目描述 1.若给他一个一维坐标系,那么他的磁力一定要在素数坐标的位置上才能发挥的最大(不管位置坐标的大小,只要是素数那么磁力就一样大) 2.若两个磁石相距为k,那么磁石间的破坏力将会达到当前磁力的峰 ...

  3. 蓝牙5.0芯片NRF52810和NRF52832可进行mesh组网

    提供智能化mesh照明解决方案,在现有传统灯具的基础上,插入NRF52832/52810的照明Mesh模块,可以迅速升级现有的传统灯具,配合手机APP和服务器系统,使每一盏灯成为物联网的一个智能节点, ...

  4. 高质量iOS博客推荐

    https://www.jianshu.com/p/ea9fabdc12ed 原文地址 原作者记录了一些高质量ios博客地址,本文只做收藏使用.

  5. python解析ifconfig 输出成字典

    有个需求需要将ifcofig输出解析出来,这里将写的整理出来.方便后续使用. eth0 Link encap:Ethernet HWaddr 00:50:53:b2:23:e6 inet addr:1 ...

  6. C++ 并发编程指南(收藏笔记)

    git地址: https://github.com/forhappy/Cplusplus-Concurrency-In-Practice https://github.com/forhappy/Cpl ...

  7. 记录我的 python 学习历程-Day06 is id == / 代码块 / 集合 / 深浅拷贝

    一.is == id 用法 在Python中,id是内存地址, 你只要创建一个数据(对象)那么就会在内存中开辟一个空间,将这个数据临时加载到内存中,这个空间有一个唯一标识,就好比是身份证号,标识这个空 ...

  8. 笔记||Python3之布尔表达式+条件判断

    布尔表达式:        布尔类型:特性:只有两种情况 ---   真  /  假 1 -- True    False 2 -- type(True) ------------ <class ...

  9. css3(1)

    边框: 盒子圆角:border-radius:5px / 20%: border-radius:5px 4px 3px 2px; 左上,右上,右下,左下. 盒子阴影: box-shadow: box- ...

  10. Java_编写99乘法表

    public class Work100{ public static void main(String[] args){ // 积 int mu = 0; for(int i=1;i<10;i ...