redhat没有eth2设备
『壹』 redhat5无法激活网络设备etho 用的虚拟机,配置ip时候不能激活 怎么回事呀
是不是 eth0 ONBOOT=no 要改为yes
======================
临时生效命令
#ifconfig eth0 192.168.0.22 netmask 255.255.255.0 (up)
添加第一块网卡ip 与子网掩码
#route add default gw 192.168.0.1 dev eth0
添加缺省路由 gw =gateway 网关 dev eth0设备的第一个网卡
Redhat Centos
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 设备名称
BOOTPROTO=dhcp /static 自动获取/静态ip
IPADDR=IP地址
NETMASK=掩码
GATEWAY=网关
ONBOOT=yes 开机激活网卡
#service network restart 重启网络
(网卡不是ifcfg-eth0 而是em1、2、3
#mv ifcfg-em1 ifcfg-eth0
#vi ifcfg-eth0
DEVICE=em1
BOOTPROTO=dhcp /static 自动获取/静态ip
IPADDR=IP地址
.....
.....
.....)
DNS 配置 没有它不能解析域名 只可以访问ip
vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 202.xx.xx.xx 最多能添加3个
单网卡双ip配置
cp ifcfg-eth0 ifcfg-eth0:1
ifconfig eth0:1 ip
这是我笔记
『贰』 redhat网卡启动问题,eth1报错rtnetlink answers no such device
感觉是网卡一驱动没装,或者没成功,或者坏掉了。
『叁』 Linux 企业7版本,虚拟机下只有lo网卡没eno和eth0网卡,
此原因可以按照以下步骤分析:
注意:在操作时候建议关闭NetworkManager服务(service NetworkManager stop;chkconfig NetworkManager off)
1、网卡驱动,一般用vm安装不会有此种情况
2、ifconfig -a 看下所有的网卡。默认是按照eht0 1.2.3.4—排序,当网络没有连接的时候
然后ifconfig -a可以看到主机上有几块网卡以及名称:
这样可以确定网卡存在,没有问题。如果不存在任何ethx的话,说明网卡有问题。
3、然后进入配置文件(里面是没有ifcfg-eth0的只有个lo):
[root@redhat]# cd /etc/sysconfig/network-scripts/
[root@redhat]# ls
ifcfg-lo ifdown-bnep ifdown-ipv6 ifdown-ppp ifdown-tunnel ifup-bnep
ifup-ipv6 ifup-plusb ifup-routes ifup-wireless network-functions
ifcfg-lo ifdown-eth ifdown-isdn ifdown-routes ifup ifup-eth ifup-isdn ifup-post ifup-sit init.ipv6-global network-functions-ipv6
ifdown ifdown-ippp ifdown-post ifdown-sit ifup-aliases ifup-ippp ifup-plip ifup-ppp ifup-tunnel net.hotplug
4、这样可以新建个ifcfg-ethx。
然后编辑里面内容添加:
ONBOOT=yes
USERCTL=no
PEERDNS=yes
TYPE=Ethernet
DEVICE=eth1 #//(此处的1是网卡设备的序号也就是ifconfig -a中看到的网卡名称后缀数字)
HWADDR=00:0c:29:64:c2:5f #此处可以不添加,根据自己机器而定(建议先不添加地址是网卡的地址,可以在虚拟机设置里面查看。)
BOOTPROTO=dhcp
5、然后保存重启服务
service network restart
『肆』 redhat 万兆和千兆的网卡命名问题
新弄了一批机器,为了准备切换到万兆环境,给机器配了双千兆和双万兆混合的4接口网卡,然后就出了一点问题
centos 7 引入了网络一致化命名规则,具体可以看红帽的联网指南
主要部分摘抄如下
------------引用专用分割线----------------------------
8.1. 命名方案层级结构
默认情况下,systemd 会使用以下策略,采用支持的命名方案为接口命名:
方案 1: 如果固件或 BIOS 信息适用且可用,则使用整合了为板载设备提供索引号的固件或 BIOS 的名称(例如:eno1),否则请使用方案 2。
方案 2: 如果固件或 BIOS 信息适用且可用,则使用整合了为 PCI 快速热插拔插槽提供索引号的固件或 BIOS 名称(例如 ens1),否则请使用方案 3。
方案 3: 如果硬件连接器物理位置信息可用,则使用整合了该信息的名称(例如:enp2s0),否则请使用方案 5。
方案 4: 默认不使用整合接口 MAC 地址的名称(例如:enx78e7d1ea46da),但用户可选择使用此方案。
方案 5: 传统的不可预测的内核命名方案,在其他方法均失败后使用(例如: eth0)。
这个策略(如上所述)是默认策略。如果该系统已启用 biosdevname ,则会使用该方案。注:启用 biosdevname 需要添加 biosdevname=1 作为命令行参数(Dell 系统除外),此时只要安装 biosdevname ,就会默认使用该方案。如果用户已添加 udev 规则,该规则会更高内核设备名称,则会优先使用这些规则。
设备命名过程如下:
/usr/lib/udev/rules.d/60-net.rules 文件中的规则会让 udev 帮助工具 /lib/udev/rename_device 查看所有 /etc/sysconfig/network-scripts/ifcfg- suffix 文件。如果发现包含 HWADDR 条目的 ifcfg 文件与某个接口的 MAC 地址匹配,它会将该接口重命名为 ifcfg 文件中由 DEVICE 指令给出的名称。
/usr/lib/udev/rules.d/71-biosdevname.rules 中的规则让 biosdevname 根据其命名策略重命名该接口,即在上一步中没有重命名该接口、已安装 biosdevname 、且在 boot 命令行中将 biosdevname=0 作为内核命令给出。
/lib/udev/rules.d/75-net-description.rules 中的规则让 udev 通过检查网络接口设备,填写内部 udev 设备属性值 ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH。注:有些设备属性可能处于未定义状态。
/usr/lib/udev/rules.d/80-net-name-slot.rules 中的规则让 udev 重命名该接口,优先顺序如下:ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH。并提供如下信息:没有在步骤 1 或 2 中重命名该接口,同时未给出内核参数 net.ifnames=0。如果一个参数未设定,则会按列表的顺序设定下一个。如果没有设定任何参数,则不会重命名该接口。
-----------以上是红帽的联网指南-------
其实简述上面的信息就是首先看内核参数是否启用了biosdevname=1 (默认是启用),如果bios提供了设备的名称就使用bios提供的名称
如果没有,就根据网卡配置中 device=eth,em,xyz 的名字来命名这个网卡,但是如果这样命名的话,必须在配置里写死网卡的mac地址
作为网卡的识别标志,对单网卡当然没什么问题,但是如果在集群环境里,HA,以及bonding环境里,为了快速切换网络流量,往往要屏蔽mac,
使用虚拟mac,或者多块网卡使用一个mac地址,这个时候需要在配置文件里屏蔽mac地址,因此就需要区改udev的配置文件来解决
我所遇到的问题是,使用了biosdevname=0和 net.ifnames=0 参数后,(因为以前有大量的centos6的机器,为了移植方便,不使用一致性命名规则,网卡名依然是eth0,eth1.。。。)安装服务器时一切正常,但启动系统后,发现系统将插在第一个端口的网卡认为是eth2,和预期不符,本能的认为udev可以解决问题,于是添加了udev的规则
```
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xa", ATTR{type}=="1", KERNEL=="*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xb", ATTR{type}=="1", KERNEL=="*", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xc", ATTR{type}=="1", KERNEL=="*", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:6e:96:ac:a1:xd", ATTR{type}=="1", KERNEL=="*", NAME="eth3"
```
发现不起作用,,难道写错了?换个规则,用pci设备号去绑定
SUBSYSTEM=="net", ACTION=="add", KERNEL=="eth*", SUBSYSTEM=="pci", KERNELS===="0000:01:00.0", NAME="eth0"
依然没用
用下面的命令debug一下
udevadm test /sys/class/net/eth0
结果缩略如下
rules contain 49152 bytes tokens (4096 * 12 bytes), 13451 bytes strings
2076 strings (25677 bytes), 1399 de-plicated (12904 bytes), 678 trie nodes used
NAME 'eth2' /etc/udev/rules.d/60-net.rules:6
IMPORT builtin 'net_id' /usr/lib/udev/rules.d/75-net-description.rules:6
IMPORT builtin 'hwdb' /usr/lib/udev/rules.d/75-net-description.rules:12
IMPORT builtin 'path_id' /usr/lib/udev/rules.d/80-net-setup-link.rules:5
IMPORT builtin 'net_setup_link' /usr/lib/udev/rules.d/80-net-setup-link.rules:9
No matching link configuration found.
RUN '/usr/lib/systemd/systemd-sysctl --prefix=/net/ipv4/conf/$name --prefix=/net/ipv4/neigh/$name --prefix=/net/ipv6/conf/$name --prefix=/net/ipv6/neigh/$name' /usr/lib/udev/rules.d/99-systemd.rules:55
Error changing net interface name 'eth0' to 'eth2': File exists
could not rename interface '2' from 'eth0' to 'eth2': File exists
created db file '/run/udev/data/n2' for '/devices/pci0000:00/0000:00:1c.4/0000:06:00.0/net/eth0'
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:06:00.0/net/eth0
ID_BUS=pci
ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P X540/I350 rNDC)
粗体看到原来是设备已经存在,无法重命名,于是想到的重新加载驱动
modprobe -rv igb
modprobe -rv ixgbe
然后按顺序加载驱动
modprobe ixgbe
modprobe igb
终于可以看到效果了,不过重启就完蛋了
于是想是否可以调整驱动加载顺序?
找了半天文档,发现可以通过重新打包内核启动文件和编译内核两条路实现,不过这显然又增加了很多麻烦,总不能升级一次内核,就重新打一次包吧
看看其他方法。最好发现简单的方法就是修改启动内核的参数 将 biosdevname=0和net.ifnames=0 改为 biosdevname=0和net.ifnames=1 ,这样系统启动时,会按照上述一致性命名规则,重新命名网卡,可以预期的是,已dell板载网卡为例,网卡会依次命名为eno1,eno4,等等,然后再加载udev规则,按照udev规则,再次重新命名为我们期望的eth0,eth1,等等
当然配置文件可以用ansible搞定,我这里的模版内容就是
ifcfg-eth0.j2
------
NAME="eth0"
DEVICE="eth0"
ONBOOT=yes
HWADDR="{{ hostvars[inventory_hostname].ansible_eth1.macaddress }}"
NETBOOT=yes
IPV6INIT=no
BOOTPROTO=static
TYPE=Ethernet
----------
这样udev 规则就生效了,其实就是启动过程中,当上述两个参数全为0时,网络设备只能叫ethx,先加载的驱动抢占了eth0和eth1时,(我这里是千兆的设备驱动 igb先启动)后起的设备想按udev规则rname时,发现eth0,和eth1 已经被占据了,因此命名失败,所以深入理解启动顺序和动作其实还是蛮重要的
参考链接 https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/networking_guide/sec-understanding_the_device_renaming_procere
红帽知识库文章引用如下
『伍』 虚拟机linux添加的新网卡没有发现其配置文件eth1和eth2。
首先,有没有发现这个配置文件都没有什么所谓的
先查看vi /etc/udev/rules.d/70-persistent-net.rules
这里能看到你的网卡信息,找到你对应网卡的NAME
例如
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:8f:89:9
7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
这里网卡名定义为eth0
然后vi /etc/sysconfig/network-sprict/ifcfg-eth0 新建并编辑这个网卡配置文件,名字其实随意
内容
DEVICE=eth0 对应上面找到的网卡名,这个是关键,其他的按照默认的设置就可以了
设置完之后重启下服务即可识别使用了
跟你说一件事吧,在VM里面,你添加了网卡,就算使用了 ifconfig -a也有时候查看不到任何网卡的,但是你的网卡又确实存在。。。。
『陆』 Linux系统\Centos没有网卡eth0配置文件怎么办
一、配置文件详解
在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 设定主机的不同端口的网络服务
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,配置例子:
DEVICE="eth0"
BOOTPROTO="static"
BROADCAST="192.168.0.255"
HWADDR="00:16:36:1B:BB:74"
IPADDR="192.168.0.100"
NETMASK="255.255.255.0"
ONBOOT="yes"
参数简要解释:
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
这下即使重启网络,重启系统,该路由也会自动加载,当然了,如果你没有这样的需要,那么这个文件就没必要创建和配置了。
『柒』 redhat 找不到eth0等网卡设备
redhat不能上网,用ifconfig 查看,竟然没有eth0 设备。。。
各种查资料,找原因,然并卵。。。。。。
各种坑,填满之后得出方法,在这里简单记录一下解决方法
『捌』 redhat启动时ifcfg-eth2中的网卡配置不起作用
ONBOOT=yes
『玖』 redhat9.0不能上网,ping不通网关
首先在文本界面打入命令ifconfig查看是否有eth0(网卡)设备的存在
然后使用netconfig进行网络配置 选择use dynamic ip configruation (BOOTP/DHCP)自动获取网络ip 这时将获取你本机的ip地址
要是你知道自己的ip也可自己打入 不选择use
然后进入/etc/sysconfig/network-scripts目录中查看ifcfg-eth0文件
使用vi ifcfg-eth0修改文件 到文件末尾添加
check_link_down(){
return 1;
}
然后用末行命令存盘:wq
然后输入ifup eth0 判段网卡是否可以启动 只要不显示命令有误就应该是配好了
如想改主机名的话进入目录 /etc/sysconfig 修改文件network 的HOSTNAME=本机名
**最后一定要应用新的网络配置service network restart一定要键入这个命令
应该就行叻
你只有192.168.0.18 这个ip,修改为6本身这ip就不可用。
用你实体机的就好叻