随笔十七、eth0单网卡绑定双ip的问题

在调试语音对讲过程中遇到过一个"奇怪"问题:泰山派作为一端,可以收到对方发来的语音,而对方不能收到泰山派发出的语音。

用wireshark抓包UDP发现,泰山派发送的地址是192.168.1.30,而给泰山派实际设置的静态地址是192.168.1.99。由于接收端有地址识别,只接收99,因此30的数据应该是被丢弃了,导致不能播放音频。

vi /etc/network/interfaces

auto lo

iface lo inet loopback

#设置静态ip

auto eth0

iface eth0 inet static

address 192.168.1.99

netmask 255.255.255.0

gateway 192.168.1.1

dns-nameservers 8.8.8.8 8.8.4.4
root@RK356X:/# ip addr show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq qlen 1000

link/ether 3a:d8:ca:83:9d:c6 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.99/24 scope global eth0

valid_lft forever preferred_lft forever

inet 192.168.1.30/24 brd 192.168.1.255 scope global secondary eth0

valid_lft forever preferred_lft forever

inet6 2409:8a1e:34e3:c5d0:e611:99cb:aa75:d89a/64 scope global dynamic noprefixroute flags 100

valid_lft 259183sec preferred_lft 172783sec

inet6 fe80::bbea:148f:4e36:e288/64 scope link

valid_lft forever preferred_lft forever

root@RK356X:/#

自制的RK3566核心板因为还没有底板,无法连接有线网络,因此只看到etn0绑了一个99地址。

泰山派核心板经扩展版上的网口接路由器,估计是DHCP服务自动分配了30这个ip。

请教了全能的AI助手,给出如下建议:

明白了,开发板通过路由器获取了一个动态IP地址(通过DHCP),同时在 /etc/network/interfaces 文件中配置了一个静态IP地址。这种情况会导致网络接口拥有两个IP地址,可能会引起网络冲突或管理上的不便。

解决方案

为了确保网络接口只有一个IP地址,你可以选择以下两种方式之一:

  1. 仅使用DHCP分配的动态IP地址
  2. 仅使用静态IP地址

下面是具体的步骤来实现这两种方式:

方案一:仅使用DHCP分配的动态IP地址

如果你希望开发板只使用从路由器分配的动态IP地址,请修改 /etc/network/interfaces 文件,移除静态IP地址的配置。

  1. 编辑 /etc/network/interfaces 文件

    使用你喜欢的文本编辑器(如 vinano)打开 /etc/network/interfaces 文件:

    复制代码
    sudo nano /etc/network/interfaces
  2. 移除静态IP配置

    确保你的文件内容如下所示,仅保留 DHCP 配置:

    复制代码
    auto eth0
    iface eth0 inet dhcp
  3. 重启网络服务

    保存并关闭文件后,重启网络服务以应用更改:

    复制代码
    sudo systemctl restart networking
    # 或者
    sudo ifdown eth0 && sudo ifup eth0
  4. 验证网络配置

    使用以下命令检查网络接口是否只有一个IP地址:

    复制代码
    ip addr show eth0
方案二:仅使用静态IP地址

如果你希望开发板仅使用静态IP地址,请禁用DHCP客户端,并确保 /etc/network/interfaces 文件中正确配置了静态IP地址。

  1. 编辑 /etc/network/interfaces 文件

    使用你喜欢的文本编辑器(如 vinano)打开 /etc/network/interfaces 文件:

    复制代码
    sudo nano /etc/network/interfaces
  2. 配置静态IP地址

    修改文件内容为如下形式,指定静态IP地址、子网掩码和网关:

    复制代码
    auto eth0
    iface eth0 inet static
        address 192.168.1.100  # 请根据实际情况设置
        netmask 255.255.255.0  # 请根据实际情况设置
        gateway 192.168.1.1    # 请根据实际情况设置
  3. 禁用DHCP客户端

    如果你使用的是 dhclient,可以停止并禁用它:

    复制代码
    sudo systemctl stop dhclient
    sudo systemctl disable dhclient

    如果你使用的是 NetworkManager,可以通过以下命令禁用自动连接:

    复制代码
    nmcli connection modify "有线连接 1" ipv4.method manual
    nmcli connection down "有线连接 1"
    nmcli connection up "有线连接 1"
  4. 重启网络服务

    保存并关闭文件后,重启网络服务以应用更改:

    复制代码
    sudo systemctl restart networking
    # 或者
    sudo ifdown eth0 && sudo ifup eth0
  5. 验证网络配置

    使用以下命令检查网络接口是否只有一个IP地址:

    复制代码
    ip addr show eth0

验证与测试

无论你选择了哪种方案,在完成上述步骤后,都应该进行验证和测试:

  • Ping 测试:尝试从开发板 ping 路由器或其他设备,确保网络连接正常。

    复制代码
    ping 192.168.1.1  # 替换为实际的路由器IP地址
  • 连通性测试:如果需要访问互联网,尝试 ping 外部服务器,例如:

    复制代码
    ping 8.8.8.8  # Google 的公共DNS服务器
  • 网络接口状态检查:再次检查网络接口的状态,确保只有一个IP地址被分配。

    复制代码
    ip addr show eth0

通过以上步骤,你应该能够解决开发板上出现多个IP地址的问题,并确保网络连接稳定可靠。如果有任何问题或疑问,请随时告诉我!

相关推荐
老蒋新思维1 天前
创客匠人视角:智能体重构创始人 IP,知识变现从 “内容售卖” 到 “能力复制” 的革命
大数据·网络·人工智能·tcp/ip·创始人ip·创客匠人·知识变现
d111111111d1 天前
在STM32函数指针是什么,怎么使用还有典型应用场景。
笔记·stm32·单片机·嵌入式硬件·学习·算法
老蒋新思维1 天前
创客匠人:认知即资产 ——AI 时代创始人 IP 知识变现的底层逻辑
网络·人工智能·网络协议·tcp/ip·重构·创始人ip·创客匠人
♛识尔如昼♛1 天前
计算机组成原理(21) 第五章 - 总线性能指标
单片机·嵌入式硬件
快乐的划水a1 天前
windows用户态到内核态
stm32·单片机·嵌入式硬件
白驹过隙^^1 天前
OB-USP-AGENT安装使用方法
数据库·经验分享·网络协议·tcp/ip·github·ssl
Hy行者勇哥1 天前
从零搭建小智 AI 音箱 MCP 开发环境:自定义智能家居控制技能实战指南
人工智能·嵌入式硬件·硬件工程·智能家居
白帽子黑客罗哥1 天前
渗透测试技术:从入门到实战的完整指南
网络·安全·web安全·渗透测试·漏洞挖掘·网络安全培训
北邮刘老师1 天前
【智能体互联协议解析】ACPs/AIP为什么还在用“落后”的“中心化”架构?
网络·人工智能·架构·大模型·智能体·智能体互联网
winfield8211 天前
MCP 协议详解
开发语言·网络·qt