当前位置: 首页 > article >正文

随笔十七、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地址的问题,并确保网络连接稳定可靠。如果有任何问题或疑问,请随时告诉我!


http://www.kler.cn/a/520241.html

相关文章:

  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】 1.3 广播机制:维度自动扩展的黑魔法
  • STM32完全学习——RT-thread在STM32F407上移植
  • 飞牛 fnOS 安装8852be网卡驱动并成功连接
  • 数据结构——二叉树——堆(1)
  • 2024年度总结(具身智能赛道,欢迎交流)
  • Spring整合Mybatis、junit纯注解
  • 题解 洛谷 Luogu P1113 杂务 图论 BFS C++
  • 计算机网络之链路层
  • CommonAPI学习笔记-1
  • 【Oracle篇】使用Hint对优化器的执行计划进行干预(含单表、多表、查询块、声明四大类Hint干预)
  • 牛客训练营(一)补题
  • 【2025AI发展预测】2.2025的风口与发展,我们如何主动拥抱这一浪潮
  • 可见光通信代码仿真
  • 狗狗能吃萝卜吗?
  • vim可视化模式的进阶操作
  • C# 类(Class)
  • SOME/IP--协议英文原文讲解1
  • 深度解析:基于Vue 3的教育管理系统架构设计与优化实践
  • 【论文阅读笔记】“万字”关于深度学习的图像和视频阴影检测、去除和生成的综述笔记 | 2024.9.3
  • 【趋势】《2024—2026金融科技十大趋势预测》一览
  • 【学术会议-第五届机械设计与仿真国际学术会议(MDS 2025) 】前端开发:技术与艺术的完美融合
  • Kiwi 安卓浏览器本月停止维护,扩展功能迁移至 Edge Canary
  • 基于SpringBoot的在线众筹网的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • Linux 内核学习(5) --- Linux 内核底半部机制
  • 微信小程序-点餐(美食屋)02开发实践
  • 基于DNN深度神经网络的OFDM+QPSK信号检测与误码率matlab仿真