随笔十七、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地址,你可以选择以下两种方式之一:
- 仅使用DHCP分配的动态IP地址。
- 仅使用静态IP地址。
下面是具体的步骤来实现这两种方式:
方案一:仅使用DHCP分配的动态IP地址
如果你希望开发板只使用从路由器分配的动态IP地址,请修改
/etc/network/interfaces
文件,移除静态IP地址的配置。
编辑
/etc/network/interfaces
文件:使用你喜欢的文本编辑器(如
vi
或nano
)打开/etc/network/interfaces
文件:sudo nano /etc/network/interfaces
移除静态IP配置:
确保你的文件内容如下所示,仅保留 DHCP 配置:
auto eth0 iface eth0 inet dhcp
重启网络服务:
保存并关闭文件后,重启网络服务以应用更改:
sudo systemctl restart networking # 或者 sudo ifdown eth0 && sudo ifup eth0
验证网络配置:
使用以下命令检查网络接口是否只有一个IP地址:
ip addr show eth0
方案二:仅使用静态IP地址
如果你希望开发板仅使用静态IP地址,请禁用DHCP客户端,并确保
/etc/network/interfaces
文件中正确配置了静态IP地址。
编辑
/etc/network/interfaces
文件:使用你喜欢的文本编辑器(如
vi
或nano
)打开/etc/network/interfaces
文件:sudo nano /etc/network/interfaces
配置静态IP地址:
修改文件内容为如下形式,指定静态IP地址、子网掩码和网关:
auto eth0 iface eth0 inet static address 192.168.1.100 # 请根据实际情况设置 netmask 255.255.255.0 # 请根据实际情况设置 gateway 192.168.1.1 # 请根据实际情况设置
禁用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"
重启网络服务:
保存并关闭文件后,重启网络服务以应用更改:
sudo systemctl restart networking # 或者 sudo ifdown eth0 && sudo ifup eth0
验证网络配置:
使用以下命令检查网络接口是否只有一个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地址的问题,并确保网络连接稳定可靠。如果有任何问题或疑问,请随时告诉我!