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

Ubuntu 主机通过 `enp4s0` 向开发板共享网络的完整步骤

✅ 步骤总览:Ubuntu 主机通过 enp4s0 向开发板共享 wlp5s0 网络

1️⃣ 为 enp4s0 设置静态 IP

sudo ip addr flush dev enp4s0  # 清除旧配置(可选)
sudo ip addr add 192.168.100.1/24 dev enp4s0
sudo ip link set enp4s0 up

2️⃣ 安装并配置 dnsmasq(提供 DHCP 给开发板)

sudo apt install dnsmasq

编辑配置文件:

sudo nano /etc/dnsmasq.d/enp4s0.conf

内容如下:

port=0
interface=enp4s0
dhcp-range=192.168.100.10,192.168.100.100,12h

然后重启服务:

sudo systemctl restart dnsmasq

3️⃣ 启用 IP 转发

编辑 /etc/sysctl.conf

sudo nano /etc/sysctl.conf

取消注释或添加:

net.ipv4.ip_forward=1

使其生效:

sudo sysctl -p

4️⃣ 设置 NAT 转发(iptables)

sudo iptables -t nat -A POSTROUTING -o wlp5s0 -j MASQUERADE

可选:让其开机自动生效(推荐):

sudo apt install iptables-persistent
sudo netfilter-persistent save

5️⃣ 连接开发板并测试

  • 将开发板连接到主机 enp4s0 网口
  • 开发板配置为 DHCP 自动获取 IP
  • 正常的话开发板将获得 192.168.100.x 的 IP,并可以访问外网(如 ping 8.8.8.8

✅ 验证命令参考

  • 检查 dnsmasq 是否生效:
journalctl -u dnsmasq
  • 查看 IP 分配情况:
cat /var/lib/misc/dnsmasq.leases
  • 在主机查看是否从开发板收到了数据包:
sudo tcpdump -i enp4s0

很好,dnsmasq 已经成功运行并开始提供 DHCP 服务,日志中明确说明:

dnsmasq[20062]: started, version 2.90 DNS disabled
dnsmasq-dhcp[20062]: DHCP, IP range 192.168.100.10 -- 192.168.100.100, lease time 12h

这意味着你的开发板现在可以通过 DHCP 从主机的 enp4s0 网口获取 IP 地址。


✅ 接下来请验证以下内容:

1️⃣ 检查主机有线网卡(enp4s0)状态

确认 IP 设置是否正确:

ip addr show enp4s0

应该包含:

inet 192.168.100.1/24

如果没有,请执行:

sudo ip addr add 192.168.100.1/24 dev enp4s0
sudo ip link set enp4s0 up

2️⃣ 将开发板连接到 enp4s0(通过网线)

  • 确保开发板设置为自动获取 IP(DHCP 模式)
  • 启动开发板
  • 使用 ping 或串口查看其分配的 IP,或在主机上用以下命令查看分配情况:
cat /var/lib/misc/dnsmasq.leases

你应该看到类似这样的内容:

1719593089 02:42:ac:11:00:02 192.168.100.20 * *

3️⃣ 测试网络连通性

在开发板上执行:

ping 192.168.100.1        # 主机 enp4s0
ping 8.8.8.8              # 外网(测试 NAT)
ping google.com           # 测试 DNS 是否正常

🔁 如果开发板能访问主机但无法上网,请确保主机设置了 NAT:

重新运行(如果未做或未保存):

sudo iptables -t nat -A POSTROUTING -o wlp5s0 -j MASQUERADE

并确保 IP 转发开启:

cat /proc/sys/net/ipv4/ip_forward

如果输出是 0

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

🧰 如需开机自动生效

可以使用 iptables-persistent

sudo apt install iptables-persistent
sudo netfilter-persistent save

现在的 Ubuntu 主机(link-PC)有两个网络:

  • wlp5s0:连接到主路由器(192.168.1.x 网段)
  • enp4s0:连接开发板,私有局域网(192.168.100.x)

如何让 192.168.1.x 网络中的其他设备(如你的笔记本或路由器)访问开发板(192.168.100.x)?


🔧 问题本质:你当前设置的是 NAT(地址转换),默认阻止反向访问

你的主机 link-PC 正在做 NAT(伪装成 wlp5s0 的 IP 上网),但 NAT 默认不允许 从外网访问内网设备(比如开发板),所以 192.168.1.x 上的设备无法直接访问开发板的 IP(如 192.168.100.10)。


✅ 有效解决方案:使用主机端口转发(DNAT)

你可以让主机将某个端口转发到开发板,例如把主机的 192.168.1.137:2222 转发给开发板的 192.168.100.10:22(SSH):

假设:

  • 开发板的 IP:192.168.100.10(你可以通过 dnsmasq.leases 查看)
  • 你希望通过主机的 192.168.1.137:2222 访问开发板的 22 端口(SSH)

🔁 设置 DNAT 转发规则

# 假设开发板 IP 是 192.168.100.10
sudo iptables -t nat -A PREROUTING -i wlp5s0 -p tcp --dport 2222 -j DNAT --to-destination 192.168.100.10:22# 确保允许转发连接
sudo iptables -A FORWARD -p tcp -d 192.168.100.10 --dport 22 -j ACCEPT

🔄 保存规则(可选但推荐)

sudo apt install iptables-persistent
sudo netfilter-persistent save

🧪 现在测试访问(从其他 192.168.1.x 的设备)

ssh user@192.168.1.137 -p 2222

这实际上就会通过主机中转,访问开发板的 192.168.100.10:22


🧠 补充说明

如果你希望可以访问开发板的 网页服务(如 80 端口)或其他服务,也可以添加类似规则:

# 访问开发板的 HTTP(80)
sudo iptables -t nat -A PREROUTING -i wlp5s0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.100.10:80
sudo iptables -A FORWARD -p tcp -d 192.168.100.10 --dport 80 -j ACCEPT

然后你就可以通过 http://192.168.1.137:8080 访问开发板的 HTTP 服务。


相关文章:

  • Swift × Android:官方工作组成立意味着什么?
  • n8n和dify有什么区别
  • 设计模式精讲 Day 17:中介者模式(Mediator Pattern)
  • 【Actix Web 精要】Rust Web 服务开发核心技术与实战指南
  • 权限提升-工作流
  • 压力测试(GUI界面压测,非GUI压测)
  • WPS之PPT镂空效果实现
  • 车载诊断架构 --- 非易失性存储器(NVM)相关设置项
  • 阿里云-arms监控
  • Unity2D 街机风太空射击游戏 学习记录 #16 道具父类提取 旋涡道具
  • CompletableFuture 深度解析
  • 阿里 Qwen3 模型更新,吉卜力风格get
  • 开疆智能CCLinkIE转ModbusTCP网关连接傲博机器人配置案例
  • 领域驱动设计(DDD)【23】之泛化:从概念到实践
  • 永磁同步电机无速度算法--基于增强型正交PLL的滑模观测器
  • MySQL之MVCC实现原理深度解析
  • 印度和澳洲的地理因素
  • 用鸿蒙打造真正的跨设备数据库:从零实现分布式存储
  • linux安装vscode
  • 求区间最大值