[root@localhost ~]# cat nic-info.sh #!/bin/bash hostname echo "-------------" for iname in $(ip addr |awk '/state UP/{print $2}') do echo "$iname" ip addr show $iname | grep inet | awk '{printf "%s:\t%s\n",$1,$2}' ip link show $iname | grep link | awk '{printf "MAC:\t%s\n",$2}' ethtool ens33 | awk '/Speed/{printf "%s\t%s\n",$1,$2}' done
时间: 2024-03-13 15:42:57 浏览: 153
这个脚本可以显示所有处于 UP 状态的网卡信息,包括网卡名称、IP 地址、MAC 地址和网卡速度。
不过,脚本中的 `ethtool` 命令只针对 `ens33` 网卡,如果想要针对所有网卡显示网卡速度,可以将 `ethtool ens33` 改为 `ethtool $iname`,即:
```bash
#!/bin/bash
hostname
echo "-------------"
for iname in $(ip addr | awk '/state UP/{print $2}')
do
echo "$iname"
ip addr show $iname | grep inet | awk '{printf "%s:\t%s\n",$1,$2}'
ip link show $iname | grep link | awk '{printf "MAC:\t%s\n",$2}'
ethtool $iname | awk '/Speed/{printf "%s\t%s\n",$1,$2}'
done
```
这样就可以显示所有网卡的速度信息了。
相关问题
root@lmMortalwrt:~# ifconfig eth down77.552830]br-lan:port 1(eth)entered disabled stateroot@ImMortalWrt:~# ifconfig eth up82.94539818821g:adding VAN to Hw filter on device ethroot@ImMortalwrt:“#[ 82.962136]e1888:eth8 Nic link is Up 1888 Mbps Full Duplex,Flow Control:None82.9634911br-lan:port1eth)entered blocking state82.9638871 br-lan:port1(etha)entered forwarding state root@IMMortalWrt:~#ip route showroot@lmMortalwrt:~#ip addr show eth2:eth:<BROAICAST,MULTICAST,UP,LOWER UP>mtu 1588 qdisc fq_codel master br-lanstate UP group default qlen 1888link/ether :0c:29:88:a8:5d brd ff:ff:ff:ff:ff:ffroot@IMMortallrt:~#
<think>好的,用户又发来了一些新的命令输出,看起来他们正在尝试解决网络接口的问题。首先,我需要仔细看看用户提供的这些信息。用户之前的问题是关于网络不可达和接口配置错误,现在他们执行了关闭和启用eth接口的操作,并展示了相关的系统日志以及ip命令的输出。
首先,用户输入了“ifconfig eth down”和“ifconfig eth up”,但注意到系统日志中有一些错误信息,比如“br-lan:port 1(eth) entered disabled state”和“VAN to Hw filter on device eth”,这可能意味着在关闭和启用接口时,网桥和接口的状态发生了变化。另外,用户还运行了“ip route show”和“ip addr show eth”,但输出中似乎没有显示有效的IPv4地址,这可能解释了为什么之前ping不通网关。
接下来,我需要分析用户当前的网络配置是否存在问题。从“ip addr show eth”的输出来看,接口eth没有分配IPv4地址,只有IPv6的本地链接地址,这说明DHCP可能没有成功获取地址,或者静态IP配置不正确。此外,路由表可能没有正确的默认网关,导致网络不可达。
用户之前尝试过重启接口,但问题依旧,可能需要检查物理连接,比如网线是否插好,或者交换机端口是否有问题。另外,防火墙设置和Tailscale的影响也需要考虑,尤其是Tailscale可能会覆盖路由表,导致本地网络不可达。
还需要注意用户提到的系统日志中的VAN Hw filter信息,这可能与驱动或硬件兼容性有关,尤其是在使用OpenWrt这样的定制固件时,可能需要检查驱动是否正确安装或者是否有固件更新。
最后,用户可能需要设置静态IP地址或者检查DHCP服务器的配置,确保接口能够正确获取IP,并添加默认网关。同时,检查防火墙规则,确保没有阻止ICMP请求或相关流量。如果Tailscale在运行,可能需要暂时禁用它来排除干扰。
总结一下,用户的问题可能出在接口没有正确配置IP地址、路由缺失、物理连接问题或软件(如Tailscale、防火墙)干扰。需要一步步排查这些可能性,从基础配置开始,逐步深入。</think>以下是针对你提供的网络配置和日志信息的详细分析及解决方案:
---
### 一、当前网络状态诊断
#### 1. **接口操作日志分析**
```bash
root@ImMortalWrt:~# ifconfig eth down
[77.552830] br-lan:port 1(eth) entered disabled state # 接口被禁用,网桥端口关闭
root@ImMortalWrt:~# ifconfig eth up
[82.945398] eth: adding VAN to Hw filter on device eth # 硬件过滤规则异常(可能与驱动相关)
[82.962136] eth: Nic link is Up 1000 Mbps Full Duplex # 物理链路正常(千兆全双工)
[82.963491] br-lan:port 1(eth) entered blocking state # 网桥端口重新激活
[82.963887] br-lan:port 1(eth) entered forwarding state # 网桥端口进入转发状态
```
- **关键问题**:
- `VAN to Hw filter` 警告可能由驱动兼容性问题导致(常见于某些定制网卡或OpenWrt固件)。
#### 2. **IP地址和路由表检查**
```bash
root@ImMortalWrt:~# ip addr show eth
2: eth: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1580 ...
link/ether 00:0c:29:88:a8:5d brd ff:ff:ff:ff:ff:ff
# 未显示 IPv4 地址,仅存在 IPv6 本地链路地址(fe80::)
```
```bash
root@ImMortalWrt:~# ip route show
# 无有效默认路由或局域网路由(需补充完整输出)
```
- **核心问题**:
- **接口未分配 IPv4 地址**(DHCP 失败或静态配置缺失)。
- **路由表不完整**,导致 `ping 192.168.2.1` 失败(网络不可达)。
---
### 二、分步解决方案
#### 步骤 1:修复 IPv4 地址分配
```bash
# 尝试通过 DHCP 获取 IP(若使用动态分配)
udhcpc -i eth -n -q # OpenWrt 专用命令
# 或手动设置静态 IP(示例)
ifconfig eth 192.168.1.100 netmask 255.255.255.0
```
- **验证**:
```bash
ip addr show eth | grep "inet " # 检查是否出现 IPv4 地址
```
#### 步骤 2:添加默认网关
```bash
# 假设网关为 192.168.1.1
route add default gw 192.168.1.1 eth
```
- **验证路由表**:
```bash
ip route show
# 应显示类似:default via 192.168.1.1 dev eth
```
#### 步骤 3:排查驱动和硬件过滤问题
- **禁用硬件过滤规则**(临时测试):
```bash
ethtool -K eth rx off tx off # 关闭接收/发送校验(谨慎操作)
```
- **检查驱动兼容性**:
```bash
dmesg | grep eth # 查看内核日志中网卡初始化状态
opkg list-installed | grep e1000 # 示例:检查 Intel 网卡驱动
```
#### 步骤 4:验证网络连通性
```bash
ping 192.168.1.1 # 测试网关
ping 8.8.8.8 # 测试外网(需先解决网关问题)
```
---
### 三、关键问题解析
#### 1. **IPv4 地址缺失**
- **可能原因**:
- DHCP 服务器未响应(检查路由器 DHCP 功能是否开启)。
- 静态 IP 配置错误(检查子网掩码和网关是否匹配)。
- **排查命令**:
```bash
cat /etc/config/network # OpenWrt 网络配置文件
```
#### 2. **`VAN to Hw filter` 警告**
- **深层原因**:
- 网卡驱动尝试启用虚拟局域网(VLAN)过滤,但硬件不支持。
- OpenWrt 固件与特定网卡型号存在兼容性问题。
- **解决方案**:
```bash
# 永久关闭 VLAN 过滤(编辑网络配置)
vim /etc/config/network
# 在 eth 接口配置中添加:option hwfilter '0'
```
---
### 四、操作流程图
```mermaid
graph TD
A[接口无 IPv4 地址] --> B{DHCP 或静态配置}
B -->|DHCP 失败| C[检查 DHCP 服务器]
B -->|静态配置| D[验证 IP/掩码/网关]
A --> E{驱动兼容性}
E -->|是| F[更新驱动/固件]
E -->|否| G[关闭硬件过滤]
G --> H[重启网络服务]
```
---
### 五、补充建议
1. **检查物理连接**:
- 更换网线或测试其他交换机端口。
- 使用 `ethtool eth` 查看网卡协商状态:
```bash
ethtool eth | grep -E "Speed|Duplex|Link detected"
```
2. **重置网络配置**:
```bash
/etc/init.d/network restart # OpenWrt 重启网络服务
```
3. **固件升级**:
```bash
# 更新软件包列表并升级内核驱动
opkg update
opkg install kmod-e1000 # 根据实际网卡型号安装驱动
```
---
### 六、注意事项
- **硬件过滤风险**:关闭 `VAN Hw filter` 可能影响某些高级功能(如 VLAN 隔离),需评估网络需求。
- **日志监控**:持续观察系统日志以捕获瞬时错误:
```bash
logread -f | grep eth
```
请根据上述步骤操作,若问题仍未解决,请提供以下完整信息:
1. `cat /etc/config/network`
2. `dmesg | grep eth`
3. `ip route show` 完整输出
阅读全文
相关推荐



