Ubuntu 16.04双网口PC实现任意网口同时访问双摄像头配置求助
解决Ubuntu双网口任意连接摄像头同时访问的问题
首先咱们先拆解下你之前三种配置失败的原因,这样你能明白为什么不行:
为什么之前的配置都失效?
- Config 1(双网口同IP):同一台主机的两个网络接口不能在同一个网段使用相同的IP地址,这会导致系统路由表混乱,数据包不知道该从哪个接口发送/接收,最终只能连通其中一个摄像头。
- Config 2(同网段不同IP):当两个接口在同一网段时,Linux默认会把整个网段的流量都路由到其中一个接口(通常是先启动的那个),所以插在另一个接口的摄像头根本收不到PC发送的数据包,自然访问失败。
- Config 3(不同网段IP):两个摄像头都在
169.254.146.x网段,而你其中一个网口在169.254.147.x,不在同一广播域,没有额外路由的话,这个网口根本无法和摄像头通信,只能访问插在同网段网口的那个设备。
最优解决方案:网桥(Bridge)配置
最适合你“任意连接网口都能同时访问两台摄像头”需求的方案是把两个物理网口桥接成一个虚拟网桥,这样不管摄像头插哪个物理口,都相当于处于同一个局域网中,PC通过网桥就能同时访问两台设备。
具体操作步骤:
安装网桥工具:
sudo apt-get update && sudo apt-get install bridge-utils临时停止两个网口的网络服务:
sudo ifdown eth0 sudo ifdown eth1(如果你的网口名称不是
eth0/eth1,可以用ip link show命令查看实际名称)创建并配置网桥:
# 创建名为br0的网桥 sudo brctl addbr br0 # 将两个物理网口添加到网桥 sudo brctl addif br0 eth0 eth1 # 关闭生成树协议(小型局域网不需要) sudo brctl stp br0 off # 配置网桥IP(和摄像头同网段,比如169.254.146.100) sudo ifconfig br0 169.254.146.100 netmask 255.255.255.0 up配置永久生效(重启后不失效):
编辑/etc/network/interfaces文件,替换原有网口配置为以下内容:# 配置网桥br0 auto br0 iface br0 inet static address 169.254.146.100 netmask 255.255.255.0 bridge_ports eth0 eth1 bridge_stp off bridge_fd 0 bridge_maxwait 0 # 将物理网口设置为手动模式(由网桥管理) auto eth0 iface eth0 inet manual auto eth1 iface eth1 inet manual重启网络服务生效:
sudo systemctl restart networking
验证配置
完成后,你可以用ping命令测试两台摄像头:
ping 169.254.146.101 ping 169.254.146.102
不管摄像头插在哪个物理网口,都应该能正常连通。
备选方案:静态路由(适合不想用网桥的场景)
如果你不想用网桥,也可以给两个网口配置同网段不同IP,然后添加静态路由指定每个摄像头的流量走对应网口:
- 配置网口IP:
sudo ifconfig eth0 169.254.146.99 netmask 255.255.255.0 up sudo ifconfig eth1 169.254.146.100 netmask 255.255.255.0 up - 添加静态路由:
但这个方案的缺点是:如果摄像头插的网口换了,路由就失效了,需要手动修改,不如网桥灵活。# 访问Camera1走eth0 sudo ip route add 169.254.146.101/32 dev eth0 # 访问Camera2走eth1 sudo ip route add 169.254.146.102/32 dev eth1
内容的提问来源于stack exchange,提问作者Caetano Plentz Wecker
相关产品推荐
相关产品推荐

