随笔十七、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 小时前
Nginx配置中的常见错误:SSL参数解析
网络·nginx·安全
一ge科研小菜鸡1 小时前
实战网络安全:渗透测试与防御指南
网络
7yewh11 小时前
嵌入式知识点总结 Linux驱动 (三)-文件系统
linux·运维·驱动开发·stm32·嵌入式硬件·mcu·物联网
青春:一叶知秋13 小时前
【Linux网络编程】数据链路层
运维·服务器·网络
不悔哥13 小时前
使用openwrt搭建ipsec隧道
linux·c语言·网络·tcp/ip·智能路由器·openwrt
爱吃喵的鲤鱼13 小时前
Linux——网络基础(1)
linux·运维·网络
放我去玩单片机14 小时前
基于STM32的数字多重仪表教学
单片机·嵌入式硬件
山禾女鬼00114 小时前
深入了解 HTTP 头部中的 Accept-Encoding:gzip、deflate、br、zstd
网络·网络协议·http
7yewh15 小时前
嵌入式知识点总结 Linux驱动 (四)-中断-软硬中断-上下半部-中断响应
linux·驱动开发·stm32·嵌入式硬件·mcu·物联网·硬件工程
Andya_net15 小时前
网络安全 | F5-Attack Signatures详解
网络·安全·web安全