You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4B Ubuntu22.04 eth0仅分配IPv6无法为直连设备分配IPv4

树莓派4B Ubuntu 22.04 双网卡网络配置故障修复方案

背景信息

配置需求

  • wlan0接口接入上游无线网络,通过上游路由器DHCP自动分配IP实现联网
  • eth0接口通过网线直连仅支持IPv4协议的终端设备,由树莓派为直连设备分配IPv4地址,实现双向通信

故障现象

  • eth0接口默认仅分配IPv6地址,无法为直连的IPv4设备分配地址
  • 目标终端直连Windows电脑时可自动获取169.254.15.70链路本地地址,直连树莓派eth0后,树莓派发往该终端的所有请求超时无响应
  • 尝试两种全局禁用IPv6的操作后,第一种无任何效果,第二种直接导致eth0接口IPv4网络完全失效

设备环境

  • 硬件:树莓派4B rev 1.5
  • 系统:Ubuntu Server 22.04 LTS

修复步骤

注意:Ubuntu 22.04的网络管理组件对IPv6存在基础依赖,全局禁用IPv6会导致接口IPv4配置加载异常,无需禁用IPv6即可实现需求,首先需要还原之前错误修改的IPv6禁用配置。

步骤1:还原错误配置,恢复基础网络

执行以下命令还原sysctl、grub中修改的IPv6禁用参数,重启后恢复网络初始状态:

# 清理sysctl.conf中的IPv6禁用配置
sudo sed -i '/net.ipv6.conf.all.disable_ipv6/d' /etc/sysctl.conf
sudo sed -i '/net.ipv6.conf.default.disable_ipv6/d' /etc/sysctl.conf
sudo sed -i '/net.ipv6.conf.lo.disable_ipv6/d' /etc/sysctl.conf
sudo sysctl -p

# 清理grub启动参数中的IPv6禁用配置(如果之前修改过)
sudo sed -i 's/ipv6.disable=1//g' /etc/default/grub
sudo update-grub

sudo reboot

重启后执行ip a确认wlan0已正常获取上游DHCP分配的IP,可正常访问外网。

步骤2:通过netplan配置eth0静态IPv4地址

Ubuntu 22.04默认使用netplan管理网络,先执行ls /etc/netplan/查看目录下的配置文件名(通常为00-installer-config.yaml、50-cloud-init.yaml这类名称),编辑对应配置文件:

sudo nano /etc/netplan/替换为你的实际配置文件名.yaml

注意:YAML文件严格要求缩进为2个空格,禁止使用Tab键;原有wlan0的wifi配置全部保留,仅新增/修改eth0段配置
参考配置如下:

network:
  ethernets:
    eth0:
      addresses:
        - 192.168.100.1/24  # 为eth0配置的静态IPv4地址,需和wlan0所在网段不冲突
      dhcp4: no  # 关闭eth0的DHCP客户端,不从外部获取IP
      optional: true
  wifis:
    # 此处保留原有wlan0的所有配置,不要修改
  version: 2

保存退出后执行以下命令应用配置:

sudo netplan apply

执行ip a确认eth0已正确绑定192.168.100.1/24的IPv4地址。

步骤3:配置DHCP服务为直连终端分配IPv4地址

使用dnsmasq作为轻量DHCP服务器,安装并配置:

sudo apt update
sudo apt install -y dnsmasq

编辑dnsmasq主配置文件:

sudo nano /etc/dnsmasq.conf

在文件末尾追加以下配置:

interface=eth0  # 仅监听eth0接口
listen-address=192.168.100.1  # 绑定eth0的静态IP
bind-interfaces  # 不监听其他接口,避免影响wlan0正常网络
dhcp-range=192.168.100.10,192.168.100.200,255.255.255.0,24h  # 分配的IP地址段、子网掩码、租期
dhcp-option=3,192.168.100.1  # 为终端下发网关地址
dhcp-option=6,192.168.100.1  # 为终端下发DNS地址

保存退出后重启服务并设置开机自启:

sudo systemctl restart dnsmasq
sudo systemctl enable dnsmasq

步骤4:配置转发与NAT规则

开启内核IPv4转发,配置NAT规则实现eth0和wlan0网段的通信,若需要直连终端通过树莓派访问外网也可直接生效:

# 开启内核IPv4转发
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

# 安装持久化工具保存iptables规则,避免重启后丢失
sudo apt install -y iptables-persistent

# 配置NAT伪装与转发规则
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

# 保存规则
sudo netfilter-persistent save

验证与排查

  • 验证连通性:将终端通过网线直连eth0,重启终端网络后查看终端IP,确认获取到192.168.100.0/24网段地址;在树莓派端ping终端IP、终端端ping 192.168.100.1,确认无丢包
  • DHCP分配失败排查:先确认网线物理连接正常,执行sudo systemctl status dnsmasq检查服务运行状态,可执行sudo tcpdump -i eth0 port 67 or port 68抓包确认是否收到终端的DHCP请求
  • ping不通排查:执行iptables -L -n、iptables -t nat -L -n确认转发与NAT规则正常加载,检查终端防火墙是否禁ping

内容的提问来源于stack exchange,提问作者MarcomUR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:54:30