AWS云EC2(RHEL7)添加网络接口与路由调整
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)添加网络接口与路由调整的更多相关文章
- AWS系列-EC2实例添加磁盘
注意:添加的磁盘,必须和挂载的实例是在同一可用区. 1.1 如下图,打开EC2控制台,打开卷,点击创建卷 1.2 选择磁盘配置 磁盘类型:如下图 磁盘大小:如图,最小500G,最大16T 可用区:注意 ...
- AWS云创建EC2与使用注意事项-踩坑记录
目录 AWS 一 创建 EC2(云服务器) 二.AWS 注意事项 三.AWS 申请 SSL 证书 四. 创建VPC AWS 文章 GitHub 地址: 点我 AWS云服务器价格计算器 AWS WEB ...
- 亚马逊AWS学习——EC2的自定义VPC配置
1 网络配置 EC2即亚马逊AWS云服务中的虚拟主机.创建EC2实例时如果使用的默认VPC并分配了公有IP是可以上网的.但我们经常需要自定义的网络环境,这时就需要自己定义VPC和子网了. 1.1 配置 ...
- 亚马逊AWS学习——EC2的自己定义VPC配置
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/47153421 本文出自[我是干勾鱼的博客] 1 网络配置 EC2即亚马逊AWS云 ...
- Amazon AWS 架设EC2服务器(datizi)fanqiang (更新手机VPN/L2TP设置)
今天用AWS在东京架设了一台服务器用来个人fanqiang.为什么用AWS呢,阿里云学生价9.9可以搭在香港,但是我的学制今年2月份在学信网上就到期了,腾讯云holy shit,我司AZURE据说员工 ...
- A亚马逊WS网上系列讲座——怎么样AWS云平台上千万用户的应用建设
用户选择云计算平台构建应用程序的一个重要原因是高弹性的云平台和可扩展性. 面向Internet应用程序通常需要支持用户使用大量,但要建立一个高度可扩展.具有一定的挑战,高度可用的应用程序,只有立足AW ...
- AWS的EC2实例搭建服务器使用stackoverflow教程
作为一个技术开发工程师, 一个给力的问题解决方案搜索引擎是十分必要的, stackoverflow作为一个码农必备神器, 存在访问不稳定,有时候打不开的问题,下面介绍如何在亚马逊云服务器上搭建属于自己 ...
- Oracle数据库迁移到AWS云的方案
当前云已经成为常态,越来越多的企业希望使用云来增加基础设施的弹性.减轻基础设施的维护压力,运维的成本等.很多企业使用云碰到的难题之一是如何将现有的应用迁移到云上,将现有应用的中间件系统.Web系统及其 ...
- 亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计
设计高可用的应用是架构师的一个重要目标,可是基于云计算平台设计高可用应用与基于传统平台的设计有很多不同.云计算在给架构师带来了很多新的设计挑战的时候,也给带来了很多新的设计理念和可用的服务.怎样在设计 ...
随机推荐
- 用Selenium自动化测试时,让ChromeDriver中不显示“正受到自动测试软件控制”
背景: 在用Selenium做自动化测试的时候,默认ChromeDriver是会提示“Chrom正受到自动测试软件控制”的.如下图这样.但我们有些场景下,不希望这个提示出现.本文探索了几种语言去掉这个 ...
- go基础之不定参函数
指定类型参数 任意类型参数的变参 go语言同其他编程一样也提供了对变参函数的支持.本文简单讲解一下go中变参函数的使用方法. 指定类型参数 不定参数是指函数传入参数的个数为不确定数量,个数需要在调用的 ...
- linux命令之head、tail命令详解
head 语法 例子 tail 语法 例子 head和tail组合用法举例 head 语法 head [-n -k ]... [FILE]... 例子 默认是显示开头前10行. head /etc/p ...
- ubuntu下安装gcc
在ubuntu下安装gcc 第一次写blog,多多包涵! gcc安装步骤 废话不多说,gcc安装步骤如下: 1. sudo apt update 2. sudo apt install build-e ...
- [TimLinux] MySQL 导入sql文件数据慢的问题解决办法
慢的时候执行的命令: mysql -uusername -p -hip_address -Ddb_name < ./db.sql 快的时候执行的命令: mysql -uusername -p - ...
- CodeForces1000A- Codehorses T-shirts
A. Codehorses T-shirts time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- 如何正确的使用Python解释器?你之前肯定用错了
作为python开发者,当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件.要运行代码,就需要Python解释器去执行.py文件.由于整个Python语言从 ...
- 深入学习 OLED Adafruit_SSD1306库(8266+arduino)
QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷 单片机菜鸟博哥CSDN 1.前言 SSD1306屏幕驱动库,最出名应该就是u8g2,读者可以参考 玩转u ...
- layedit添加首行缩进
由于在编辑的时候,有首行缩进的需求,并且,如果直接使用空格进行缩进,还会出现layedit看到的效果和实际显示的效果不一致的情况.多方搜索无果,于是决定修改源代码.具体步骤如下: 1.首先找到laye ...
- 【Vuejs】350- 学习 Vue 源码的必要知识储备
前言 我最近在写 Vue 进阶的内容.在这个过程中,有些人问我看 Vue 源码需要有哪些准备吗?所以也就有了这篇计划之外的文章. 当你想学习 Vue 源码的时候,需要有扎实的 JavaScript 基 ...