Linux指定网卡名称

udev是Linux(linux2.6内核之后)默认的设备管理工具。udev 以守护进程的形式运行,通过侦听内核发出来的 uevent 来管理 /dev目录下的设备文件。
动态管理:当设备添加 / 删除时,udev 的守护进程侦听来自内核的 uevent,以此添加或者删除 /dev下的设备文件,所以 udev 只为已经连接的设备产生设备文件,而不会在 /dev下产生大量虚无的设备文件。

自定义命名规则:通过 Linux 默认的规则文件,udev 在 /dev/ 里为所有的设备定义了内核设备名称,比如 /dev/sda、/dev/hda、/dev/fd等等。由于 udev 是在用户空间 (user space) 运行,Linux 用户可以通过自定义的规则文件,灵活地产生标识性强的设备文件名,比如 /dev/boot_disk、/dev/root_disk、/dev/color_printer等等。

设定设备的权限和所有者 / 组:udev 可以按一定的条件来设置设备文件的权限和设备文件所有者 / 组

在规则中简单的匹配网卡MAC地址是有意义的,因为它们是唯一的.
查看网卡信息

udevadm info -a -p /sys/class/net/eth0

looking at class device ‘/sys/class/net/eth0’:
KERNEL==“eth0”
ATTR{address}“00:52:8b:d5:04:48”
规则如下:
KERNEL
"eth*", ATTR{address}==“00:52:8b:d5:04:48”, NAME=“lan”

这样就重命名了eth*为lan

a40i有多个网卡,某些场景下需要将具体网卡和外部硬件接口名称(或丝印名称)对应起来,配置示例:
首先查看网卡信息:

[root@a40i]:~$:udevadm info -a -p /sys/class/net/eth0

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/soc.0/1c0b000.eth/net/eth0':
    KERNEL=="eth0"
    SUBSYSTEM=="net"
    DRIVER==""
    ATTR{mtu}=="1500"
    ATTR{type}=="1"
    ATTR{netdev_group}=="0"
    ATTR{flags}=="0x1003"
    ATTR{speed}=="100"
    ATTR{dormant}=="0"
    ATTR{addr_assign_type}=="3"
    ATTR{dev_id}=="0x0"
    ATTR{duplex}=="full"
    ATTR{iflink}=="4"
    ATTR{addr_len}=="6"
    ATTR{address}=="36:c9:e3:f1:b8:04"
    ATTR{operstate}=="up"
    ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"
    ATTR{tx_queue_len}=="1000"
    ATTR{ifalias}==""
    ATTR{ifindex}=="4"
    ATTR{link_mode}=="0"
    ATTR{carrier}=="1"

  looking at parent device '/devices/soc.0/1c0b000.eth':
    KERNELS=="1c0b000.eth"
    SUBSYSTEMS=="platform"
    DRIVERS=="sun4i-emac"

  looking at parent device '/devices/soc.0':
    KERNELS=="soc.0"
    SUBSYSTEMS=="platform"
    DRIVERS==""
    
[root@a40i]:~$:

/etc/ udev/rules.d中新建规则文件a.rules

KERNEL=="eth*", DRIVERS=="sun4i-emac",KERNELS=="1c0b000.eth",NAME="lan0",RUN+="/usr/bin/setemac.sh"
KERNEL=="eth*", DRIVERS=="sunxi-gmac",KERNELS=="1c50000.eth", NAME="lan1",RUN+="/usr/bin/setgmac.sh"
KERNEL=="eth*", ATTR{address}=="00:e0:86:a0:8f:a3", NAME="lan2",RUN+="/sbin/ifconfig %k 192.168.4.101"
KERNEL=="eth*", ATTR{address}=="00:e0:86:a0:8f:bd", NAME="lan3",RUN+="/sbin/ifconfig %k 192.168.5.101"
KERNEL=="eth*", ATTR{address}=="00:e0:86:a0:92:7b", NAME="lan4",RUN+="/sbin/ifconfig %k 192.168.6.101"
KERNEL=="eth*", ATTR{address}=="00:e0:86:a0:91:91", NAME="lan5",RUN+="/sbin/ifconfig %k 192.168.7.101"

其中setemac.sh内容

#!/bin/sh
ifconfig lan0 down
ifconfig lan0 hw ether 36:C9:E3:F1:B8:04
ifconfig lan0 192.168.2.101
ifconfig lan0 up

setgmac.sh内容


#!/bin/sh
ifconfig lan1 down
ifconfig lan1 hw ether 36:C9:E3:F1:B8:05
ifconfig lan1 192.168.3.101
ifconfig lan1 up

注意:修改mac地址命令必须放到修改IP命令前面,否则出现Device Busy错误。

<think>好的,用户想在Linux中使用指定网卡执行ping命令。首先,我需要回忆一下ping命令的相关参数和选项。通常,ping命令是用来测试网络连接的,但默认情况下它可能使用系统默认的路由表来选择出口网卡。如果要指定网卡,可能需要用某个选项来设置源接口或IP地址。 根据之前学过的知识,Linux中的ping命令有一个-I选项,用于指定发送数据包的网络接口。比如,使用ping -I eth1 8.8.8.8就会通过eth1网卡发送ICMP请求。不过,我需要验证一下这个选项的正确性,避免记错了。 然后,考虑到用户可能需要通过接口名称或IP地址来指定,比如有些系统允许使用接口名称,而有些可能需要绑定到该接口的IP地址。这时候需要区分两种情况,并给出相应的例子。例如,如果网卡eth0的IP是192.168.1.100,那么用户可能需要用ping -I eth0目标地址,或者ping -I 192.168.1.100目标地址。这两种方式是否都有效呢?需要确认文档。 接下来,用户可能遇到权限问题,因为普通用户可能没有权限使用-I选项,这时候需要提示使用sudo。同时,如果指定网卡没有正确的IP配置,或者目标地址不可达,ping会失败,需要提醒用户检查配置。 另外,用户可能需要知道如何查看可用的网卡列表,可以使用ip addr或ifconfig命令。这部分可以作为补充说明,帮助用户确认自己的网卡名称是否正确。 最后,总结步骤:使用-I选项加接口名或IP,注意权限问题,验证配置是否正确,并提供示例和常见问题解决方法。同时,根据用户提供的引用内容,可以引用相关的资料来支持解答,比如引用[1]、[2]、[3]中关于ping命令的说明,增强可信度。</think>在 Linux 中通过指定网卡执行 ping 命令,可通过 `-I` 参数指定网络接口。以下是具体实现方法: ### 方法 1:使用网卡接口名称 ```bash ping -I <网卡名称> <目标地址> ``` 示例(指定 eth0 网卡测试与 8.8.8.8 的连通性): ```bash ping -I eth0 8.8.8.8 ``` ### 方法 2:使用网卡绑定的 IP 地址 ```bash ping -I <本机网卡IP> <目标地址> ``` 示例(指定 192.168.1.100 的 IP 接口测试): ```bash ping -I 192.168.1.100 google.com ``` ### 注意事项 1. **权限要求**:普通用户可能需要 `sudo` 权限执行 2. **接口有效性**:需确保指定网卡已启用且有 IP 配置(通过 `ip addr` 或 `ifconfig` 查看) 3. **跨网段测试**:当目标地址与指定网卡不在同一子网时,需检查路由表配置[^3] ### 原理说明 `-I` 参数强制 ICMP 回显请求从指定接口发出,绕过系统默认路由选择。这种操作常用于多网卡服务器中测试特定网络路径的连通性[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值