树莓派配置桥接网络,热点接入 ETH0,支持 SADP 扫描

在手机端安装海康客户端「易调试」,通过树莓派释放的热点 WiFi 接入,能直接访问树莓派 ETH0 网络,并支持 SADP 协议扫描 ETH0 网络里的海康设备。

功能目标

  • 手机连树莓派 WiFi 热点
  • 能访问 ETH0 网段内的海康设备
  • SADP 组播扫描正常工作

预研

SADP 协议

海康威视 SADP(Search Active Device Protocol)用于搜索和管理网络摄像头等设备。主要功能:

  1. 设备搜索:自动扫描网络中的海康设备
  2. 设备管理:查看状态、IP、序列号等
  3. 批量配置:修改 IP、重置密码等
  4. 固件升级
  5. 图形界面操作

技术上,SADP 工作在二层网络,基于 UDP 实现。即使手机没有配置或配置错误 IP,也能扫描发现子网内的设备。

NAT 方案为什么不行

参考 这篇 CSDN 文章 可以配置热点接入,通过 iptables 让 ETH0 作为 NAT 出口:

1
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

手机加入热点后可以访问 ETH0 内的 IP 设备,但 SADP 扫描不出设备

在树莓派 ETH0 用 tcpdump 抓包、Wireshark 分析后发现:手机上的易调试向 239.255.255.250:37020 发送基于 ONVIF 的 UDP 组播,海康设备收到后会回复组播。当前 NAT 配置下,ETH0 能收到手机的组播,但设备回复的组播手机收不到——NAT 无法把组播消息转发回手机。

试了几次基本走不通,只能改用桥接

详细步骤

操作系统

Raspberry Pi OS Lite 12 (bookworm)。

准备工作:更换 APT 源

1
2
3
4
5
6
7
# /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm main contrib non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-updates main contrib non-free-firmware

# /etc/apt/sources.list.d/raspi.list
deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi bookworm main

安装软件

1
2
3
sudo apt install hostapd
sudo apt-get install bridge-utils
sudo apt install dnsmasq

网络配置

/etc/network/interfaces

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
source /etc/network/interfaces.d/*

auto eth0
iface eth0 inet manual

auto eth1
iface eth1 inet static
address 168.168.168.168
netmask 255.255.255.0

auto wlan0
iface wlan0 inet manual

auto br0
iface br0 inet static
address 172.28.28.28
netmask 255.255.255.0
gateway 172.28.28.1
bridge_ports eth0 wlan0
bridge_stp off
bridge_fd 0

配置 br0 后,eth0wlan0 均不再需要单独配置 IP,br0 上的 IP 在两个接口都可以被直接访问。

/etc/hostapd/hostapd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
country_code=CN
interface=wlan0
bridge=br0
driver=nl80211
ssid=free-wifi
wpa_passphrase=free_pwd_333
wpa_key_mgmt=WPA-PSK
channel=8
auth_algs=1
wpa=2
ieee80211n=1
hw_mode=g
rsn_pairwise=CCMP TKIP
wpa_pairwise=TKIP CCMP
max_num_sta=20

关键配置interface 不应该是 br0(设成 br0 会报错),应指向释放热点的接口 wlan0,同时设置 bridge=br0hw_mode 最好设成 g;设成 a 需要硬件支持。

到这一步,连入 WiFi 后给手机配静态 IP 就可以访问 ETH0 网络。如果 ETH0 里有 DHCP 手机会自动获取;大部分海康设备网络里没有 DHCP,可以增加 DHCP 服务。

/etc/dnsmasq.conf

1
2
3
interface=br0
dhcp-range=172.28.28.100,172.28.28.200,255.255.255.0,24h
address=/abcd.com/172.28.28.28

interface 一定要指向 br0——可以理解为 eth0wlan0 都已经被 br0 替代,dnsmasq 可以在两边网络同时提供 DHCP。

启动

1
2
3
4
sudo systemctl enable dnsmasq
sudo systemctl enable hostapd
sudo systemctl start dnsmasq
sudo systemctl start hostapd

最好直接 reboot 一下。

验证

手机连入 WiFi free-wifi,密码 free_pwd_333,应自动获取 172.28.28.x 网段 IP。虽然不能访问外网,但用海康 SADP 扫描软件就可以扫描到局域网内部的设备了。

后续工作

如果实施人员用手机接入后需要再配置,可以通过 abcd.com 域名访问预设的配置页面,输入真实 IP 范围后,调用代码改动 interfacesdnsmasq.conf,重启服务即可。

备注

如果功能异常,除了检查服务日志,还可以看 IP 转发设置。编辑 /etc/sysctl.conf,按需取消或增加注释 net.ipv4.ip_forward=1,然后 sudo sysctl -p 应用。

Notice: 正常情况下,这里会有一个基于utteranc.es的留言系统,如果看不到,可能要想想办法才能看到。

Powered by Hexo and Hexo-theme-hiker

Copyright © 2012 - 2026 tiaobug.com All Rights Reserved.

鲁ICP备2024124237号-1