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

相关推荐
MingYue_SSS12 分钟前
【未解决】STM32无刷电机驱动电路问题记录
笔记·嵌入式硬件·学习
天若有情67318 分钟前
【人工智能】当AI智能体遇上安全与伦理:一场技术与人性的对话
网络·人工智能·安全
破刺不会编程33 分钟前
linux线程互斥和同步
linux·运维·服务器·开发语言·网络
麦兜*1 小时前
【HTTP】防XSS+SQL注入:自定义HttpMessageConverter过滤链深度解决方案
java·网络·spring boot·sql·spring·http·xss
aodunsoft2 小时前
安全月报 | 傲盾DDoS攻击防御2025年7月简报
网络·安全·ddos
安庆平.Я2 小时前
STM32——HAL 库MDK工程创建
stm32·单片机·嵌入式硬件
zzc9212 小时前
USRP捕获手机/路由器数据传输信号波形(下)
网络·5g·路由器·ofdm·mimo·tenda·双工
hdsoft_huge2 小时前
ESXI虚拟交换机 + H3C S5120交换机 + GR5200路由器组网笔记
笔记·智能路由器
hack:D_K3 小时前
网络基础——路由控制
网络·经验分享·笔记·路由
DemonAvenger3 小时前
Go语言中的gRPC:原理与实战
网络协议·架构·go